我有一个由4个节点组成的小型集群,每个节点有4个核心。我可以很高兴地在一个节点上运行HP Linpack,但我很难让它在多个节点上运行。
我用OpenMPI和OpenBLAS从源码编译了HPL-2.3。在单节点测试中,一切似乎都很好。
我的'nodes'文件是。
192.168.0.1 slots=4
192.168.0.2 slots=4
192.168.0.3 slots=4
192.168.0.4 slots=4
如果我运行 mpirun -np 16 -hostfile nodes uptime
我得到了以下信息。
19:10:49 up 8:46, 1 user, load average: 0.05, 0.53, 0.34
19:10:49 up 8:46, 1 user, load average: 0.05, 0.53, 0.34
19:10:49 up 8:46, 1 user, load average: 0.05, 0.53, 0.34
19:10:49 up 9 min, 0 users, load average: 0.08, 0.06, 0.03
19:10:49 up 9 min, 0 users, load average: 0.08, 0.06, 0.03
19:10:49 up 9 min, 0 users, load average: 0.08, 0.06, 0.03
19:10:49 up 8:46, 1 user, load average: 0.05, 0.53, 0.34
19:10:49 up 37 min, 0 users, load average: 0.08, 0.02, 0.01
19:10:49 up 37 min, 0 users, load average: 0.08, 0.02, 0.01
19:10:49 up 37 min, 0 users, load average: 0.08, 0.02, 0.01
19:10:49 up 20 min, 0 users, load average: 0.00, 0.02, 0.00
19:10:49 up 9 min, 0 users, load average: 0.08, 0.06, 0.03
19:10:49 up 20 min, 0 users, load average: 0.00, 0.02, 0.00
19:10:49 up 20 min, 0 users, load average: 0.00, 0.02, 0.00
19:10:49 up 37 min, 0 users, load average: 0.08, 0.02, 0.01
19:10:49 up 20 min, 0 users, load average: 0.00, 0.02, 0.00
这说明OpenMPI正在工作,并且正在分发。uptime
到4个处理器,16个核心。
然而,当我运行 mpirun -np 16 -hostfile nodes xhpl
我得到了以下信息。
mpirun was unable to find the specified executable file, and therefore
did not launch the job. This error was first reported for process
rank 8; it may have occurred for other processes as well.
NOTE: A common cause for this error is misspelling a mpirun command
line parameter option (remember that mpirun interprets the first
unrecognized command line token as the executable).
Node: 192.168.0.3
Executable: /home/ucapjbj/phas0077/projects/hpl-2.3/bin/arch/xhpl
这说明 xhpl
找不到节点 192.168.0.3
,这似乎是合理的,因为它只存在于 192.168.0.1
,这是我的开发节点。但是在概念上,我的印象是我可以在一个节点上进行开发,然后让 OpenMPI 将可执行文件分发到其他节点上执行,而不需要事先将可执行文件复制到其他节点上。我是否从根本上误解了这一点?
任何指导都将非常感激。
问好
约翰
看来我必须把'xhpl'可执行文件复制到每个节点的相同位置。
我看了一下 mpirun --preload-binary
选项,这似乎正是我想要的,但我不能让这个工作。任何建议都是非常欢迎的。
衷心祝愿
约翰