Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyodrębnia podzbiór grupy procesów na potrzeby oddzielnego obliczenia wielu instrukcji wielu danych (MIMD) w osobnym komunikatorze.
Składnia
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
Parametry
Comm
Źródłowy komunikator.Grupa
Grupa, która definiuje żądany podzestaw procesów w źródłowym komunikatorze.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_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
Uwagi
Komunikator, który tworzy ta funkcja, można dodatkowo podzielić na równoległe podkompuktacje przy użyciu funkcji MPI_Comm_create lub innych konstruktorów komunikatora. Funkcja MPI_Comm_split jest bardziej ogólną funkcją do tworzenia obiektów MPI_Comm .
Jeśli parametr comm odwołuje się do wewnątrzkomunikatora, ta funkcja zwraca nowy komunikator z grupą komunikacji zdefiniowaną przez parametr grupy. Żadne buforowane informacje nie są propagowane ze źródłowego komunikatora do nowego komunikatora. Każdy proces musi wywołać parametr grupy , który jest podgrupą grupy skojarzonej z komunikatorem źródłowym. Możliwa wartość to MPI_GROUP_EMPTY. Procesy mogą określać różne wartości parametru grupy . Jeśli proces wywołuje niepustą grupę, wszystkie procesy w tej grupie muszą wywołać funkcję z tymi samymi wartościami parametru grupy , czyli tych samych elementów członkowskich w tej samej kolejności. W przeciwnym razie funkcja zwraca błąd. Ten wynik oznacza, że zestaw grup określonych w procesach musi być rozłączny. Jeśli proces wywoływania jest członkiem grupy określonej w parametrze grupy , nowy parametrcomm reprezentuje komunikator z określoną grupą jako skojarzona grupa. Jeśli proces określa grupę, do której nie należy, na przykład MPI_GROUP_EMPTY, parametr newcomm zwraca MPI_COMM_NULL.
Interfejs obsługuje oryginalny mechanizm z interfejsu MPI-1.1, który wymagał tej samej grupy we wszystkich procesach comm. Rozszerzono ją w programie MPI-2.2, aby umożliwić korzystanie z rozłącznych podgrup w celu umożliwienia implementacji wyeliminowania niepotrzebnej komunikacji, jaką naliczyłby funkcja MPI_Comm_split , gdy użytkownik zna już członkostwo rozłącznych podgrup.
Funkcja MPI_Comm_create jest zbiorcza i musi być wywoływana przez wszystkie procesy w grupie komunikatora źródłowego. Wymaganie, aby cała grupa brała udział w wywołaniu, wynika z następujących problemów:
- Umożliwia on implementację warstwy MPI_Comm_create funkcji na podstawie regularnej komunikacji zbiorowej.
- Zapewnia dodatkowe bezpieczeństwo, w szczególności w przypadku, gdy częściowo nakładające się grupy są używane do tworzenia nowych komunikatorów.
- Umożliwia implementacje w celu uniknięcia niektórych komunikatów związanych z tworzeniem kontekstu.
Jeśli parametr comm odwołuje się do intercommunicator, utworzony komunikator jest również interpolenicatorem, gdzie grupa lokalna składa się tylko z tych procesów, które są określone w parametrze grupy . Określ tylko te procesy w lokalnej grupie interpolenicatora wejściowego, które mają być częścią nowego komunikatora w parametrze grupy . Wszystkie procesy w tej samej lokalnej grupie komunikatora muszą określać tę samą wartość parametru grupy , czyli tych samych elementów członkowskich w tej samej kolejności. Jeśli któraś z grup nie określi co najmniej jednego procesu w lokalnej grupie intercommunicatora lub jeśli proces wywołujący nie jest uwzględniony w grupie, zwracany jest błąd.
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 |