Dies ist eine Fortsetzung des Threads ipython-with-mpi-clustering-using-machinefile. Es ist etwas konzentrierter und hoffentlich klarer, was das Problem sein könnte.Zugreifen auf mehrere Knoten in einem mpi-Cluster mithilfe von ipython
Ich habe 3-Knoten als Cluster mit mpich/mpi4py, eine Maschinendatei und alle Bibliotheken in einem virtualenv, alle auf einer NFS-Freigabe. Mein Ziel ist es, ipython/ipyparallel zu verwenden, um Jobs auf mehrere Knoten zu verteilen, auf denen jeweils mehrere ipython-Engines laufen.
Ich bin in der Lage ipcluster start --profile=mpi -n 4
auf einem Knoten (in diesem Fall worker2
) und durch einen anderen Knoten (in diesem Fall worker1
) laufen ipython --profile=mpi
und die Liste der laufenden Motoren auf die Lauf mithilfe der folgenden Befehle auszuführen:
import ipyparallel as ipp
client = ipp.Client()
dview = client[:]
with dview.sync_imports():
import socket
@dview.remote(block=True)
def engine_hostname():
return socket.gethostname()
results = engine_hostname()
for r in results:
print r
Wie erwartet, erhalte ich 4 Instanzen des Hostnamen des Host gedruckt, die Motoren laufen:
In [7]: for r in results:
print r
...:
worker2
worker2
worker2
worker2
wenn ich jedoch auf einem anderen Knoten starten ipcluster (in diesem Fall.210), dann ist das der einzige Motor/Knoten bis zu zeigen, wenn ich sich frage, wie oben ausgeführt, auch wenn der erste Satz von Motoren nach wie vor auf dem anderen Knoten ausgeführt werden:
In [7]: for r in results:
print r
...:
head
head
head
head
Meine Frage ist, wie kann Ich erhalte ipython, um alle Engines auf allen laufenden Knoten zu sehen; um die Last tatsächlich über die verschiedenen Knoten zu verteilen.
Lauf mpi auf seine eigenen Werke in Ordnung (Kopf, worker1 und worker2 sind die jeweiligen Knoten sin der Cluster):
(venv)[email protected]:~/development/mpi$ mpiexec -f machinefile -n 10 ipython test.py
head[21506]: 0/10
worker1[7809]: 1/10
head[21507]: 3/10
worker2[8683]: 2/10
head[21509]: 9/10
worker2[8685]: 8/10
head[21508]: 6/10
worker1[7811]: 7/10
worker2[8684]: 5/10
worker1[7810]: 4/10
Also zumindest ich weiß, das ist nicht das Problem.