funzione MPI_Comm_create
Estrae un sottoinsieme di processi allo scopo di separare il calcolo di multiple instruction multiple data (MIMD) in un comunicatore separato.
Sintassi
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
Parametri
Comm
Comunicatore di origine.utenti
Gruppo che definisce il subset richiesto dei processi nel comunicatore di origine.newcomm [out]
Al ritorno, contiene un handle per un nuovo comunicatore.
Valore restituito
Restituisce MPI_SUCCESS in caso di esito positivo. In caso contrario, il valore restituito è un codice di errore.
In Fortran il valore restituito viene archiviato nel parametro IERROR .
Fortran
MPI_COMM_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
Commenti
Il comunicatore creato da questa funzione può essere ulteriormente suddiviso in sottocomputazioni parallele usando la funzione MPI_Comm_create o altri costruttori di comunicatore. La funzione MPI_Comm_split è una funzione più generale per creare oggetti MPI_Comm .
Se il parametro comm fa riferimento a un intracomnicator, questa funzione restituisce un nuovo comunicatore con un gruppo di comunicazione definito dal parametro group . Nessuna informazione memorizzata nella cache viene propagata dal comunicatore di origine al nuovo comunicatore. Ogni processo deve chiamare con un parametro di gruppo che è un sottogruppo del gruppo associato al comunicatore di origine. Un valore possibile è MPI_GROUP_EMPTY. I processi possono specificare valori diversi per il parametro group . Se un processo chiama con un gruppo non vuoto, tutti i processi in tale gruppo devono chiamare la funzione con gli stessi valori per il parametro di gruppo , ovvero gli stessi membri nello stesso ordine. In caso contrario, la funzione restituisce un errore. Questo risultato implica che il set di gruppi specificati tra i processi deve essere disgiunto. Se il processo chiamante è un membro del gruppo specificato nel parametro group , il parametro newcomm rappresenta un comunicatore con il gruppo specificato come gruppo associato. Se un processo specifica un gruppo a cui non appartiene, ad esempio MPI_GROUP_EMPTY, il nuovo parametrocomm restituisce MPI_COMM_NULL.
L'interfaccia supporta il meccanismo originale da MPI-1.1, che richiede lo stesso gruppo in tutti i processi di comm. È stato esteso in MPI-2.2 per consentire l'uso di sottogruppi disgiunti per consentire alle implementazioni di eliminare le comunicazioni non necessarie che la funzione MPI_Comm_split avrebbe incorrere quando l'utente conosce già l'appartenenza dei sottogruppi disgiunti.
La funzione MPI_Comm_create è collettiva e deve essere chiamata da tutti i processi nel gruppo del comunicatore di origine. Il requisito che l'intero gruppo partecipa alla chiamata proviene dai problemi seguenti:
- Consente all'implementazione di eseguire il layer della MPI_Comm_create funzione sopra le normali comunicazioni collettive.
- Offre maggiore sicurezza, in particolare nel caso in cui vengano utilizzati gruppi parzialmente sovrapposti per creare nuovi comunicatori.
- Consente alle implementazioni di evitare alcune comunicazioni correlate alla creazione del contesto.
Se il parametro comm fa riferimento a un intercommunicator, il comunicatore creato è anche un intercommunicator in cui il gruppo locale è costituito solo da tali processi specificati nel parametro group . Specificare solo i processi nel gruppo locale dell'intercommissione di input che devono far parte del nuovo comunicatore nel parametro group . Tutti i processi nello stesso gruppo locale del comunicatore devono specificare lo stesso valore per il parametro di gruppo , ovvero gli stessi membri nello stesso ordine. Se uno dei due gruppi non specifica almeno un processo nel gruppo locale dell'intercommunicator o se il processo chiamante non è incluso nel gruppo, viene restituito un errore.
Requisiti
Prodotto |
Pacchetto ridistribuibile DI HPC Pack 2012 MS-MPI, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package o utilità client HPC Pack 2008 |
Intestazione |
Mpi.h; Mpif.h |
Libreria |
Msmpi.lib |
DLL |
Msmpi.dll |