2016-05-06 11 views
3

Ich habe ein MPI-Programm, das seine Prozessoren überzeichnet/übergibt. Das heißt: Es gibt viel mehr Prozesse als Prozessoren.Verhindern MPI von besetzt Schleife

Nur wenige dieser Prozesse sind jedoch zu einem bestimmten Zeitpunkt aktiv, daher sollte es keine Konkurrenz für Rechenressourcen geben.

Aber ähnlich wie die Herde der Möwen aus Findet Nemo, wenn diese Prozesse auf Kommunikation warten, sind sie alle busy-looping und fragen: "Mine? Mine? Mine?"

                                                                            Nemo Seagulls

Ich verwende sowohl Intel MPI und OpenMPI (für Maschinen). Wie kann ich sie überzeugen beide nicht zu beschäftigt Schleife?

Meine schnelle und schmutzige Lösung war MPI_Iprobe in einer Schleife mit einem Schlafbefehl zu verwenden (siehe here).

+0

Führen Sie alle Prozesse auf einem einzelnen Host aus? –

+0

Nein, sie können auf mehrere Hosts verteilt sein. – Richard

+0

Welche Art von Netzwerk verbindet die Hosts? –

Antwort

1

Es ist eine Weile her, seit dies gefragt wurde, aber diese post kann die Antwort haben, die Sie suchen.

Wenn Ihre MPI-Prozesse auf MPI-Barrieren warten, können Sie den I_MPI_WAIT_MODE = 1 setzen, um die Busy-Schleife in INTELs MPI zu verhindern. für OpenMPI, siehe linked post.