LinPack安装
在安装之前,我们需要做一些软件准备
- Linux 平台,最新稳定内核的Linux 发行版最佳,可以选择 Red hat, Centos 等。
- MPICH2,这是并行计算的软件
- Gotoblas, BLAS库(Basic Linear Algebra Subprograms)是执行向量和矩阵运算的子程序集合,这里我们选择公认性能最好的 Gotoblas
- HPL,LinPack 测试的软件
安装方法和步骤如下:
安装 MPICH2,并配置好环境变量 下载
安装包所在的目录下,运行
tar xzvf mpich-x.x.x.tgz切换到解压出来的包目录下
cd mpich-x.x.xconfigure 配置编译环境,我这里为它选择了一个安装路径。
./configure --prefix=/usr/local/mpich-x.x.x注: 这里可能会有一些出错提示,缺少编辑器啥的,按需求确认安装 C、C++、F77 和 F90 编译器即可
安装
makemake install可能还需要添加环境变量,设置用户权限等等,大概就像下面这样。不同的Linux系统不一样,不要照抄呀。参考参考就行。其实主要就是你要扒拉到你的安装文件夹下,看哪些文件夹比较重要的,要想办法添加到PATH中去。
配置 MPICH 环境变量
注: 根据需要来判断这步是否需要进行,不同的 Linux 系统不一样,不要照抄,下文仅供参考,主要是找到你的安装文件夹,找到比较重要的文件夹,添加到 PATH 中。
具体操作流程:
打开 /etc/profile,在文件倒数第三行输入:
PATH=$PATH:/usr/local/mpich-x.x.x/binMANPATH=$MANPATH:/usr/local/mpich-x.x.x/manexport PATH MANPATH执行命令:
source /etc/profile
至此,Linux 下 MPI 环境配置完成了。接下来可以来使用这个接口了。
在解压出来的 MPI 安装目录下有个 examples 文件夹,里面有若干示例程序可供测试。
编译测试
使用
cd命令切换到示例程序文件夹下,使用mpicc hellow.c -o hellow进行编译。运行测试
mpirun -np N ./hellow说明:*这里的 N 改成一个常数,表示你要用来运行这个并行程序的节点。当然,如果不是在集群环境上,你一个CPU就一个节点,进程数也就是一个最多,本地机子默认的编号就是0。你N的不同无异于就是把程序跑N遍而已。
另外:节点之间传递消息,一般要先认证身份,每次传递都要认证身份比较麻烦。所以,可以搞一个“通行证”一样的东西,使得传递消息变得更加便捷。 示例命令行代码如下:
ssh-keygen -t dsacp id˙dsa.pub authorized˙keyschmod go-rwx authorized˙keysssh-agent $SHELLssh-add
如何理解并行计算的计算流程呢?
我是这样想的。按并行的方式写一段并行的程序,然后在集群环境里主机上运行apirun的时候指定需要的进程数。接着,计算机在集群环境下尽可能找到对应的节点,分配进程任务并给他们编号。此后,将程序拷贝一份给每一个节点,每个节点在这个共同的工作中都担任着一份角色。接着,他们就按程序中设计的方式,各自运行着由自己编号决定的自己的那一段代码,相互之间进行通讯,最后共同完成这项任务。那么,不同节点程序进行有早晚,如何保证协调一致有序进行呢?比如说,你可以等呀,可以找个地方先寄存一下你给别人的消息之类的。这就涉及到了MPI通讯的阻塞型和非阻塞型通讯模式。
最后一步:进入 Linux 系统,建议使用 root 用户,在 /root 下建立 LinPack 文件夹,
解压下载的 Gotoblas 和 HPL 文件到 LinPack 文件夹下, 名为Gotoblas 和 hpl。
tar xvf GotoBLAS-*.tar.gz
mv GotoBLAS-* ~/linpack/Gotoblas
tar xvf hpl-*.tar.gz
mv hpl-* ~/linpack/hpl
安装 Gotoblas 下载
进入 Gotoblas 文件夹,在终端下执行
./quickbuild.64bit(如果你是32位系统,则执行./quickbuild.31bit) 进行快速安装,当然,你也可以依据 README 里的介绍自定义安装。如果安装正常,在本目录下就会生成 libgoto2.a 和 libgoto2.so 两个文件。注:若出现如下错误:
../kernel/x86_64/gemm_ncopy_4.S:192: Error: undefined symbol`RPREFETCHSIZE' in operation
或者类似的:leaving directory ...GotoBLAS2/kernel
则执行:
gmake cleanmake BINARY=64 TARGET=NEHALEM出现以上错误的原因为:cpu 太新,配置文件不识别,需要重新指定一下CPU类型。
安装完成后会有版本信息:
GotoBLAS build complete.
OS ... Linux
Architecture ... x86
BINARY ... 32bit
C compiler ... GCC (command line : gcc)
Fortran compiler ... GFORTRAN (command line : gfortran)
Library Name ... libgoto2_nehalemp-r-r1.13.a (Multi threaded; Max num-threads is 2)
安装 HPL 下载
在 hpl-2.2 安装路径下的 setup 文件夹下提取与自己平台相近的 Make.arch 文件,复制到 hpl-2.2 文件夹内,比如我们的平台为 Intel xeon ,所以就选择了 Make.Linux_PII_FBLAS,它代表 Linux 操作系统、PII平台、采用 FBLAS库。
复制文件
cp hpl-2.2/setup/Make.Linux_ATHLON_FBLAS ../Make.test编辑刚刚复制的文件,根据说明修改各个选项,使之符合自己的系统,比如我们系统的详细情况为,Intel xeon 平台,MPICH2 安装目录为 /usr/local/mipch2 , hpl 和 Gotoblas安装目录为 /root/LinPack,下面是我们的配置文件Make.Linux_xeon,对需要修改的部分我们做了注解,可以参考修改,一定不要照抄,否则会出现错误:
注解:
如果选用 atlas 数学库,则用 libatlas.a 和 libblas.a 库文件。 如果是在 AMD CPU 上,则用 arch=Linux_ATHLON_CBLAS
主要修改如下:
``` vi /###/hpl-2.0/Makefile
修改arch与Make.test的ARCH相同
TOPdir = /###/hpl/hpl-2.0
修改为拷贝后的Make. Linux_ATHLON_CBLAS文件所在位置,即hpc-2.0根目录。
MPdir = /###/mpich-3.2.1
MPinc = -I$(MPdir)/include
MPlib = $(MPdir)/lib##/libmpich.a
修改为mpi路径、库路径、头文件路径。
LAdir = /###/GotoBLAS2
LAlib = (LAdir)/lib/libcblas.a (LAdir)/lib/libatlas.a
或者LAlib = (LAdir)/lib/libgoto2.a (LAdir)/lib/libgoto2.so
修改为atlas的库路径及库文件路径。
CC = /###/mpich-3.2.1/bin/mpicc
LINKER = /###/mpich-3.2.1/bin/mpicc
修改位mpi的执行路径,如果LINKER是f77,则用mpif77。
修改后保存
$make arch= Linux_ATHLON_CBLAS
完成后在bin目录的Linux_ATHLON_CBLAS下面将产生测试文件HPL.dat和xhpl
在lib目录的Linux_ATHLON_CBLAS下面将产生库文件libhpl
```
运行小测试
cd到 hpl 的 bin/test 目录下mpirun –np 4 ./xhpl