首先修改hosts,例如:
192.168.1.21 computer1
192.168.1.22 computer2
之类的,在/etc/hosts文件内
然后安装mpi:
sudo apt-get install libc6 mpich2
在/home/user目录下新建一个叫.mpd.conf的文件,里面写上MPD_SECRETWORD=xxx
然后是安装ssh
参考:
http://blog.sciencenet.cn/home.php?mod=space&uid=43242&do=blog&id=275185
最终目的是computer1能够ssh直接连接其它的机器而不用输入密码。
对每一台需要用到的机器都要执行上面三步
在computer1的/home/user下建立.mpd.host文件,里面写上:
computer1
computer2
之类的,相当于将任务分配给各个机器的顺序
最后是启动mpi集群:
mpdboot -n 2 -f /home/user.mpd.host
这时查看mpdtrace,会看到2个机器名。
然后编译运行你的程序:
编译的命令是:mpicc xxx.c -o xxx.o 可能需要-lstdc++
执行的命令是:mpiexec -machinefile /home/user.mpd.host -n 2 xxx.o
注意:上面启动mpdboot的时候一定要在computer1上面启动computer2的mpd,否则相当于computer2自己当主机了,也就是computer1没法连接到computer2,最终会产生:
unable to start all procs; may have invalid machine names
> remaining specified hosts:
这样的错误。而网上铺天盖地都是说这时候应该在computer2上mpd到computer1,试了一下发现木有效果。。。