Tworzenie grup

 

    Konstruktory  grup używane są do wydzielania i łączenia nowych grup z już istniejących. W ten sposób tworzone grupy mogą istnieć na różnych procesach; proces może zdefiniować grupę, do której sam nie należy. Definicje grup są używane przy tworzeniu komunikatorów. MPI udostępnia mechanizmy tworzenia grup jedynie z grup już istniejących. Grupą, na podstawie której definiowane są wszystkie pozostałe grupy jest grupą powiązaną z komunikatorem MPI_Comm_world, dostępną przy użyciu funkcji MPI_Comm_group.

 

MPI_Comm_group

Określa grupę skojarzoną z danym komunikatorem.

MPI_Comm_group (comm,*group)
MPI_COMM_GROUP (comm,group,ierr)

 

MPI_Group_union

Funkcja ta pozwala na utworzenie grupy, której zbiór procesów jest sumą teoriomnogościową zbiorów procesów grup składowych. 

MPI_Group_union (group1,group2,*newgroup)
MPI_GROUP_UNION (group1,group2,newgroup,ierr)

 

MPI_Group_intersection

Pozwala na utworzenie grupy, której zbiór procesów jest iloczynem teoriomnogościowym zbiorów procesów grup składowych. Procesy uporządkowane są w grupie wynikowej jak w grupie pierwszej.

MPI_Group_intersection (group1,group2,*newgroup)
MPI_GROUP_INTERSECTION (group1,group2,newgroup,ierr)

MPI_Group_difference

Funkcja pozwala na utworzenie grupy, której zbiór procesów zawiera procesy grupy pierwszej nie należące do grupy drugiej. Procesy uporządkowane są w grupie wynikowej jak w grupie pierwszej

MPI_Group_difference (group1,group2,*newgroup)
MPI_GROUP_DIFFERENCE (group1,group2,newgroup,ierr)

MPI_Group_incl

Tworzy grupę zawierającą n procesów z grupy źródłowej o numerach ranks[0], ... , ranks[n-1]. Proces o numerze i w nowej grupie jest procesem o numerze ranks[i] w grupie starej. Funkcja ta w może być w szczególności użyta do zmiany kolejności procesów w grupie. 

MPI_Group_incl (group,n,*ranks,*newgroup)
MPI_GROUP_INCL (group,n,ranks,newgroup,ierr)

MPI_Group_excl

Tworzy grupę newgroup procesów na bazie grupy źródłowej, z której usuwa procesy o numerach wyspecyfikowanych w tablicy ranks. 

MPI_Group_excl (group,n,*ranks,*newgroup)
MPI_GROUP_EXCL (group,n,ranks,newgroup,ierr)

MPI_Group_free

Operacja zaznacza grupę jako przeznaczoną do zwolnienia. Wskaźnik na grupę jest ustawiany na MPI_Group_null. Wszystkie następujące operacje będą przebiegać normalnie. Pamięć zostanie zwolniona, kiedy liczba odwołań do grupy osiągnie 0. 

MPI_Group_free (group)
MPI_GROUP_FREE (group,ierr)

MPI_Group_size

Zwraca ilość procesów należących do grupy.

MPI_Group_size (group,*size)
MPI_GROUP_SIZE (group,size,ierr)

MPI_Group_rank

Zwraca numer procesu wywołującego funkcję w grupie group, bądź wartość MPI_UNDEFINED, jeśli proces nie jest członkiem grupy.

MPI_Group_rank (group,*rank)
MPI_GROUP_RANK (group,rank,ierr)

MPI_Group_compare

Porównuje grupy podane jako parametry pod względem należących do nich procesów oraz ich uporządkowania. Funkcja zwraca: 

MPI_Group_compare (group1,group2,*result)
MPI_GROUP_COMPARE (group1,group2,result,ierr)