Quellen zu MPI
-
Hallo,
ich suche ein Buch oder eine gute Quelle, die mir gute EInsichten in das MPI-Interface gibt.
Mich interessiert auch was "unter der Haube" passiert. Dinge wie Message Queues, Einflüsse der Verbindungsnetzwerke und welche Buffer wo genutzt werden , also im Grunde genommen eigentlich alles.Mir ist klar, dass es hier Unterschiede in den Implementierungen geben wird, aber es gibt ja bestimmt eine gemeinsame Basis.
Was mich auch interessiert sind "Pitfalls" bei der MPI-Programmierung, also wo kann ich etwas falsch oder ineffizient machen.
Weniger interessant sind die üblichen Einführungen.
-
Ich weiß es nicht, aber ich würde nicht davon ausgehen, dass es ein derartiges Buch gibt. Das "lohnt" sich irgendwie nicht. Es gibt sehr viele Implementierungen, warum sollte man im Detail auf eine bestimmte eingehen und wer würde das lesen wollen?
Es ist vermutlich aussichtsreicher, sich eine weitverbreitete Implementierung anzuschauen und nach mehr Infos dazu im Netz zu suchen. Grundsätzlich viel wahscheinlicher, dass jemand mal was in einem Blogeintrag beschreibt, als gleich ein Buch drüber zu schreiben.
-
Eine bestimmte Implementierung wäre aus meiner Sicht der zweite Schritt, da mir wahrscheinlich einige Grundlagen fehlen.
zB Habe ich wenig Ahnung, wie zB Infiniband funktioniert oder zu programmieren ist. Wiki-Einträge sind da zwar hilfreich, aber ist halt alles verstreut.
Quellcode von zB openMPI ist nicht ohne Weiteres verständlich.
-
Kann dir kein Buch geben, aber hier hab ich hauptsächlich gelernt: http://mpitutorial.com/tutorials/
-
@SalomesWish sagte in Quellen zu MPI:
Eine bestimmte Implementierung wäre aus meiner Sicht der zweite Schritt, da mir wahrscheinlich einige Grundlagen fehlen.
zB Habe ich wenig Ahnung, wie zB Infiniband funktioniert oder zu programmieren ist. Wiki-Einträge sind da zwar hilfreich, aber ist halt alles verstreut.
Quellcode von zB openMPI ist nicht ohne Weiteres verständlich.Der Sinn und Zweck von MPI besteht gerade darin, dass man sich nicht mit der Implementation von MPI selbst herumschlagen muss. Das heißt Dinge wie die Puffergröße wie und wie die Daten übertragen werden (Ethernet, Infiniband, Omnipath, …) sind vollkommen irrelevant. Man sollte sich zuerst damit auseinandersetzen.
Wenn man sich mit der Netzwerkprogrammierung auseinandersetzen will, sollte man zuerst einmal mit Sockets (wie reden doch hoffentlich über ein Linux bzw. UNIX?) auseinandersetzen, und wenn man das gemeistert hat, dann kann man sich ibverbs anschauen. Das ist die Infiniband Library für die direkte Infiniband Programmierung. Allerdings ist es auf Clustern nicht gern gesehen, wenn man da direkt auf der IB Ebene herumfuhrwerkt. Insofern stellt sich eigentlich nicht die Frage nach ibverbs.