LinPack安装

在安装之前,我们需要做一些软件准备
  • Linux 平台,最新稳定内核的Linux 发行版最佳,可以选择 Red hat, Centos 等。
  • MPICH2,这是并行计算的软件
  • Gotoblas, BLAS库(Basic Linear Algebra Subprograms)是执行向量和矩阵运算的子程序集合,这里我们选择公认性能最好的 Gotoblas
  • HPL,LinPack 测试的软件
安装方法和步骤如下:

安装 MPICH2,并配置好环境变量 下载

  1. 安装包所在的目录下,运行

    tar xzvf mpich-x.x.x.tgz

  2. 切换到解压出来的包目录下

    cd mpich-x.x.x

  3. configure 配置编译环境,我这里为它选择了一个安装路径。

    ./configure --prefix=/usr/local/mpich-x.x.x

    注: 这里可能会有一些出错提示,缺少编辑器啥的,按需求确认安装 C、C++、F77 和 F90 编译器即可

  4. 安装

    make

    make install

  5. 可能还需要添加环境变量,设置用户权限等等,大概就像下面这样。不同的Linux系统不一样,不要照抄呀。参考参考就行。其实主要就是你要扒拉到你的安装文件夹下,看哪些文件夹比较重要的,要想办法添加到PATH中去。

  6. 配置 MPICH 环境变量

    注: 根据需要来判断这步是否需要进行,不同的 Linux 系统不一样,不要照抄,下文仅供参考,主要是找到你的安装文件夹,找到比较重要的文件夹,添加到 PATH 中。

    具体操作流程:

    • 打开 /etc/profile,在文件倒数第三行输入:

      PATH=$PATH:/usr/local/mpich-x.x.x/bin

      MANPATH=$MANPATH:/usr/local/mpich-x.x.x/man

      export PATH MANPATH

    • 执行命令:

      source /etc/profile

  7. 至此,Linux 下 MPI 环境配置完成了。接下来可以来使用这个接口了。

  8. 在解压出来的 MPI 安装目录下有个 examples 文件夹,里面有若干示例程序可供测试。

    • 编译测试

      使用cd命令切换到示例程序文件夹下,使用mpicc hellow.c -o hellow进行编译。

    • 运行测试

      mpirun -np N ./hellow

      说明:*这里的 N 改成一个常数,表示你要用来运行这个并行程序的节点。当然,如果不是在集群环境上,你一个CPU就一个节点,进程数也就是一个最多,本地机子默认的编号就是0。你N的不同无异于就是把程序跑N遍而已。

    另外:节点之间传递消息,一般要先认证身份,每次传递都要认证身份比较麻烦。所以,可以搞一个“通行证”一样的东西,使得传递消息变得更加便捷。 示例命令行代码如下:

    ssh-keygen -t dsa

    cp id˙dsa.pub authorized˙keys

    chmod go-rwx authorized˙keys

    ssh-agent $SHELL

    ssh-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 下载

  1. 进入 Gotoblas 文件夹,在终端下执行 ./quickbuild.64bit (如果你是32位系统,则执行 ./quickbuild.31bit ) 进行快速安装,当然,你也可以依据 README 里的介绍自定义安装。如果安装正常,在本目录下就会生成 libgoto2.alibgoto2.so 两个文件。

    注:若出现如下错误:

    ../kernel/x86_64/gemm_ncopy_4.S:192: Error: undefined symbol`RPREFETCHSIZE' in operation

    或者类似的:leaving directory ...GotoBLAS2/kernel

    则执行:

    gmake clean make BINARY=64 TARGET=NEHALEM

    出现以上错误的原因为:cpu 太新,配置文件不识别,需要重新指定一下CPU类型。

  2. 安装完成后会有版本信息:

    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 下载

  1. 在 hpl-2.2 安装路径下的 setup 文件夹下提取与自己平台相近的 Make.arch 文件,复制到 hpl-2.2 文件夹内,比如我们的平台为 Intel xeon ,所以就选择了 Make.Linux_PII_FBLAS,它代表 Linux 操作系统、PII平台、采用 FBLAS库。

  2. 复制文件

    cp hpl-2.2/setup/Make.Linux_ATHLON_FBLAS ../Make.test

  3. 编辑刚刚复制的文件,根据说明修改各个选项,使之符合自己的系统,比如我们系统的详细情况为,Intel xeon 平台,MPICH2 安装目录为 /usr/local/mipch2 , hpl 和 Gotoblas安装目录为 /root/LinPack,下面是我们的配置文件Make.Linux_xeon,对需要修改的部分我们做了注解,可以参考修改,一定不要照抄,否则会出现错误:

    注解:

    如果选用 atlas 数学库,则用 libatlas.alibblas.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

```

  1. 运行小测试

    cd 到 hpl 的 bin/test 目录下

    mpirun –np 4 ./xhpl

至此,任务完成

results matching ""

    No results matching ""