系统环境: rhel6 x86_64 iptables and selinux disabled

主机: 192.168.122.121 server21.example.com

192.168.122.173 server73.example.com (注:时间需同步)

所需的包:icpi-64

#配置mpich2

以下步骤在server21server73上实施:

[root@server21 ~]# yum install mpich2 -y

lmx

[root@server21 ~]# passwd lmx

以下步骤在server21server73上实施:

[root@server21 ~]# su - lmx

[lmx@server21 ~]$ vim .mpd.conf (注:这是隐藏文件)

secretword=westos

[lmx@server21 ~]$ chmod 600 .mpd.conf

[lmx@server21 ~]$ vim mpd.hosts (集群节点集合文件)

server21.example.com

server73.example.com (所有节点的主机名)

:如果以root用户启动mpd服务, mpd.conf文件创建在/etc目录中(不加"."), mpd.hosts放在root主目录中

#在各个集群节点之间创建SSH信任连接

例:

以下步骤在server21server73上实施:

[root@server21
~]# su - lmx

[lmx@server21
~]$ ssh-keygen (一路回车即可)

[lmx@server21
~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub server21.example.com (与自己信任连接)

[lmx@server21
~]$ ssh server21.example.com

[lmx@server21
~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub server73.example.com (与其他节点信任连接)

或者采用nfs的方式:

以下步骤在server21上实施:

[lmx@server21
~]$ logout

[root@server21
~]# yum install nfs-utils.x86_64 -y

[root@server21
~]# vim /etc/exports

/home/lmx
*(rw,sync,anonuid=)

[root@server21 ~]# /etc/init.d/rpcbind
start

[root@server21
~]# /etc/init.d/nfs start

以下步骤在其他所有节点上实施:

[root@server73
~]# yum install showmount -y

[root@server73
~]# showmount -e 192.168.122.121

[root@server73
~]# mount 192.168.122.121:/home/lmx/ /home/lmx/

[root@server73
~]# su - lmx

[lmx@server73
~]$ ssh server73.example.com

[lmx@server73
~]$ ssh server21.example.com

mpich2测试:

1.本地测试

启动mpich2: mpd& 查看启动机器:mpdtrace 退出:mpdallexit

Rhel6-mpich2 hpc集群配置文档-LMLPHP

2.运行集群系统

启动mpich2: mpdboot -n 2 -f mpd.hosts (参数-n 2指定要启动的机器个数,-f mpd.hosts指定了通过mpd.hosts运行)查看启动机器:mpdtrace 退出:mpdallexit

Rhel6-mpich2 hpc集群配置文档-LMLPHP

测试运行mpich2的圆周率的程序

mpich2的安装包examples目录里有圆周率计算的原代码icpi.c,先编译成可执 行文件

mpicc icpi.c -o icpi

1.单机测试

Rhel6-mpich2 hpc集群配置文档-LMLPHP

2集群测试

Rhel6-mpich2 hpc集群配置文档-LMLPHP

由上述测试的结果可以看出使用单机单进程运行,intervals设为1000000000,耗 时30.903027,而用两台机器双进程则只有16.075092,明显快很多,并行运算还是 很有效果的。不过,如果我们把intervals改为10000,单机运行只用了0.001421,而 两台机器却花了0.002374,这是因为并行运算过程中,参与运算的机器需要通过网

络传递一些消息,如果计算量不大的话,花在了这上面的时间影响会比较明显,因而

反不如单机版的来得快

05-04 08:53