下面只有第二题的教学,适用于各届超算比赛

参加比赛主要为了水个奖,顺便带好朋友拿个凭证方便保研,于是临时组了一个小队伍,感谢蔡zx,朱yn,赵yf,李jh在比赛期间的付出,最后也是如愿拿了个国二吧,算是圆满结束

总的来说,这个比赛想拿奖并不难,我们组认真搞的时间也就五六天,期间也是要上课什么的,大部分程序和文章都是晚上写的,最后一两天也是熬大夜了。要冲刺国一进线下的话,还是得要认真花时间搞,因为里面的一些题很花时间,需要租服务器去跑,搭环境也很折磨,更别说自己改代码调试了

还要感谢一个中石油的素未蒙面的好兄弟哈,找他要他们当时的proposal免费给我们了,这里也我们组也一致同意把我们的proposal放在互联网供大家参考吧(虽然是一坨屎),如果能帮到大家那最好啦

Linpack之HPL测试

安装HPL之前需要的配置

1.GCC/Fortran编译器

$ sudo yum install gcc
$ sudo yum install gcc-gfortran

2.BLAS/CBLAS库

  1. 在 home 目录下创建文件夹,并切换:mkdir ~/prepare && cd ~/prepare
  2. 下载 blas-3.8.0.tgz:wget http://www.netlib.org/blas/blas-3.8.0.tgz
  3. 解压包:tar -xzf blas-3.8.0.tgz
  4. 切换目录:cd BLAS-3.8.0
  5. 编译生成 blas_LINUX.a:make
  6. 链接 .o 文件生成 libblas.a 文件:ar rv libblas.a *.o
  7. 切换到 prepare 目录:cd ~/prepare
  8. 下载 cblas.tgz:wget http://www.netlib.org/blas/blast-forum/cblas.tgz
  9. 解压包:tar -xzf cblas.tgz
  10. 切换目录:cd CBLAS
  11. 将第 5 步产生的 .a 文件拷贝到当前目录:cp ~/prepare/BLAS-3.8.0/blas_LINUX.a ./
  12. 修改 Makefile.in 文件中的 BLLIB:vim Makefile.in

BLLIB = ~/prepare/BLAS-3.8.0/blas_LINUX.a

编译:make
测试运行:./testing/xzcblat1

如若在make时遇到如下问题

修改源代码:

CALL STEST1(SNRM2TEST(N,SX,INCX),STEMP(1),STEMP,SFAC)
CALL STEST1(SASUMTEST(N,SX,INCX),STEMP(1),STEMP,SFAC)

3.MPICH并行环境

  1. 切换目录:cd /home/prepare
  2. 下载 mpich-3.2.1.tar.gz:wget http://www.mpich.org/static/downloads/3.2.1/mpich-3.2.1.tar.gz
  3. 解压安装包:tar -xzf mpich-3.2.1.tar.gz
  4. 切换到主目录:cd mpich-3.2.1
  5. 设置安装路径:./configure (此处可能会遇到错误)
  6. 编译:make
  7. 安装:sudo make install
  8. 查看前面工作是否成功:which mpicc && which mpiexec
  9. 创建目录:mkdir machinefile
  10. 测试运行:mpiexec -f machinefile -n 3 hostname && mpiexec -n 5 -f machinefile ./examples/cpi

在./configure时遇到错误configure: error: The Fortran compiler gfortran will not compile files that call the same routine with arguments of different types.

export FFLAGS="-fallow-argument-mismatch"
export FCFLAGS="-fallow-argument-mismatch"

在./configure时遇到错误configure: error: Aborting because C++ compiler does not work. If you do not need a C++ compiler, configure with --disable-cxx

yum install gcc gcc-c++

最终测试结果如下显示,即为成功

HPL测试

  1. 切换目录:cd ~/prepare
  2. 复制文件:sudo cp CBLAS/lib/* /usr/local/lib
  3. 复制文件:sudo cp BLAS-3.8.0/blas_LINUX.a /usr/local/lib
  4. 下载 hpl-2.3.tar.gz:wget http://www.netlib.org/benchmark/hpl/hpl-2.3.tar.gz
  5. 解压包:tar -xzf hpl-2.3.tar.gz
  6. 切换目录:cd hpl-2.3
  7. 复制文件:cp setup/Make.Linux_PII_CBLAS ./
  8. 复制文件:sudo cp include/* /usr/local/include
  9. 打开 Make.top 文件:vim Make.top,做如下修改:
arch = Linux_PII_CBLAS

打开 Makefile 文件:vim Makefile,做如下修改:

arch = Linux_PII_CBLAS

打开 Make.Linux_PII_CBLAS 文件:vim Make.Linux_PII_CBLAS,做如下修改:

ARCH         = Linux_PII_CBLAS

TOPdir       = ~/prepare/hpl-2.3

MPdir        = /usr/local
MPlib        = $(MPdir)/lib/libmpich.so

LAdir        = /usr/local/lib
LAlib        = $(LAdir)/cblas_LINUX.a $(LAdir)/blas_LINUX.a

CC           = /usr/local/bin/mpicc

LINKER       = /usr/local/bin/mpif77
  1. 编译:make arch=Linux_PII_CBLAS
  2. 运行测试:
    • cd bin/Linux_PII_CBLAS
    • mpirun -np 4 ./xhpl > HPL-Benchmark.txt
  3. 查看结果:

Linpack之HPCG测试

  1. 切换目录:mkdir ~/prepare && cd ~/prepare
  2. 下载 HPCG:git clone https://github.com/hpcg-benchmark/hpcg.git
  3. cd 到 setup:cd hpcg/setup
  4. 修改 Make.Linux_MPI:vim Make.Linux_MPI
MPdir        = /usr/local

CXX          = /usr/local/bin/mpicxx
  1. 创建 build 文件夹:mkdir build && cd build
  2. 设置安装环境:../../configure Linux_MPI
  3. 开始安装:make
  4. 运行测试:cd bin && mpirun -np 8 ./xhpcg

最终测试结果如下


人生苦难处,正是修行时