一、HPL介紹
高性能計算--HPC(High performance computing), 通常指使用很多處理器或集群中的幾台計算機的系統。高性能集群上運行的程序一般使用並行算法,把一個大的問題根據一定的規則切分為許多小的子問題,在集群中的不同節點上進行計算,而這些小問題的處理結果,經過處理可合並為原問題的最終結果。由於這些小問題的計算是並行完成的,所以可以縮短問題的處理時間。
HPL(High Performance Linpack)是並行計算集群的測試工具,通過調整測試文件中的矩陣大小、CPU數量等測試參數,執行HPL測試程序來獲取機器的最佳性能,衡量結果是浮點運算/秒(Flops),可以並行對單個處理器或分布式處理器進行基准測試。
編譯HPL需要兩個庫,一個是MPI 庫,另一個是BLAS(Basic Linear Algebra Subprograms)或VSIPL(Vector Signal Image Processing Library),可以從HPL 主頁相關鏈接下載后編譯。
二、HPL安裝
1、安裝編譯器(GCC和GFortran)
# yum install -y gcc gcc-c++ gcc-gfortran glibc glibc-devel make
2、安裝MPI
# yum install -y mpich-3.2-devel mpich-3.2
3、安裝OpenBLAS (向量和矩陣運算庫函數)
# wget https://github.com/xianyi/OpenBLAS/archive/v0.3.9.tar.gz -O OpenBLAS-0.3.9.tgz # tar zxvf OpenBLAS-0.3.9.tar.gz # cd OpenBLAS-0.3.9 # make CC=gcc FC=gfortran # make PREFIX=/usr/local/openblas install
4、下載並解壓HPL
# wget https://www.netlib.org/benchmark/hpl/hpl-2.3.tar.gz # tar -xzvf hpl-2.3.tar.gz # cd hpl-2.3 # cp setup/Make.Linux_PII_CBLAS ./
5、編輯Make.Linux_PII_CBLAS文件
# vim Make.Linux_PII_CBLAS SHELL = /bin/sh CD = cd CP = cp LN_S = ln -s MKDIR = mkdir RM = /bin/rm -f TOUCH = touch ARCH = Linux_PII_CBLAS TOPdir = /usr/local/hpl-2.3 INCdir = $(TOPdir)/include BINdir = $(TOPdir)/bin/$(ARCH) LIBdir = $(TOPdir)/lib/$(ARCH) HPLlib = $(LIBdir)/libhpl.a MPdir = /usr/lib64/mpich-3.2 MPinc = -I$(MPdir)/include MPlib = $(MPdir)/lib/libmpi.so LAdir = /usr/local/openblas LAinc = LAlib = $(LAdir)/lib/libopenblas.a F2CDEFS = HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(LAinc) $(MPinc) -lpthread HPL_LIBS = $(HPLlib) $(LAlib) $(MPlib) -lpthread HPL_OPTS = -DHPL_CALL_CBLAS HPL_DEFS = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES) CC = /usr/lib64/mpich-3.2/bin/mpicc CCNOOPT = $(HPL_DEFS) CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops LINKER = /usr/lib64/mpich-3.2/bin/mpif77 LINKFLAGS = $(CCFLAGS) ARCHIVER = ar ARFLAGS = r RANLIB = echo
6、編譯HPL
# make arch=Linux_PII_CBLAS
7、測試HPL
# cd ./hpl-2.3/bin/Linux_PII_CBLAS # /usr/lib64/mpich-3.2/bin/mpirun -np 4 ./xhpl > HPL-Benchmark.txt
HPL.dat文件參考如下
https://www.advancedclustering.com/act_kb/tune-hpl-dat-file
mpirun的np值要等於HPL.dat的(P x Q)值
多節點並行測試
# mpirun -np 8 --host node1,node2 ./xhpl > HPL-Benchmark.txt