我使用OS X的内置mpic++
构建了一个并行程序,我正在尝试在家庭网络中的两台Mac上运行MPI作业。两者都使用Snow Leopard 10.6.8并且可以在本地运行。我也可以使用ssh
访问其他计算机。但是,进入后
mpirun -n 2 --host localhost,10.0.1.2 ./enigmaMPI
我被要求输入密码,然后我得到了这个输出:
--------------------------------------------------------------------------
Failed to find or execute the following executable:
Host: iMac.local
Executable: ./enigmaMPI
Cannot continue.
--------------------------------------------------------------------------
mpirun noticed that job rank 0 with PID 7748 on node localhost exited on signal 15 (Terminated).
此消息并不是非常具体,可以帮助我找到解决方案......有人可以帮忙吗?
我使用以下命令构建了我的程序:
mpic++ main.cpp enigma.cpp enigma.h -o enigmaMPI
答案 0 :(得分:1)
该消息尽可能提供信息。这意味着MPI无法在远程节点上的相同位置找到可执行文件enigmaMPI
。你必须确保:
enigmaMPI
可以在localhost
和10.0.1.2
上的同一位置找到; 自从你运行Snow Leopard以来,你最有可能使用随附的Open MPI版本。那你就不用担心第二点了。第一点意味着,如果要在enigmaMPI
下找到本地计算机/Users/username/project/enigmaMPI
,则必须将其复制到另一台Mac上的相同路径。
这就是为什么大多数集群使用共享文件系统(如NFS,Lustre,GPFS)并将其安装在每个计算节点上的相同位置的原因。另外,正如公理所指出的那样,设置无密码SSH(使用公钥)可以避免每次运行mpirun
时输入密码。
另外,据我所知,Snow Leopard仍然包含Xgrid,提供的Open MPI版本有一个可以通过Xgrid执行进程的模块。您只需要在第二台Mac上启用Xgrid共享,然后以某种方式使用Xgrid启动器......