Topologia grafowa  

 

MPI_Graph_create

 

Funkcja służy do uporządkowania procesów według topologii grafowej, gdzie comm_old - uchwyt do komunikatora bez zdefiniowanej topologii, nnodes liczba węzłów w grafie, index - tablica zawierająca stopnie węzłów w grafie, edges tablica zawierająca informacje o połączeniach, reorder flaga zezwolenia na zmianę kolejności procesów, comm_graph uchwyt do komunikatora z topologią grafową.

MPI_Graph_create (comm_old,nnodes,*index[],*edges[],
...... reorder,*comm_graph)
MPI_GRAPH_CREATE (comm_old,nnodes,index(),edges(),
...... reorder,comm_graph,ierr)

Jeśli liczba nnodes oznaczająca ilość węzłów w grafie jest mniejsza od liczby procesów w komunikatorze comm, funkcja zwraca niektórym procesom MPI_COMM_NULL. Gdy procesów jest mniej niż węzłów funkcja zwraca błąd. 
    Struktura grafu definiowana jest przez trzy zmienne: nnodes, index oraz edges. Parametr nnodes to liczba węzłów w grafie. Węzły są ponumerowane od 0 do nnodes-1. I-ty element tablicy index zawiera liczbę sąsiadów i-tego węzła (stopień węzła). Lista sąsiadów węzłów o numerach 0, 1, ..., nnodes-1 są zamieszczone kolejno w tablicy edges. 

Przykład. 
Załóżmy, że mamy cztery procesy o numerach 0, 1, 2, 3, których powiązania opisuje poniższa tablica:

Numer procesu Numery sąsiadów procesu
0 1, 3
1 0
2 3
3 0, 2

W tych warunkach argumenty wejściowe funkcji MPI_GRAPH_CREATE będą miały postać: