Podstawowe funkcje   

MPI_Cart_coords

Zwraca współrzędne danego procesu na siatce, gdzie comm - wskaźnik do komunikatora z topologią kartezjańską, rank - identyfikator procesu w grupie powiązanej z komunikatorem comm, maxdims - długość wektora coord, coords - kartezjańskie współrzędne procesu o numerze rank
Funkcją odwrotną jest MPI_Cart_rank;

MPI_Cart_coords (comm,rank,maxdims,*coords[])
MPI_CART_COORDS (comm,rank,maxdims,coords(),ierr)

MPI_Cart_get

Zwraca informacje o topologii grafu skojarzonej z komunikatorem coom, gdzie maxdims - długość wektorów dims, periods oraz coords, dims liczba procesów na każdej ze współrzędnych, periods - okresowość (TRUE/FALSE) dla każdego z wymiarów, coords - współrzędne procesu wywołującego funkcje na siatce.

MPI_Cart_get (comm,maxdims,*dims,*periods,*coords[])
MPI_CART_GET (comm,maxdims,dims,periods,coords(),ierr)

MPI_Cart_map

Mapuje procesy w topologii kartezjańskiej.

MPI_Cart_map (comm_old,ndims,*dims[],*periods[],*newrank)
MPI_CART_MAP (comm_old,ndims,dims(),periods(),newrank,ierr)

MPI_Cart_rank

Zwraca identyfikator procesu znajdującego się w danym węźle siatki, gdzie coom wskaźnik do komunikatora z topologią kartezjańską, coords - współrzędne pewnego procesu na siatce, rank - identyfikator wyspecyfikowanego procesu.

MPI_Cart_rank (comm,*coords[],*rank)
MPI_CART_RANK (comm,coords(),rank,ierr)

MPI_Cart_shift

Za pomocą tej funkcji możemy dokonać cyklicznego przesunięcia danych w topologii kartezjańskiej. Wywołujące procesy podają kierunek przesunięcia (drirection) oraz skok (displ).

MPI_Cart_shift (comm,direction,displ,*source,*dest)
MPI_CART_SHIFT (comm,direction,displ,source,dest,ierr)

MPI_Cart_sub

Funkcja dzieli strukturę kartezjańską związaną z comm na podstruktury w wymiarach określonych przez remain_dims zwracając komunikator podstruktury w comm_new. Zwracany komunikator ma odpowiednią wartość dla każdego procesu w zależności od tego, do której podstruktury został dany proces przypisany.

MPI_Cart_sub (comm,*remain_dims[],*comm_new)
MPI_CART_SUB (comm,remain_dims(),comm_new,ierr)

MPI_Cartdim_get

Zwraca informacje o liczbie wymiarów topologii (ndims) skojarzonej z komunikatorem comm.

MPI_Cartdim_get (comm,*ndims)
MPI_CARTDIM_GET (comm,ndims,ierr)

MPI_Graph_get

Zwraca informacje o topologii grafu skojarzonej z komunikatorem coom, gdzie maxindex - długość tablicy index, maxedges - gługość tablicy edges, index -tablica zawierająca stopnie węzłów grafu, edges - tablica krawędzi.

MPI_Graph_get (comm,maxindex,maxedges,*index[],*edges[])
MPI_GRAPH_GET (comm,maxindex,maxedges,index(),edges(),ierr)

MPI_Graph_map

Mapuje procesy w topologii grafowej.

MPI_Graph_map (comm_old,nnodes,*index[],*edges[],*newrank)
MPI_GRAPH_MAP (comm_old,nnodes,index(),edges(),newrank,ierr)

MPI_Graph_neighbors

Funkcja służy do pobierania ilości i listy sąsiadów procesu o numerze rank, gdzie coom wskaźnik do komunikatora z topologią grafową, maxneighbors - wielkość tabeli sąsiadów, neighbors - numery procesów posiadających połączenie z procesem o numerze rank.

MPI_Graph_neighbors (comm,rank,maxneighbors,*neighbors[])
MPI_GRAPH_NEIGHBORS (comm,rank,maxneighbors,neighbors(),ierr)

MPI_Graphdims_get

Zwraca informacje o topologii grafu skojarzonej z komunikatorem comm, gdzie nnodes - liczba węzłów w grafie, nedges - liczba krawędzi w grafie.

MPI_Graphdims_get (comm,*nnodes,*nedges)
MPI_GRAPHDIMS_GET (comm,nnodes,nedges,ierr)

MPI_Topo_test

Aby zbadać rodzaj topologii, w jakiej rozmieszczone są procesy używamy tej funkcji. 

Funkcja zwraca następujące wartości:

MPI_Topo_test (comm,*top_type)
MPI_TOPO_TEST (comm,top_type,ierr)


Przykład: Wirtualna topologia