系统环境: rhel6 x86_64 iptables and selinux disabled
主机: 192.168.122.121 server21.example.com
192.168.122.173 server73.example.com (注:时间需同步)
所需的包:icpi-64
#配置mpich2
以下步骤在server21和server73上实施:
[[email protected] ~]# yum install mpich2 -y
[[email protected] ~]# useradd -u 600 lmx
[[email protected] ~]# passwd lmx
以下步骤在server21或server73上实施:
[[email protected] ~]# su - lmx
[[email protected] ~]$ vim .mpd.conf (注:这是隐藏文件)
secretword=westos
[[email protected] ~]$ chmod 600 .mpd.conf
[[email protected] ~]$ vim mpd.hosts (集群节点集合文件)
server21.example.com
server73.example.com (所有节点的主机名)
注:如果以root用户启动mpd服务, 把mpd.conf文件创建在/etc目录中(不加"."), mpd.hosts放在root主目录中
#在各个集群节点之间创建SSH信任连接
例:
以下步骤在server21和server73上实施:
[[email protected]
~]# su - lmx
[[email protected]
~]$ ssh-keygen (一路回车即可)
[[email protected]
~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub server21.example.com (与自己信任连接)
[[email protected]
~]$ ssh server21.example.com
[[email protected]
~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub server73.example.com (与其他节点信任连接)
或者采用nfs的方式:
以下步骤在server21上实施:
[[email protected]
~]$ logout
[[email protected]
~]# yum install nfs-utils.x86_64 -y
[[email protected]
~]# vim /etc/exports
/home/lmx
*(rw,sync,anonuid=600,anongid=600)
[[email protected] ~]# /etc/init.d/rpcbind
start
[[email protected]
~]# /etc/init.d/nfs start
以下步骤在其他所有节点上实施:
[[email protected]
~]# yum install showmount -y
[[email protected]
~]# showmount -e 192.168.122.121
[[email protected]
~]# mount 192.168.122.121:/home/lmx/ /home/lmx/
[[email protected]
~]# su - lmx
[[email protected]
~]$ ssh server73.example.com
[[email protected]
~]$ ssh server21.example.com
mpich2测试:
1.本地测试
启动mpich2: mpd& 查看启动机器:mpdtrace 退出:mpdallexit
2.运行集群系统
启动mpich2: mpdboot -n 2 -f mpd.hosts (参数-n 2指定要启动的机器个数,-f mpd.hosts指定了通过mpd.hosts运行)查看启动机器:mpdtrace 退出:mpdallexit
测试运行mpich2的圆周率的程序
在mpich2的安装包examples目录里有圆周率计算的原代码icpi.c,先编译成可执 行文件
mpicc icpi.c -o icpi
1.单机测试
2集群测试
由上述测试的结果可以看出使用单机单进程运行,intervals设为1000000000,耗 时30.903027秒,而用两台机器双进程则只有16.075092秒,明显快很多,并行运算还是 很有效果的。不过,如果我们把intervals改为10000,单机运行只用了0.001421秒,而 两台机器却花了0.002374秒,这是因为并行运算过程中,参与运算的机器需要通过网
络传递一些消息,如果计算量不大的话,花在了这上面的时间影响会比较明显,因而
反不如单机版的来得快