本教程在ubuntu18.04版本上执行成功,在ubuntu16.04上可能会遇到一些奇奇怪怪的错误
作者在ZorinOS(基于ubuntu18.04的ubuntu发行版)和deepin20.1(基于debian)两个环境上安装成功,理论上比较新的ubuntu应该都可以
-
安装gcc编译器
先执行源更新,以保证后面的软件可以被搜索
sudo apt update
安装gcc:
sudo apt install gcc
-
安装g++编译器
sudo apt install g++
-
安装gfortran编译器
sudo apt install gfortran
-
安装make工具
sudo apt install make
-
安装openmpi工具
sudo apt install mpi-*
-
安装openblas工具
sudo apt install libopenblas-*
-
查看mpi是否安装成功
which mpicc
which mpirun
which mpif77
若返回路径说明安装成功(作者我的是/usr/bin/mpicc,/usr/bin/mpirun,/usr/bin/mpif77,这个应该都一样),当三个都安装成功,才能开始下一步
-
下载hpl-2.3
http://www.netlib.org/benchmark/hpl/hpl-2.3.tar.gz
-
解压到你用户的主目录下:~/hpl-2.3(或者/home/你的用户名/hpl-2.3)
例如作者的用户名为yhc,那么就解压在/home/yhc/hpl-2.3
-
将~/hpl-2.3/setup/Make.Linux_PII_CBLAS 复制到~/hpl-2.3/ 下(复制到上一层)
-
将~/hpl-2.3/Make.Linux_PII_CBLAS重命名为Make.test
-
修改此文件的如下字段:
# ARCH内容要与刚刚重命名Make后的字段一致 ARCH = test # TOPdir填写你hpl的解压路径 TOPdir = $(HOME)/hpl-2.3 # MPdir填写openmpi的库文件夹,ZorinOS是在/usr/lib/x86_64-linux-gnu/openmpi,有的系统会在/usr/lib/openmpi # 找不到的话可以用全盘搜索 MPdir = /usr/lib/x86_64-linux-gnu/openmpi # MPlib填写libmpi链接库的路径,它在openmpi库文件夹的lib下(可以作为搜索openmpi的依据) MPlib = $(MPdir)/lib/libmpi.so # LAdir填写openblas的库文件路径 LAdir = /usr/lib/x86_64-linux-gnu/openblas # LAlib填写libblas静态库路径,它在openmpi库文件夹下(可以作为搜索openblas的依据) LAlib = $(LAdir)/libblas.a # CC填写C编译器路径(通过which mpicc查询路径),这里我们不用gcc,而是使用mpicc编译器 CC = /usr/bin/mpicc # CCFLAGS需要加一个-lpthread,表明编译时添加头文件 pthread.h(和线程有关) CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops -lpthread # LINKER填写连接器路径(which mpif77查询路径),这里使用mpif77连接器 LINKER = /usr/bin/mpif77
-
在~/hpl-2.3/下执行:
注意:arch=上面你重命名Make后的字段
make arch=test
-
等到执行完毕,到~/hpl-2.3/bin/test下可以看到两个文件HPL.dat和xhpl
-
执行下面的指令,测试是否安装成功
mpirun -np 4 ./xhpl > 1.txt
打开1.txt,是一份测试报告,里面含有一些GFLOPS之类的