Funktionsübersicht
. .
Virtuelle Topologien
Hilfesystem für den Message Passing Interface Standard MPI
MPI_Cart_shift
Liefert für eine Datenverschiebung in einer kartesischen Topologie (z.B.
mittels MPI_Sendrecv) die Ränge der
Quell- und Zielprozesse
Syntax:
MPI_Cart_shift( comm, dir, disp, rank_source, rank_dest )
Input Parameter:
comm - Kommunikator mit kartesischer Struktur (handle)
dir - Dimension, in welcher Daten transportiert werden sollen
(integer)
disp - gibt an, wie weit verschoben werden soll (integer)
disp < 0 : abwärts verschieben; disp > 0 : aufwärts verschieben
Output Parameter:
rank_source - Rang (Identifikator) des Prozesses, von dem der rufende
Prozeß Daten empfangen soll - source-Argument für MPI_Sendreceive - (integer)
rank_dest Rang des Prozesses, an den der rufende Prozeß Daten senden soll -
dest-Argument für MPI_Sendrecv - (integer)
Anmerkung:
Ist die Struktur in der Dimension, in der verschoben wird, nichtperiodisch
(period[i]=false), so liefert MPI_Cart_shift für Quell- und Zielprozesse,
die außerhalb des Intervalls 0 bis n liegen, MPI_PROC_NULL
Aufruf:
msg wird in der ersten Dimension abwärts an den übernächsten Prozeß
weitergeschickt
#include "mpi.h"
MPI_Comm comm;
int dir=1;
int disp=-2;
int rank_source, rank_dest;
...
MPI_Cart_shift( comm, dir, disp, &rank_source, &rank_dest);
MPI_Sendrecv_replace( msg, 1, MPI_REAL, rank_dest, 0,
rank_source, 0, comm, &status);
...
Beispiel