Centos7虚拟机配置MPI3.2
主机1: 主机名:node1 IP:192.168.19.165 系统:centos7 用户名:centos 密码root
主机2: 主机名:node2 IP:192.168.19.169 系统:centos7 用户名:centos 密码root
*为了省事,以下操作都是以root用户进行的
1. 安装mpich-3.2,hydra-3.2 (下载地址 http://www.mpich.org/downloads/)
./configure; make; make install
2. 在root下添加环境变量(方法很多,不唯一)
[root@node1 ~]
#vim.bashrc
添加 export LD_LIBRARY_PATH=$PATH:/usr/local/lib/
3. 改IP地址 设置->网络->ens33设置->IPv4
地址(A)改为手动
地址192.168.16.165
网络掩码255.255.255.0
网关 192.168.0.1
4. 添加hosts文件
[root@node1 ~]
#vim hosts
添加node1
node2
保存退出
5. 关闭防火墙
[root@node1 ~]
#systemctl stopfirewalld.service //暂时关闭防火墙
[root@node1 ~]
#systemctl disabledfirewalld.service //永久关闭防火墙
6. 联网安装openssh-askpass
[root@node1 ~]
#yum installopenssh-askpass
7. Root下设置ssh ( 可参考http://1inux.blog.51cto.com/10037358/1638880 )
Node1上设置
[root@node1 ~]#ssh-keygen -trsa //
一路回车即可
[root@node1~]#ssh-copy-id -i /root/.ssh/id_rsa.pub
root@192.168.19.169 //此步要输入node2密码
验证[root@node1 ~]# ssh
root@192.168.19.169
运行结果
Last login: Thu Apr 13 21:18:06 2017 from node1
[root@node2 ~]#
Node2上设置
[root@node2 ~]#ssh-keygen -trsa //
一路回车即可
[root@node2~]#ssh-copy-id -i /root/.ssh/id_rsa.pub
root@192.168.19.165
//此步要输入node1密码
验证[root@node2 ~]#ssh
root@192.168.19.165
运行结果
Last login: Thu Apr 13 21:18:06 2017 from node1
[root@node1 ~]#
8. 运行测试程序(mpi自带的测试程序)
[root@node1 ~]
#mpiexec -f hosts -n 5 /home/centos/mpich-3.2/examples/cpi
通过运行该命令测试是否正确安装mpich3。上述命令的结果是:
Process 2 of 6 is on node1
Process 5 of 6 is on node1
Process 0 of 6 is on node2
Process 3 of 6 is on node2
Process 1 of 6 is on node3
Process 4 of 6 is on node3
pi is approximately 3.1415926544231243,Error is 0.0000000008333312
wall clock time = 0.001908
9. Eclipse配置MPI
项目->属性(properties)->C/C++ Build->Settings->GCC C++ Linker->Libraries
Libraries(-l) 添加 mpich mpichcxx
Libraries search pash(-L) 添加 /usr/local/lib
编译运行生成Debug文件(目录/home/centos/workspace/MPI_test/Debug/MPI_test)
10. 运行程序
[root@node1 ~]
# mpiexec -f hosts -n 3/home/centos/workspace/MPI_test/Debug/MPI_test
11. 注意事项:
* [root@node1 ~]
#与[root@node1 centos]
#, 输入#cd可进入[root@node1 ~]#
* node1和node2上都必须有相应的程序代码,而且可执行程序在不同服务器上的位置要一样
* mpi不会同步代码:node1里改代码不会影响到node2里的代码,而且代码不一样时能正常运行,
若需要同步代码,需要在node1,node2里都改代码
附:sftp文件传输命令(可将node1里改好的代码<文件夹MPI_test1>直接发送到node2)
1. 建立连接
[root@node1 ~]
# sftp centos@192.168.19.169
centos@192.168.19.169's password:
Connected to 192.168.19.169.
2. 在node2上相应目录下建立文件夹
sftp> mkdir/home/centos/workspace/MPI_test1
3. 发送文件夹
sftp> put -r /home/centos/workspace/MPI_test1/home/centos/workspace
*注意MPI_test1与/home之间有空格