jtl*_*lz2 3 python linux macos mpi
我想从python脚本启动并行进程(并且,用于测试,交互式,但不是从ipython),跨两个不同版本的python启动,并且已经开始使用mpi4py.这两个版本(分别为2个和8个核心):
Python 2.7.2 | EPD 7.2-2(64位)| (默认,2011年9月7日,16:31:15)[GCC 4.0.1(Apple Inc. build 5493)]在达尔文
和
Linux 2.6.5(r265:79063,2010年4月16日,13:57:41)[GCC 4.4.3]在linux2上
在第一个(学习绳索),交互式我得到:
from mpi4py import MPI
import sys
size = MPI.COMM_WORLD.Get_size()
print size
Run Code Online (Sandbox Code Playgroud)
1
rank = MPI.COMM_WORLD.Get_rank()
print rank
Run Code Online (Sandbox Code Playgroud)
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))
Run Code Online (Sandbox Code Playgroud)
我明白了
你好,世界!我是localhost上的第0个进程.
你好,世界!我是localhost上的第1步,共5步.
你好,世界!我是本地主机上的第2步(共5步).
你好,世界!我是本地主机上的第3步(共5步).
你好,世界!我是本地主机上的第4个过程.
如何以交互方式启动python时大小> 0?
顺便说一句,做./helloworld.py而不是python helloworld.py不起作用:
无法找到或执行以下可执行文件:
主机:localhost可执行文件:./ helloworld.py
有什么想法吗?谢谢!
如果没有从mpirun/ 启动mpiexec,MPI可执行文件形成单例,这就是为什么MPI_COMM_WORLD总是大小为1.
至于mpiexec未能找到可执行文件,后者必须设置其"可执行"位,例如通过
$ chmod +x helloworld.py
Run Code Online (Sandbox Code Playgroud)
交互式运行MPI作业非常棘手.大多数MPI实现为所有进程执行输出重定向,这就是您可以看到组合输出的原因,但对于输入重定向则不然.只有等级0才能接收交互式输入.但是你可以做几件事:
以交互方式运行排名0,让其他排名执行脚本.这将允许您探索与其他等级的通信:$ mpiexec -np 1 python : -np 4 python script.py
这将以交互模式启动解释器的一个副本作为等级0,然后script.py作为等级1到4的四个副本.
在其自己的图形终端仿真器中以每个级别交互运行,例如xterm:$ mpiexec -np 5 xterm -e python
这将在所有这些中启动5个xterms和一个单独的Python解释器副本.这种方法要求每个人xterm都能够与您的X11显示服务器通信,这意味着您可能必须显式传递DISPLAY环境变量的值,例如使用-x DISPLAYOpen MPI或-genv DISPLAYMPICH派生的实现.
| 归档时间: |
|
| 查看次数: |
1797 次 |
| 最近记录: |