私はPythonスクリプトから(そして、テストのためにインタラクティブに、しかしipythonからではなく)、Pythonの2つの異なるバージョンにわたって並列プロセスを起動したいと思っており、mpi4py
. 2 つのバージョンは (それぞれ 2 コアと 8 コア用):
Python 2.7.2 |EPD 7.2-2 (64-bit)| (default, Sep 7 2011, 16:31:15)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
と
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
最初のもの(ロープを学ぶため)では、インタラクティブに次のようになります。
from mpi4py import MPI
import sys
size = MPI.COMM_WORLD.Get_size()
print size
1
rank = MPI.COMM_WORLD.Get_rank()
print rank
0
これは私が望んでいるものではありません(そして、やっているmpirun
/mpiexec python
ハングしているようです/何もしないようです)。しかし、もしそうなら:
mpiexec -n 5 python helloworld.py
の上
#!/usr/bin/env python
from mpi4py import MPI
import sys
size = MPI.COMM_WORLD.Get_size()
rank = MPI.COMM_WORLD.Get_rank()
name = MPI.Get_processor_name()
sys.stdout.write(
"Hello, World! I am process %d of %d on %s.\n"
% (rank, size, name))
私は得る
Hello, World! I am process 0 of 5 on localhost.
Hello, World! I am process 1 of 5 on localhost.
Hello, World! I am process 2 of 5 on localhost.
Hello, World! I am process 3 of 5 on localhost.
Hello, World! I am process 4 of 5 on localhost.
size
Python をインタラクティブに起動するときに > 0を取得するにはどうすればよいですか?
ちなみに、動作しないのではなく実行します./helloworld.py
。python helloworld.py
localhost:demo jtlz2$ mpiexec -n 5 ./helloworld.py
--------------------------------------------------------------------------
Failed to find or execute the following executable:
Host: localhost
Executable: ./helloworld.py
Cannot continue.
--------------------------------------------------------------------------
理由はありますか?ありがとう!