MPI_Comm_split, funkcja
Partycjonuje grupę, która jest skojarzona z określonym komunikatorem w określonej liczbie rozłącznych podgrup.
Składnia
int MPIAPI MPI_Comm_split(
MPI_Comm comm,
int color,
int key,
_Out_ MPI_Comm *newcomm
);
Parametry
Comm
Komunikator rozstał się.Kolor
Nowy komunikator, do którego ma zostać przypisany proces wywoływania. Wartość koloru musi być nie ujemna.Jeśli proces określa wartość koloruMPI_UNDEFINED, funkcja zwraca MPI_COMM_NULL w parametrze newcomm do procesu wywołującego.
Klucz
Względna ranga procesu wywoływania w grupie nowego komunikatora. Aby uzyskać szczegółowe informacje na temat używania parametrów klucza i koloru , zobacz Uwagi.newcomm [out]
Po powrocie zawiera uchwyt do nowego komunikatora.
Wartość zwracana
Zwraca MPI_SUCCESS po powodzeniu. W przeciwnym razie zwracana wartość jest kodem błędu.
W fortran wartość zwracana jest przechowywana w parametrze IERROR .
Fortran
MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR
Uwagi
Jest to funkcja zbiorcza, ale każdy proces może określać różne wartości parametrów koloru i klucza .
Jest to niezwykle zaawansowany mechanizm dzielenia pojedynczej komunikującej się grupy procesów na dowolną liczbę podgrup. Liczba podgrup jest określana przez liczbę kolorów określonych we wszystkich procesach. Wynikowe komunikatory nie nakładają się. Rozdzielanie komunikatora w ten sposób jest przydatne do definiowania hierarchii obliczeń, takich jak wielosłonowa lub liniowa algebra.
Każda podgrupa zawiera wszystkie procesy, które określiły tę samą wartość parametru koloru . W każdej podgrupie procesy są klasyfikowane w kolejności zdefiniowanej przez wartość parametru klucza , z powiązaniami zerwanymi zgodnie z ich rangą w starej grupie.
W przypadku komunikatora intracommunicator wywołanie jest MPI_COMM_CREATE(comm, group, new-comm)
równoważne wywołaniu MPI_COMM_SPLIT(comm, color, key, newcomm)
do , gdzie procesy, które są członkami grupy, określają liczbę grup, na podstawie unikatowej liczby wszystkich rozłącznych grup, dla parametru koloru i ich rangi w grupie dla parametru klucza . Wszystkie procesy, które nie są członkami grupy, określają MPI_UNDEFINEDparametru koloru .
W przypadku każdego koloru wartości klucza nie muszą być unikatowe. Funkcja MPI_Comm_split sortuje procesy w kolejności zgodnie z wartością parametru klucza i sortuje powiązania według ich względnej rangi w grupie źródłowej. Jeśli ta sama wartość jest określona dla wszystkich kluczowych parametrów, wszystkie procesy w danym kolorze mają taką samą względną kolejność rangi, jaką mają w grupie nadrzędnej.
W przypadku wewnątrzpolenicatorów funkcje MPI_Comm_split i MPI_Comm_create zapewniają podobną możliwość dzielenia komunikującej się grupy na rozłączne podgrupy.
Funkcja MPI_Comm_split jest używana, gdy niektóre procesy nie mają pełnych informacji innych członków w swojej grupie, ale wszystkie procesy mają kolor grupy, do której należą. W takim przypadku implementacja mpI odnajduje innych członków grupy za pośrednictwem komunikacji.
Funkcja MPI_Comm_create jest używana, gdy wszystkie procesy mają pełne informacje o członkach grupy. W takim przypadku implementacja mpI może uniknąć dodatkowej komunikacji wymaganej do odnajdywania członkostwa w grupie.
Komunikatory utworzone przez MPI_Comm_split nie mogą się nakładać. Możesz wywołać funkcję MPI_Comm_split wiele razy, aby przezwyciężyć to ograniczenie. W ten sposób można utworzyć wiele nakładających się struktur komunikacyjnych. Zachęca się do kreatywnego używania parametrów kolorów i kluczowych w takich operacjach dzielenia.
Wynikiem funkcji MPI_Comm_split w interpolenicy jest to, że te procesy po lewej stronie z tym samym kolorem co te procesy po prawej stronie łączą się w celu utworzenia nowego interpolenika. Parametr klucza definiuje względną rangę procesów po każdej stronie interpolenicy. Nowy komunikator z uchwytem MPI_COMM_NULL jest zwracany do tych procesów, które określają MPI_UNDEFINED jako ich kolor, lub określ kolor określony tylko po jednej stronie interpolenicy.
Wymagania
Produkt |
Pakiet redystrybucyjny HPC Pack 2012 MS-MPI, pakiet redystrybucyjny HPC Pack 2008 R2 MS-MPI, pakiet redystrybucyjny HPC Pack 2008 MS-MPI lub narzędzia klienckie HPC Pack 2008 |
Nagłówek |
Mpi.h; Mpif.h |
Biblioteka |
Msmpi.lib |
DLL |
Msmpi.dll |