配置linux高性能计算集群------MPI
2.3.1配置IP地址及网络环境
(1) 设置IP,更改主机名为node1,node2,node3,node4,如图所示2-1所示:
|
Pc |
主机名 |
IP |
|
节点1 |
Node1 |
192.168.0.164 |
|
节点2 |
Node2 |
192.168.0.145 |
|
节点3 |
Node3 |
192.168.0.151 |
|
节点4 |
Node4 |
192.168.0.118 |
图2-1配置PC机的网络配置
以四台pc为例,为了方便,分别更改了四台机器的主机名为node1,node2,node3,node4,以第一台为例:得网络配置
(2)hostname node1 临时更改主机名,使得在当前系统马上实现。
(3)vim /etc/sysconfig/network 永久更改主机名,使得下次启动系统时使用
编辑内容为(最后一行就是要改的主机名):
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1
(4)更改/etc/hosts文件
#vi /etc/hosts 打开hosts文件,更改如下:
127.0.0.1 localhost.localdomain localhost
192.168.0.164 node1
192.168.0.145 node2
192.168.0.151 node3
192.168.0.118 node4
2.3.2创建SSH信任连接(在root目录下)
(1)在station1生成SSH秘钥对
#ssh-keygen -t dsa 产生.ssh文件,
#ls -a 查看是否有.ssh文件夹
(2)进入.ssh目录
#cd .ssh
(3)生成authorized_keys文件
#mv id_rsa.pub authorized_keys
(4)建立本身的信任连接
#ssh node1 按提示输入yes
(5)分别更改其他节点的hostname,/etc/sysconfig/network
(6)将生成authorized_keys文件scp给其他的节点
#scp -r ~/.ssh node2:/root/ 拷贝node1上的.ssh文件夹scp给node2
#scp /etc/hosts node2:/etc/ 拷贝node1上的hosts文件scp到node2上
设置node3,node4的方法与node2相同
(7)确认四台机器的信任连接已建立
对每个节点执行:
#ssh node1
#ssh node2
#ssh node3
#ssh node4
在提示处输入yes回车,最后确定无需输入密码并且没有任何提示信息即可登陆("Last login:时间日期"提示信息除外)
2.4 安装MPICH2
(1)到MPICH官方网站下载源代码包,解压缩
#tar -zxvf mpich2-1.3.2p1.tar.gz
(2)进入mpich2解压目录
#cd mpich2-1.3.2p1
(3)编译并且指定安装目录
#./configure --prefix=/usr/loca/mpi
(4)编译
#make
(5)安装
#make install
(6)进入mpd目录,安装mpd
#cd src/pm/mpd
#./configure –prefix=/usr/local/mpi
#make && make install
(7)退出到root目录
#cd
(8)通过编辑.bashrc文件修改环境变量
#vim .bashrc
修改后的.bashrc文件如下:
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
PATH="$PATH:/usr/local/mpi/bin" #新增加的
#Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
(9)测试环境变量设置
#which mpd
#which mpicc
#which mpiexec
#which mpirun
(10)修改/usr/local/mpi/etc/mpd.conf文件,内容为secretword=myword
#vi /usr/local/mpi/etc/mpd.conf
设置文件读取权限和修改时间
#touch /usr/local/mpi/etc/mpd.conf
#chmod 600 /usr/local/mpi/etc/mpd.conf
(11)创建主机名称集合文件etc/mpd.hosts
#vi mpd.hosts
文件内容如下:
Node1
Node2
Node3
Node4
2.5 测试
(1)本地测试
启动:
#mpd &
[1] 21055
观看启动机器:
#mpdtrace
node1
退出:
#mpdallexit
(2) 运行集群系统
#mpdboot -n 4 -f mpd.hosts
参数-n 4指定了要起动的机器个数,-f mpd.hosts指定了通过mpd.hosts运行
#mpdtrace
Node1
Node2
node3
node4
#mpdallexit
(3) 测试运行MPICH的圆周率的程序
在软件的安装包里有圆周率计算的原代码icpi.c,先编译成可执行文件
#cd /usr/local/mpich/install/examples/
mpicc icpi.c -o icpi
(4) 集群测试
#mpdboot -n 4 -f mpd.hosts 启动这四台机器
#mpiexec -n 4 /usr/local/mpich/install/examples/icpi
用num指定使用的进程数
Enter the number of intervals: (0 quits) 100000000
pi is approximately 3.1415926535901937, Error is 0.0000000000004006
wall clock time = 18.460739
Enter the number of intervals: (0 quits) 10000
pi is approximately 3.1415926544231239, Error is 0.0000000008333307
wall clock time = 0.022534
Enter the number of intervals: (0 quits) 0
#mpdallexit
(5) 单机测试
#cd /usr/local/mpich/install/examples/
#./icpi
Enter the number of intervals: (0 quits) 100000000
pi is approximately 3.1415926535902345, Error is 0.0000000000004414
wall clock time = 73.898167
Enter the number of intervals: (0 quits) 10000
pi is approximately 3.1415926544231341, Error is 0.0000000008333410
wall clock time = 0.010941
测试结果表明:在intervals的值设为100000000,既精确值比较大时,群集的4进程并发运行时间是18.460739秒,单机单进程运行时间是73.898167秒,明显快很多,并行运算还是很有效果的。在intervals的值设为10000,既精确值比较小时,群集的4进程并发运行时间是0.022534秒,单机单进程运行时间是0.010941秒,这是因为并行运算过程中,参与运算的机器需要通过网络传递一些消息,如果计算量不大的话,花在了这上面的时间影响会比较明显,因而反不如单机的来得快。

浙公网安备 33010602011771号