'u kullanarak bir mpi kümesinde birden çok düğüme erişme Bu, ipython-with-mpi-clustering-using-machinefile iş parçacığının devamıdır. Biraz daha odaklı ve umarım sorun ne olabilir diye açık.ipython
Tümü bir NFS paylaşımında mpich/mpi4py, bir makine dosyası ve bir sanal diskteki tüm kitaplıkları kullanarak bir küme olarak çalışan 3 düğümler var. Amacım, ipython/ipyparallel öğelerini, her biri birden çok ipython motoru çalıştıran birden çok düğüm arasında dağıtmaktır.
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
: Ben
ipython --profile=mpi
çalıştırın ve aşağıdaki komutları kullanarak çalışan çalışan motorlar listelemek (bu durumda
worker1
olarak) (bu durumda
worker2
) bir düğümde
ipcluster start --profile=mpi -n 4
çalıştırabiliyor ve başka düğüm boyunca duyuyorum
Bu durumdaiçinde (başka düğümde ipcluster başlarsanız, Ancak
In [7]: for r in results:
print r
...:
worker2
worker2
worker2
worker2
: beklendiği gibi
, ben baskılı motorları çalıştıran konağın hostname 4 örneklerini almak
In [7]: for r in results:
print r
...:
head
head
head
head
Benim sorum nasıl olabilir,:), daha sonra bu yukarıda belirtildiği gibi ben motorların ilk seti yine de diğer düğümde çalışır durumda olmasına karşın, bunları sorgulamak onlara görünmek için sadece motor/nodlardır Ipython'u, çalışan tüm düğümlerdeki tüm motorları görmeye alıyorum; iow, yükü aslında farklı düğümlere dağıtmak.
(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
Yani, en azından ben bu sorun değildir biliyorum: ince kendi çalışmalarına MPI Running
(baş, worker1 ve worker2 ilgili düğüm sin küme vardır).