Domanda

Ho letto le definizioni di questi termini e la mia interpretazione è che esiste una relazione tra un gruppo e un comunicatore. Un gruppo è un insieme di processi che desiderano comunicare tra loro e un comunicatore è un'implementazione per un gruppo.

È corretto? Perché avere due termini diversi se è così?

È stato utile?

Soluzione

UN gruppo è un Set di identificatori di processo ordinati (MPI 2.2 Spec, sec 6.2.1). L'ordinamento è dato associando a ciascun identificatore di processo un unico rango Da 0 a Group.size - 1.

UN comunicatore incapsula tutte le comunicazioni tra un insieme di processi. Un intra-comunicatore è associato a un gruppo e contesti di comunicazione sia per la comunicazione point-to-point che collettiva e forse altre informazioni di contesto come topologie virtuali (Spec, 6.1.2). Un inter-comunicatore è associato a due gruppi non sovrapposti.

(Probabilmente molto libera) penso a un gruppo di un comunicatore come alla sua tavola dei simboli.

Un gruppo può contenere identificatori di processo da diversi comunicatori.

Infine, la costruzione e le operazioni sui gruppi sono locali al processo e non comportano la comunicazione di interprocess. Questo non è, in generale, vero per i comunicatori (per loro stessa natura).

Altri suggerimenti

Ci sono molte differenze tra comunicatori e gruppi, come ho scoperto dopo aver letto le specifiche MPI.

EDIT: i gruppi sono oggetti che rappresentano gruppi di processi.

Il comunicatore è un insieme di processi che possono comunicare tra loro e possono consistere in processi di un singolo gruppo o di più gruppi.

Quindi sono entità completamente diverse. Non dovrebbero essere confusi l'uno con l'altro.

Un comunicatore contiene gruppi mentre un gruppo è solo una raccolta di processi.

Se un comunicatore contiene solo un gruppo, si chiama intracommunicator (il comunicatore, MPI_COMM_World è uno di questi che si riferisce a un gruppo che include tutti i ranghi).

Se contiene due gruppi, viene chiamato in intercomunicatore (non ce ne sono creati per impostazione predefinita per te).

Date un'occhiata al https://computing.llnl.gov/tutorials/mpi_advanced/davidcronkslides.pdf dove dà un'ottima spiegazione pittorica di come un comunicatore sia un contenitore per uno o due gruppi.

Un gruppo in MPI corrisponde al concetto matematico "Set", che viene introdotto in MPI per facilitare l'organizzazione dei processi e creare nuove comunicazioni. Ad esempio, è possibile utilizzare le operazioni di unione e di intersezione su set per creare nuovi set in modo da poterli utilizzare per creare nuovi comunicatori.

Un gruppo non ha nulla a che fare con le comunicazioni sebbene un gruppo possa essere utilizzato per creare un comunicatore (un comunicatore è un gruppo più un contesto).

Un gruppo può anche essere utilizzato come ID nella distribuzione di attività/dati tra diversi processi. Ad esempio, possiamo verificare se un processo è in un gruppo per determinare se dovrebbe fare qualcosa.

UN comunicatore è un oggetto che descrive un gruppo di processi. In molte applicazioni tutti i processi funzionano insieme strettamente accoppiati e l'unico comunic di cui hai bisogno è MPI_COMM_WORLD.

gruppo descrivendo tutti i processi con cui inizia il tuo lavoro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top