Udostępnij za pomocą


MPI_Comm_create, funkcja

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

Zobacz też

MPI Communicator Functions

MPI_Comm_split