Linpack测试方法
一.编译器
安装gcc。
二.并行环境MPI的建立(MPI的使用需要用到Python)
1.创建SSH信任连接(在root目录下)
(1)更改/etc/hosts文件
#vi /etc/hosts 打开hosts文件,更改如下:
127.0.0.1 localhost.localdomain localhost
node01的IP scc-m
node01的IP node01
node02的IP node02
node03的IP node03
node04的IP node04
具体实施:
127.0.0.1 localhost.localdomain localhost
202.117.49.128 scc-m
202.117.49.128 abc abc
202.117.49.129 xyz xyz
(2)在node01生成SSH秘钥对
#ssh-keygen -t rsa //一路回车即可产生.ssh文件
#ls -a 查看是否有.ssh文件夹
(3)进入.ssh目录
#cd .ssh
(4)生成authorized_keys文件
#cp id_rsa.pub authorized_keys
(5)退出到root目录
#cd ..
(6)建立本身的信任连接
#ssh node01 按提示输入yes(三个字母要打全)
(7)设置node02(node02的root目录下)
#ssh-keygen -t rsa 生成.ssh文件夹 //注意不要多键入空格
#scp node01的IP:/root/.ssh/* /root/.ssh 拷贝node01上的.ssh文件夹覆盖本地的
#scp node01的IP:/etc/hosts /etc/hosts 拷贝node01上的hosts文件覆盖本地的
#ssh node01 提示处输入yes回车
设置node03,node04的方法与node02相同
具体实施:
#scp 202.117.49.128:/root/.ssh/* /root/.ssh //注意不要多键入空格
#scp 202.117.49.128:/etc/hosts /etc/hosts
(8)确认四台机器的信任连接已建立
对每个节点执行:
#ssh node01
#ssh node02
#ssh node03
#ssh node04
在提示处输入yes回车,最后确定无需输入密码并且没有任何提示信息即可登陆("Last login:时间日期"提示信息除外)
2.安装MPICH2(在每个节点root目录下,而且所以节点上的目录一模一样)
(1)解压缩
#tar -zxvf mpich2-1.0.7.tar.gz
或者 #gunzip -c mpich2-1.0.7.tar.gz|tar xf mpich2-1.0.7.tar
(2)创建安装目录
#mkdir /usr/MPICH-instsll
(3)进入mpich2解压目录
#cd mpich2-1.0.7
(4)设置安装目录
#./configure --prefix=/usr/MPICH-install
(5)编译
#make
(6)安装
#make install
(7)退出到root目录
#cd ..
(8)通过编辑.bashrc文件修改环境变量
#vi .bashrc
修改后的.bashrc文件如下:
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
PATH="$PATH:/usr/MPICH-install/bin" 新增加的
#Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
(9)测试环境变量设置
#which mpd
#which mpicc
#which mpiexec
#which mpirun
(10)修改/etc/mpd.conf文件,内容为secretword=myword
#vi /etc/mpd.conf
设置文件读取权限和修改时间
#touch /etc/mpd.conf
#chmod 600 /etc/mpd.conf
(11)创建主机名称集合文件/root/mpd.hosts
#vi mpd.hosts
文件内容如下:
node01
node02
node03
node04
3.测试
(1)本地测试
#mpd & 启动
#mpdtrace 观看启动机器
#mpdallexit 退出
(2)通过mpd.hosts运行集群系统
#mpdboot -n number -f mpd.hosts number为要起动的机器个数
#mpdtrace
#mpdallexit
(3)测试运行MPICH的例子程序
#mpdboot -n 4 -f mpd.hosts 启动4台机器
#mpiexec -n number /usr/MPICH-install/examples/cpi number为使用的进程数
#mpdallexit
(4)如果测试不能通过,请进行第四步
4.问题解决
(1)通过mpdcheck获得一写帮助信息
#mpdcheck –pc
(2)查错
#mpdcheck -l
(3)通过mpd.hosts文件查错
#mpdcheck -f mpd.hosts 如果无错误
#mpdcheck -f mpd.hosts -ssh
(4)如果上述无错误,可略过此步
对任意两台机器进行查错
m1: #mpdcheck -s 输出主机名host和端口port
m2: #mpdcheck -c host port
注意:以上四步都是在没有运行mpd的情况下进行的
(5)mpd查错
m1: #mpd -e & 返回使用的端口
m2: #mpd -h m1 -p echoed_port_m1 &
三.BLAS的安装
1.下载blas.tar和cblas.tar 。需要先安装blas,后安装cblas。
2. blas.tar解压缩后直接make,生成blas_LINUX.a静态库。
3. cblas.tar解压缩后,选择MakeFile.LINUX作为配置文件,另存为或者链接为MakeFile.inc。修改MakeFile.inc中的配置:
BLLIB 和 CBDIR 的路径。
第一个是 blas_LINUX.a 所在的路径。
BLLIB = /*/blas_LINUX.a
第二个是 CBLAS 解压的存放路径。
CBDIR = /*/CBLAS
最后执行make all,在/*/CBLAS/lib/LINUX里面生成cblas_LINUX.a
4. 我们所关注的就是这两个.a库文件的链接路径。
四.HPL的安装、编译与运行
1.从http://www.netlib.org/benchmark/hpl/software.html下载"hpl.tgz";
2.tar -xzvf hpl.tar //创建一个"hpl"目录
3.进入/hpl/setup目录,选择一个合适的make文件“Make.Linux_PII_CBLAS”,并将其拷贝到/hpl目录下
4.修改该文件
ARCH = Linux_PII_CBLAS //必须与文件名Make.
中的一致
TOPdir = /usr/local/hpl //指明hpl程序的源文件目录
MPdir = /usr/MPICH-install //指明MPI的安装目录
LAdir = /*/BLAS //BLAS或VSIPL库所在目录
LAlib = /*/CBLAS/lib/LINUX/cblas_LINUX.a /*/BLAS/blas_LINUX.a (注意这两个库链接的先后顺序)
CC = /usr/local/mpich2/bin/mpicc
CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops –lpthread //CC的配置
LINKER = /usr/local/mpich2/bin/mpif77
5.编译
make arch=Linux_PII_CBLAS
6.运行
(1)修改配置文件/usr/local/hpl/bin/Linux_PII_CBLAS/HPL.dat
仅修改了第4行,使之将结果输出至HPL.out
(2)运行
好像必须在/usr/local/hpl/bin/Linux_PII_CBLAS下执行
mpirun –np 4 /usr/local/hpl/bin/Linux_PII_CBLAS/xhpl //使用相对路径时居然不行?
(3)查看结果
vi HPL.out
************************************************************************
以下是附加的步骤三、四,更新了GotoBlas数学库和hpl2.0来进行LinPack测试
************************************************************************
附加三. GotoBlas的安装
1. 下载gotoBlas.tar.gz。我这里采用的是GotoBLAS-1.26.tar.gz
2. 解压缩,进入目录,根据你的机器是32位还是64位来执行
./quickbuild.32bit
3. 编辑Makefile.rule(我基本没有更改);更改getarch.c里面的archtecture,使之符合自己的机器
4. 执行 make
5. cd exports 执行make so (我的这一步没用通过,不过貌似不影响后面使用)
6. 生成一堆 .o .so .a文件,后面HPL用到的是libgoto.a和libgoto_penrynp-r1.26.a
附加四:hpl2.0的安装
1. 下载源码,解压缩
2. 进入目录,由于建立一个“Make.Linux_PII_GOTO”的文件,源码中没有这个类型现成的make文件,复制“Make.Linux_PII_CBLAS”中的内容到其中。
3. 主要修改以下几项:
ARCH = Linux_PII_GOTO //必须与文件名Make.中的一致
LAdir = /*/GOTOBLAS //GOTOBLAS库所在目录
LAlib = /*/ GOTOBLAS /libgoto_penrynp-r1.26.a /*/ GOTOBLAS /libgoto.a (注意这两个库链接的先后顺序)
4. 编译
make arch=Linux_PII_GOTO
5. 运行