2012-08-30 4 views
5

Ich bin auf das Fehlen dieser Funktion in MPI neugierig:MPI nicht blockierende Sende/recv

MPI_Isendrecv(...); 

das heißt eine nicht-blockierende senden und empfangen, kann mir jemand sagen, die Gründe für seine Auslassung?

+0

Betrachtet man den Entwurf der ursprünglichen MPI-Spezifikation auf netlib.org, scheint es, dass die Funktion enthalten war, aber dann in der endgültigen MPI 1.0-Spezifikation fallen gelassen wurde. Jetzt bin ich auch neugierig, was der Grund war. –

Antwort

5

Meine Annahme ist, dass MPI_SENDRECV als eine Bequemlichkeit für Programmierer, die Semantik Blockierung verwenden möchten, aber eine Schichtoperation implementieren müssen. Wenn Sie mit nicht blockierender Semantik vertraut sind, sollten Sie einfach die vorhandenen MPI_ISEND und MPI_IRECV verwenden.

Interessanterweise wird MPI-3 nicht-blockierende Kollektive hinzufügen (z.B. MPI_IBARRIER), aber immer noch keine MPI_ISENDRECV (siehe http://meetings.mpi-forum.org/draft_standard/mpi3.0_draft_2.pdf).

Verwandte Themen