【转】Linux下MPI并行环境与Eclipse配置全过程。Linux + mpich2 + Eclipse

Linux下MPI并行环境与Eclipse配置全过程。Linux + mpich2 + Eclipse

我是Linux超级新手,文中难免有错误的地方,望指正和多多包容

硬件情况:2台主机
主机1: 主机名:node1  IP:192.168.19.165   操作系统:CentOS 5.2  用户:root 密码:root
主机2: 主机名:node2  IP:192.168.19.169   操作系统:CentOS 5.2  用户:root 密码:root
(这里的两台主机上的用户名和密码设置成一样的,好像不一样的话将会影响之后mpi程序的执行)

为了省事,以下操作都是以root用户进行的
1、===================配置host文件=========================
在node1和node2上
#vi /etc/hosts   打开hosts文件,修改如下:
127.0.0.1 localhost.localdomain localhost
192.168.19.165 node1
192.168.19.169 node2
(注意127.0.0.1 localhost.localdomain localhost一定不能缺,否则将可能导致之后 mpiexec运行出错)

2、====================设置SSH信任连接====================
在node1上生成SSH秘钥对.
#ssh-keygen -t rsa    yes,一路回车
#cat  /root/.ssh/id_rsa.pub | root@192.168.19.169 "cat - >> root/.ssh/authorized_keys" 将密钥等信息拷贝至node2中,该过程需要输入node2上root用户的密码
#ssh root@node2   登陆node2
#exit
#ssh root@node2   第二次登陆node2,无需再输入密码了
#exit
#ssh root@node1   登陆自身一次

在node2上执行同样的操作,只不过目标换成node1了
#ssh-keygen -t rsa    yes,一路回车
#cat  /root/.ssh/id_rsa.pub | root@192.168.19.165 "cat - >> root/.ssh/authorized_keys"
#ssh root@node1 
#exit
#ssh root@node1  
#exit
#ssh root@node2  
(以上使用的ssh,如果系统安装的ssh2,设置过程将与上有所不同)

3、=====================安装mpich2======================
在node1和node2上:
#tar -zxvf mpich2-1.0.1.tar.gz  解压缩
#cd mpich2-1.0.1
#./configure     --prefix==安装路径,指定安装路径时可以使用#./configure --prefix=???,不带参数时默认安装路径为/usr/loacl,我用的是默认安装路径
#make
#make install  安装完成
(为了避免未知错误,两台机器的mpich2安装位置最好一样)

设置环境变量:
#cd /etc/
#vi profile   编辑profile文件
添加   PATH="$PATH:/usr/local/bin"
#source profile
#which mpd    测试环境变量

创建并修改/etc/mpd.conf文件
#vi /etc/mpd.conf
内容为
secretword=myword
#touch /etc/mpd.conf     
#chmod 600 /etc/mpd.conf     (设置文件读取权限和修改时间,这两步好像不能省)

创建主机名称集合文件/root/mpd.hosts
#vi /root/mpd.hosts
文件内容如下:
node1
node2

4、=====================简单的测试=========================
在node1上
#mpd &    启动
#mpdboot -n 2 -f mpd.hosts   启动2台机器(启动的机器数不能超过集群中的主机数,这里只有2台)
#mpdtrace 观看启动机器
#mpiexec -n 4 /usr/local/examples/cpi     number为使用的进程数,运行mpi自带的测试程序(不一定存在)
#mpdallexit   退出

mpi程序的编译
#mpicc example.cc -o example          C语言源代码
或#mpic++ example.cc -o example       C++语言源代码
或#mpif77 example.f -o example         Fortran语言源代码

编译后可以执行:
#mpdboot -n 2 -f mpd.hosts
#scp /tmp/example  root@node2:/tmp/example  (/tmp/为刚才编译的程序所在文件夹)
(需要并行运算的程序在两台主机上所存放的路径必须相同,文件名也必须相同我这里都存放在/tmp/文件夹下)
#mpiexec -n 4 /tmp/example

5、===================在Eclipse中开发MPI程序=================
在新建的工程上点右键 选择Properties


添加include路径,我的mpich2安装在/usr/local




添加lib库路径,添加mpich,mpichxx,pthread   注:这是在linux下,与windows环境下需添加的库不同


OK,Eclipse加MPI开发环境配置完成

参考资料:
SSH设置:
http://stevenz.blog.hexun.com/15798089_d.html
MPICH2配置:
http://www.xxlinux.com/linux/article/accidence/install/20070514/8413.html
MPI与Eclipse:
http://blog.csdn.net/cleverysm/archive/2007/06/06/1640290.aspx
一些MPI错误解决方法:
http://blog.csdn.net/xiaxiazls/archive/2009/09/08/4530423.aspx
原文地址:https://www.cnblogs.com/HOUST/p/3029472.html