HPC Challenge Benchmark compile CentOS 8

Posted by Pavlo Khmel on Sun 09 February 2020

Follow the steps below to compile and run HPC Challenge Benchmark on CentOS 8.

Download and unarchive source code:

yum --enablerepo=PowerTools install atlas-devel blas-devel mpich-devel gcc make
curl -O http://icl.cs.utk.edu/projectsfiles/hpcc/download/hpcc-1.5.0.tar.gz
tar -xzf hpcc-1.5.0.tar.gz
cd hpcc-1.5.0

Create file ./hpl/Make.Linux_gcc

SHELL = /bin/sh
CD = cd
CP = cp
LN_S = ln -fs
MKDIR = mkdir -p
RM = /bin/rm -f
TOUCH = touch
ARCH = Linux_gcc
TOPdir = /root/hpcc-1.5.0/hpl
INCdir = $(TOPdir)/include
BINdir = $(TOPdir)/bin/$(ARCH)
LIBdir = $(TOPdir)/lib/$(ARCH)
HPLlib = $(LIBdir)/libhpl.a 
MPdir = /usr/lib64/mpich/
MPinc = -I/usr/include/mpich-x86_64
MPlib = /usr/lib64/mpich/lib/libmpi.so
LAdir = /usr/lib64/atlas
LAinc = -I/usr/include
LAlib = -L/usr/lib64/atlas -lblas
F2CDEFS =
HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(LAinc) $(MPinc)
HPL_LIBS = $(HPLlib) $(LAlib) $(MPlib)
#HPL_OPTS = -DHPL_CALL_CBLAS
HPL_DEFS = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES)
CC = /usr/bin/gcc
CCNOOPT = $(HPL_DEFS)
CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops
LINKER = /usr/bin/gfortran
LINKFLAGS = $(CCFLAGS)
ARCHIVER = ar
ARFLAGS = r
RANLIB = echo

Compile:

make arch=Linux_gcc

Tune HPL data file hpccinf.txt. You can start by using this online generator as example:

https://www.advancedclustering.com/act_kb/tune-hpl-dat-file/

Example below is for 1 node with 8 cores, 48G memory and block size 256.

Create file ./hpccinf.txt

HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out      output file name (if any) 
6            device out (6=stdout,7=stderr,file)
1            # of problems sizes (N)
70656         Ns
1            # of NBs
256           NBs
0            PMAP process mapping (0=Row-,1=Column-major)
1            # of process grids (P x Q)
2            Ps
4            Qs
16.0         threshold
1            # of panel fact
2            PFACTs (0=left, 1=Crout, 2=Right)
1            # of recursive stopping criterium
4            NBMINs (>= 1)
1            # of panels in recursion
2            NDIVs
1            # of recursive panel fact.
1            RFACTs (0=left, 1=Crout, 2=Right)
1            # of broadcast
1            BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1            # of lookahead depth
1            DEPTHs (>=0)
2            SWAP (0=bin-exch,1=long,2=mix)
64           swapping threshold
0            L1 in (0=transposed,1=no-transposed) form
0            U  in (0=transposed,1=no-transposed) form
1            Equilibration (0=no,1=yes)
8            memory alignment in double (> 0)
##### This line (no. 32) is ignored (it serves as a separator). ######
0                               Number of additional problem sizes for PTRANS
1200 10000 30000                values of N
0                               number of additional blocking sizes for PTRANS
40 9 8 13 13 20 16 32 64        values of NB

Run

LD_PRELOAD=/usr/lib64/mpich/lib/libmpi.so.12 /usr/lib64/mpich/bin/mpirun -np 8 ./hpcc

Benchmark output will be in the file hpccoutf.txt