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_IDENT - gdy obie grupy zawierają te same procesy
uporządkowane identycznie.
- MPI_SIMILAR - gdy zbiory procesów w obu grupach są
takie same, ale ich uporządkowanie inne
- MPI_UNEQUAL - zwraca w pozostałych przypadkach.
MPI_Group_compare (group1,group2,*result)
MPI_GROUP_COMPARE (group1,group2,result,ierr)