我正在尝试在四个节点上运行MPI基准测试,但它总是只占用一个节点。我使用的命令如下:
mpirun -genv I_MPI_DEBUG=4 -np 4 -host mac-snb19,mac-snb20,mac-snb21,mac-snb22 IMB-MPI1 PingPong
或
mpirun -genv I_MPI_DEBUG=4 -np 4 --hosts mac-snb19,mac-snb20,mac-snb21,mac-snb22 IMB-MPI1 PingPong
此处,mac-snb19
,mac-snb20
,mac-snb21
和mac-snb22
是节点。难道我做错了什么?因为我得到的输出显示只使用mac-snb19
,我也通过登录节点进行检查,并且仅在mac-snb19
中我可以看到MPI进程正在运行,而在其他情况下并非如此。部分输出在这里显示了我所说的内容:
[0] MPI startup(): 0 2073 mac-snb19 {0,1,2,3,16,17,18,19}
[0] MPI startup(): 1 2074 mac-snb19 {4,5,6,7,20,21,22,23}
[0] MPI startup(): 2 2075 mac-snb19 {8,9,10,11,24,25,26,27}
[0] MPI startup(): 3 2077 mac-snb19 {12,13,14,15,28,29,30,31}
benchmarks to run PingPong
你能告诉我我在这里犯了什么错误吗?
由于
答案 0 :(得分:1)
使用Hydra流程管理器,您可以添加-perhost 1
以强制每个主机执行一个进程,也可以创建包含以下内容的计算机文件:
mac-snb19:1
mac-snb20:1
mac-snb21:1
mac-snb22:1
然后像:
一样使用它mpirun -genv I_MPI_DEBUG=4 -machinefile mfname -np 4 IMB-MPI1 PingPong
其中mfname
是机器文件的名称。 :1
指示Hydra每个主机只提供一个插槽。