2016-11-14 1 views
0

Ich muss eine MPI-Anwendung auf 8 Knoten mit jeweils 16 CPUs ausführen. Selbst nach ein paar Recherchen verstehe ich immer noch nicht, wie Hostdateien funktionieren. Ich verwende R mit den DoMPI- und Rmpi-Bibliotheken.Wie kann ich eine Hostdatei mit MPI erstellen?

Das ist, was ich bisher verstanden:

Ich habe einen Hostfile my-hosts, die wie folgt aussieht:

node1 slots=16 
node2 slots=16 
. 
. 
. 

Kann ich einfach die Knoten aufrufen, indem nodeX?

Wie kann ich den Namen des Knotens erhalten?

Gibt es irgendeine Funktion wie getNodeName()?

Reicht die folgende Befehlszeile aus, um die Anwendung zu starten?

mpirun -np 1 -host my_host .... 

Ist es notwendig, die Hostdatei auf allen Knoten zu haben?

+0

Um zu vermeiden, dass wir wiederholen, was Sie bereits gelesen haben, geben Sie bitte an, was Sie nicht verstanden haben, nachdem Sie darüber gelesen haben. Es kann auch helfen, Details auf dem Computer anzugeben, z. B. das Betriebssystem. Related: https://www.open-mpi.org/faq/?category=running#mpirun-hostfile –

+1

@ Hack-R, ich aktualisiere nur meine Frage. Siehe oben. ;) – olegario

Antwort

1

Der Name der Knoten muss entweder ihre IP-Adresse oder ihr DNS-Hostname sein. Sie können den Namen des Knotens erhalten, wenn Sie die IP-Adresse kennen, indem Sie den DNS-Server abfragen (hängt von Ihrem System ab: Windows, Linux usw.).

Beispiel:

localhost 
192.168.1.2 
host01.clusterdomain 

Ich schlage vor, Sie zu prüfen, ob das System mit dem Sie arbeiten, jede Art von job scheduler verwendet. Wenn dies der Fall ist, müssen Sie sich nicht um die Angabe der Host-Datei kümmern, da der Job-Scheduler sich darum kümmert (Sie geben nur die Menge der Ressource an, die Sie wollen).

Schließlich ist die Hostfile nur notwendig, in dem Host, auf dem Sie den Prozess-Manager ausgeführt werden (mpirun, mpiexec, etc.). Wenn Sie jedoch ein gemeinsam genutztes Dateisystem verwenden, stellen Sie sicher, dass alle von Ihrer Anwendung benötigten Dateien einschließlich der Hostdatei (falls benötigt) auf allen Knoten des Clusters verfügbar sind.

+0

Danke, Alter! Eine letzte Frage, selbst wenn ich einen Job-Scheduler habe, brauche ich noch -H name_node1, name_node2 ...? – olegario

+0

Wenn Sie einen Job-Scheduler haben, müssen Sie sich wahrscheinlich gar nicht um Host-Namen kümmern ** (da Hosts sich je nach Auslastung des Clusters ändern können). Normalerweise rufen Sie einfach 'mpirun/your/app/binary arguments' auf und die MPI-Implementierung wird Ihre Job-Konfiguration mit Umgebungsvariablen erraten, die vom Job-Scheduler gesetzt werden. Dies trifft möglicherweise nicht zu, wenn Sie kompliziertere Dinge tun möchten, aber für die meisten typischen Anwendungen funktioniert es out-of-the-box. Schlagen Sie in Ihrer Job-Scheduler-Dokumentation nach oder bitten Sie die Administratoren, eine zu installieren (es gibt viele, einschließlich Open-Source-Versionen). –

Verwandte Themen