7. 运行程序

一旦您能完成上面显示的所有测试,您应该能够运行程序了。从这里开始,说明是 lam 特定的。

回到头节点,以 wolf 用户身份登录,然后输入以下命令

cat > /nnt/wolf/lamhosts 
wolf01 
wolf02 
wolf03 
wolf04 
<control d>

转到 lam 示例目录,并编译 "hello.c"

mpicc -o hello hello.c 
cp hello /mnt/wolf 

然后,如 lam 文档所示,启动 lam

[wolf@wolf00 wolf]$ lamboot -v lamhosts 
LAM 7.0/MPI 2 C++/ROMIO - Indiana University 
n0<2572> ssi:boot:base:linear: booting n0 (wolf00) 
n0<2572> ssi:boot:base:linear: booting n1 (wolf01) 
n0<2572> ssi:boot:base:linear: booting n2 (wolf02) 
n0<2572> ssi:boot:base:linear: booting n3 (wolf04) 
n0<2572> ssi:boot:base:linear: finished

所以我们现在终于准备好运行一个应用程序了。[记住,我正在使用 lam;您的消息传递接口可能具有不同的语法]。

[wolf@wolf00 wolf]$ mpirun n0-3 /mnt/wolf/hello 
Hello, world! I am 0 of 4 
Hello, world! I am 3 of 4 
Hello, world! I am 2 of 4 
Hello, world! I am 1 of 4 
[wolf@wolf00 wolf]$

回想一下我上面提到的 NFS 的使用。我告诉所有节点使用 nfs 共享目录,当使用大量节点时,这将成为瓶颈。您可以轻松地将可执行文件复制到每个节点,并在 mpirun 命令中指定节点本地目录:mpirun n0-3 /home/wolf/hello。 这样做的前提是所有文件都可以在本地获得。 事实上,我已经这样做了,并且效果比使用 nfs 共享可执行文件更好。当然,如果我的集群应用程序需要修改集群共享的文件,那么这个理论就不成立了。