Funktionsübersicht
. .
Virtuelle Topologien
Hilfesystem für den Message Passing Interface Standard MPI
MPI_Cart_create
Erzeugt einen neuen Kommunikator mit Topologieinformation
(alle Arten kartesischer Topologien z.B. Gitter, Ring, Hypercube)
Syntax:
MPI_Cart_create( oldcomm, ndims, dims, periods, reorder, comm_cart )
Input Parameter:
oldcomm - Eingabekommunikator (handle)
ndims - Anzahl der Dimensionen der kartesischen Struktur (integer)
dims - Array der Größe ndims, welches die Anzahl der Prozesse in
jeder Dimension angibt (array of integer)
dims[n]= Anzahl der Prozesse in der Dimension n
periods - logisches Array der Größe ndims (array of integer)
periods[n]=true : Struktur ist in der Dimension n periodisch
periods[n]=false: Struktur ist in der Dimension n nicht periodisch
reorder - (boolean); gibt an, ob MPI die Ränge neu vergeben darf
(true) oder ob die Ordnung von oldcomm beizubehalten ist (false)
Output Parameter
comm_cart - neuer Kommunikator mit kartesischer Topologie (handle)
Anmerkung:
Enthält oldcomm mehr Prozesse als benötigt werden, erhalten
überzählige Prozesse in comm_cart den Wert MPI_COMM_NULL zurück, und sind
damit nicht im neuen Kommunikator.
Der Funktionsruf führt zu einem Fehler, wenn die Struktur mehr Prozesse
benötigt als in oldcomm enthalten sind.
Aufruf:
#include "mpi.h"
#define N 2
int ndims = N;
int dims[N];
int periods[N] = { false, false };
int reorder = true;
MPI_Comm oldcomm, comm_cart;
...
MPI_Comm_size( oldcomm, &numprocs);
MPI_Dims_create( numprocs, ndims, dims);
MPI_Cart_create( oldcomm, ndims, dims, periods, reorder, &comm_cart );
...
Beispiel