Was bedeutet es, MPI für Shared Memory zu konfigurieren?

Ich habe ein bisschen forschungsbezogene Fragen.

Derzeit habe ich die Implementierung der auf MPI basierenden Strukturgerüst-Arbeit (speziell unter Verwendung von MPI) abgeschlossenopenmpi 6.3). Der Rahmen soll auf einer einzelnen Maschine verwendet werden. Jetzt vergleiche ich es mit anderen früheren Skeleton - Implementierungen (wieScandium, schnell fließend, ..)

Eine Sache, die mir aufgefallen ist, ist, dass die Leistung meiner Implementierung nicht so gut ist wie die der anderen Implementierungen. Ich denke, das liegt daran, dass meine Implementierung auf MPI basiert (also einer zweiseitigen Kommunikation, die die Übereinstimmung von Sende- und Empfangsoperation erfordert), während die anderen Implementierungen, mit denen ich vergleiche, auf gemeinsam genutztem Speicher basieren. (... aber ich habe immer noch keine gute Erklärung dafür, und das ist Teil meiner Frage)

Es gibt einige große Unterschiede bei der Fertigstellung der beiden Kategorien.

Heute werde ich auch hier in die Konfiguration von open-mpi für Shared Memory eingeführt =>openmpi-sm

und da kommt meine frage.

1 Was bedeutet es, MPI für Shared Memory zu konfigurieren? Ich meine, während MPI-Prozesse in ihrem eigenen virtuellen Speicher leben. Wie sieht die Flagge im folgenden Befehl wirklich aus? (Ich dachte, in MPI erfolgt jede Kommunikation durch explizites Weiterleiten einer Nachricht, kein Speicher wird zwischen Prozessen geteilt).

    shell$ mpirun --mca btl self,sm,tcp -np 16 ./a.out

2nd Warum ist die Leistung von MPI im Vergleich zu anderen für Shared Memory entwickelten Skeleton-Implementierungen so viel schlechter? Zumindest laufe ich es auch auf einem einzigen Multi-Core-Rechner. (Ich nehme an, es liegt daran, dass andere Implementierungen Thread-Parallel-Programmierung verwendet haben, aber ich habe keine überzeugende Erklärung dafür).

Jeder Vorschlag oder weitere Diskussion ist sehr willkommen.

Bitte lassen Sie mich wissen, wenn ich meine Frage weiter klären muss.

Vielen Dank für Ihre Zeit!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage