MPI ist keine Programmiersprache. MPI definiert eine Reihe von Bibliotheksroutinen, die von C- und Fortran-Programmen aufgerufen werden können. MPI-Programme verwenden typischerweise einen Ansatz mit einem einzigen Programm und mehreren Daten. Mehrere Instanzen oder MPI-Ränge desselben Programms werden gleichzeitig ausgeführt. Jeder Rang berechnet einen anderen Teil des größeren Problems und verwendet MPI, um Daten zwischen den Rängen zu kommunizieren. Aus der Perspektive eines MPI-Programmierers können Ränge auf demselben Knoten oder auf verschiedenen Knoten laufen; der Kommunikationsweg kann unterschiedlich sein, aber das ist für das MPI-Programm transparent.
Die Startup-Mechanismen von MPI-Anwendungen sind nicht Bestandteil des Standards. Wir demonstrieren den Umgang mit Intel MPI-Programmen unter Linux, aber die meisten anderen Distributionen haben eine ähnliche Semantik und ähnliche Funktionen. Die grundlegende Art, ein Intel MPI-Programm auszuführen, ist (mit
$ mpirun –n < N > ./prg.x
Dies reicht für einen Shared-Memory-Knoten oder einen Cluster mit einem Standard-Stapelverwaltungssystem aus. Wenn Sie auf den folgenden Fehler stoßen:
mpirun.openmpi: command not found
Sie können versuchen, das folgende Paket gemäß Ihrer Wahl der Distribution zu installieren.
Verteilung | Befehl |
---|---|
Debian | apt-get install openmpi-bin |
Ubuntu | apt-get install openmpi-bin |
Kali-Linux | apt-get install openmpi-bin |
Raspbian | apt-get install openmpi-bin |
Zusammenfassung
Das MPI-Programmiermodell eignet sich ideal für Cluster mit Intel Xeon Phi-Coprozessoren. Der Programmierer kann einzelne MPI-Ränge beschleunigen, indem er die wichtigsten Rechenkerne auf den Coprozessor auslagert. Allerdings muss darauf geachtet werden, Ressourcenkonflikte zu vermeiden und den erhöhten Kommunikationsaufwand zu amortisieren. Alternativ hat der Coprozessor die Eigenschaften eines anderen Cluster-Knotens, wenn auch eines mit anderen Rechenkapazitäten als der Host, und MPI-Ränge können nativ auf dem Coprozessor ausgeführt werden. Beide Ansätze führen zu neuen Graden an Heterogenität und der Wahrscheinlichkeit eines Lastungleichgewichts als Leistungsengpass.