MPI_Comm_create functie
Extraheert een subset een groep processen voor het scheiden van miMD-berekeningen (Multiple Instruction Multiple Data) in een afzonderlijke communicator.
Syntaxis
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
Parameters
Comm
De broncommunicator.groep
De groep die de aangevraagde subset van de processen in de broncommunicator definieert.newcomm [out]
Bij terugkomst bevat een greep naar een nieuwe communicator.
Retourwaarde
Retourneert MPI_SUCCESS bij succes. Anders is de retourwaarde een foutcode.
In Fortran wordt de retourwaarde opgeslagen in de parameter IERROR .
Fortran
MPI_COMM_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
Opmerkingen
De communicator die met deze functie wordt gemaakt, kan verder worden onderverdeeld in parallelle subcomputaties met behulp van de functie MPI_Comm_create of andere communicator-constructors. De functie MPI_Comm_split is een meer algemene functie voor het maken van MPI_Comm objecten.
Als de comm-parameter verwijst naar een intracommunicator, retourneert deze functie een nieuwe communicator met een communicatiegroep zoals gedefinieerd door de groepsparameter . Er worden geen gegevens in de cache doorgegeven van de broncommunicator naar de nieuwe communicator. Elk proces moet worden aangeroepen met een groepsparameter die een subgroep is van de groep die is gekoppeld aan de broncommunicator. Een mogelijke waarde is MPI_GROUP_EMPTY. De processen kunnen verschillende waarden opgeven voor de groepsparameter . Als een proces aanroept met een niet-lege groep, moeten alle processen in die groep de functie aanroepen met dezelfde waarden voor de groepsparameter , dat wil gezegd dezelfde leden in dezelfde volgorde. Anders retourneert de functie een fout. Dit resultaat impliceert dat de set groepen die in de processen zijn opgegeven, niet aaneengesloten moet zijn. Als het aanroepende proces lid is van de groep die is opgegeven in de groepsparameter , vertegenwoordigt de parameter newcomm een communicator met de opgegeven groep als gekoppelde groep. Als een proces een groep opgeeft waartoe deze niet behoort, bijvoorbeeld MPI_GROUP_EMPTY, retourneert de parameter newcommMPI_COMM_NULL.
De interface ondersteunt het oorspronkelijke mechanisme van MPI-1.1, waarvoor dezelfde groep in alle comm-processen vereist is. Het is uitgebreid in MPI-2.2 om het gebruik van niet-aaneengesloten subgroepen mogelijk te maken om implementaties in te schakelen om onnodige communicatie te voorkomen die de MPI_Comm_split-functie zou hebben wanneer de gebruiker het lidmaatschap van de niet-aaneengesloten subgroepen al kent.
De functie MPI_Comm_create is collectief en moet worden aangeroepen door alle processen in de groep van de broncommunicator. De vereiste dat de hele groep deelneemt aan de oproep, komt voort uit de volgende problemen:
- Hiermee kan de implementatie de functie MPI_Comm_create boven op normale collectieve communicatie.
- Het biedt extra veiligheid, met name in het geval dat gedeeltelijk overlappende groepen worden gebruikt om nieuwe communicatoren te creëren.
- Hiermee kunnen implementaties een deel van de communicatie vermijden die betrekking heeft op het maken van context.
Als de comm-parameter verwijst naar een intercommunicator, is de gemaakte communicator ook een intercommunicator waarbij de lokale groep alleen bestaat uit de processen die zijn opgegeven in de groepsparameter . Geef alleen de processen op in de lokale groep van de invoerintercommunicator die deel moeten uitmaken van de nieuwe communicator in de groepsparameter . Alle processen in dezelfde lokale groep van de communicator moeten dezelfde waarde opgeven voor de groepsparameter , dat wil gezegd dezelfde leden in dezelfde volgorde. Als een van de groepen niet ten minste één proces in de lokale groep van de intercommunicator opgeeft, of als het aanroepende proces niet is opgenomen in de groep, wordt er een fout geretourneerd.
Vereisten
Product |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package of HPC Pack 2008 Client Utilities |
Header |
Mpi.h; Mpif.h |
Bibliotheek |
Msmpi.lib |
DLL |
Msmpi.dll |