VMware下CentOS MPI并行计算环境搭建

来源:互联网 发布:vb sqlite3 编辑:程序博客网 时间:2024/05/05 05:06

不得不吐槽一下,我刚开始用的CentOS 7搭了好几天不是这里错就是那里错,然后我觉得可能是系统与mpich2不兼容,于是就换了CentOS 5,但是发现出现同样的问题。主要出现的问题是能够启动节点的mpd,但是mpdtrace和mpdallexit命令执行会出错。思来想去,之前好像误打误撞能够执行这两个命令(但那时候不能运行双节点),那时候mpich2不是在root下安装的,于是我觉得是root安装的问题,果不其然,在非root用户下弄好了,真是心累!废话不多说,说下过程,以免以后要搭的时候又出bug,也给大家一个参考。

环境说明

VMware Workstations Pro下的两台CentOS 5.5虚拟机

配置虚拟机的静态ip及修改hostname

  • 配置静态IP(这是在已经建立虚拟机之后)
    不想写太多文字,直接贴图

    ![Alt text](http://img.blog.csdn.net/20170206130611593?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHZteTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

    把VMnet8中的“使用本地DHCP…”勾掉,子网自己可以设,我是用默认的,然后“应用”
    Alt text

    进虚拟机后,应该是上不了网,此时就要配置/etc/sysconfig/network-scrips/ifcfg-eth0,随便你用什么编辑该文件,笔者直接用gedit(boot下),修改如下(可能你的跟我的不太一样,但是大同小异):
    DEVICE=eth0
    BOOTPROTO=static
    IPADDR=192.168.253.5
    NETMASK=255.255.255.0
    HWADDR=00:0C:29:EE:09:04#这一行为默认,如果克隆虚拟机则需要求改
    ONBOOT=yes
    DNS1=192.168.253.2#这一行与默认网关相同,可在虚拟网络编辑器的VMnet8的nat设置中查看
    修改/etc/sysconfig/network文件如下
    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=C1#主机名,修改hostname需要
    GATEWAY=192.168.253.2#默认网关
    然后重启网络(命令:service network restart),现在应该就可以上网了。

  • 修改hostname
    除了上面修改的/etc/sysconfig/network外,还要修改/etc/hosts,如下:
    #127.0.0.1 localhost.localdomain localhost#这一行最好注释掉,反正应该不会有很大影响
    192.168.253.5 C1#网卡ip hostname
    192.168.253.6 C2
    ::1 localhost6.localdomain6 localhost6
    这里要说明的是我加了两行C1和C2,这是为了。。额忘了,是为了ping C2能对应上ip。重启后应该就能生效!艾玛本来不想写这部分,累死我了。

SSH无密码登录配置

接下来是比较重要的一环了,这关系到多节点的mpd启动。
1.在每个节点上执行ssh-keygen -t rsa命令,之后直接回车就可以
2.在每个节点上执行cat ~/.ssh/id_rsa.pub | ssh mlv(用户名,每个节点相同)@C1(你设的hostname) “cat - >> ~/.ssh/authorized_keys” ,这一步生成authorized_keys
3.在每个节点上执行scp mlv@C1:~/.ssh/authorized_keys ~/.ssh/,这一步把authorized_keys复制到各节点的/.ssh目录
4.权限设置chmod 600 ~/.ssh/authorized_keys
现在就可以无密码登陆了!ssh c2试下!如果觉得我没说清楚,可以参考:http://www.cnblogs.com/marsprj/archive/2013/02/26/2933839.html

安装mpich2(每个节点都要)

1.下载mpich2,百度一下就有了,我下的1.4.1p1版
2.如果没有GCC,要先安装不然下面出问题,命令:yum install gcc* -y
3.安装随便你实在root还是在非root下,我是在root下好像,执行以下命令:
tar zxvf mpich2-1.4.1p1.tar.gz
cd mpich2-1.4.1p1
./configure –prefix=/opt/mpich2-1.4.1p1 –with-pm=hydra:mpd –with-mpe
make && make install
4.我退回到非root用户下配置环境变量,修改~/.bashrc,添加下面一行PATH=”$PATH:/opt/mpich2-1.4.1p1/bin”,然后运行source ~/.bashrc就可以了。
5.不放心的话可以测试一下:which mpd如果有路径则说明成功了。
6.创建配置文件mpd.conf
由于我是普通用户,所以应创建~/.mpd.conf,内容为secretword=123456,这个值可以自己设,但是每个节点上的该文件内容要相同。
7.创建配置文件~/mpd.hosts,其内容为每一行对应一个hostname
8.在各个节点搞完上面的,应该就可以启动mpd了,单节点启动(本机):mpd &,多节点启动:mpdboot -n 2(节点数) -f ~/mpd.hosts,查看运行节点:mpdtrace -l,关闭所有:mpdallexit.
然后就可以运行程序了,注意如果要在各个节点上运行的话要指明host,比如我要在C1,C2运行,则要执行以下命令mpirun -hosts C1,C2 -n 2 ./cpi。OK,大功告成!

不行的话参考下,下面的吧,我是东拼西凑搞出来的,如果没说清楚还请见谅!
参考网站:
http://www.cnblogs.com/marsprj/archive/2013/02/26/2933906.html
http://www.cnblogs.com/marsprj/archive/2013/02/26/2933839.html
http://www.doc88.com/p-9899788704360.html

0 0