This is an effort in SURF Open Innovation Lab for open and flexible benchmarking effort for experimental computing architectures. We will be using Reframe, a regression testing framework for HPC systems from CSCS for this purpose.
The set of tests are meant to be the minimal set of benchmarks to understand performance characteristics at the node level. It can help identify specific bottlenecks and make the way for more specialised
benchmarking and testing. These tests are itself complete in a sense that, compilation, execution and extraction of performance numbers are automated once the programming environment and paths are set properly.
Currently, the following applications benchmarks are included.
- HPL (High Performance LinPack)
- HPCG (High Performance Conjugate Gradient)s
- Stream (Memory Bandwidth test)
- Gromacs (Molecular Dynamics)
- Tensorflow-gpu (Deep Learning)
- Isogeometric Analysis (Advanced Finite Element Analysis)
- Quantum circuits simulation on classical computers (Coming Soon)
In Future we plan to integrate more library oriented benchmarks for CPUs and GPUs
- FFTW
- MKL
- BLIS
- ScaLapack
Basically there are three simple steps to run the benchmarks
- Setup the programming environment.
- Install the libraries.
- Change the configuration files and run / design the tests depending on number of CPU cores.
- C/ C++ Compiler (GCC, Intel, Clang)
- MPI Implementation available (OpenMPI, IntelMPI, MPICH and Mvapich)
- CUDA (Optional)
- CMake (Version 3.12 or above)
- OpenBLAS Implementation (GCC OpenBLAS, MKL)
The Reframe
scripts and configration files work with python and they try to emulate submission of job via a resource manager on a supercomputer (e.g SLURM) or local job submission. The test and configuration files are itself meant to be scalable and easy for extension.
There are few environment variable which needs to be specified before running the test in the config file.
ROOTOPENMPI
: Installation directory of MPI library.ROOTOPENBLAS
: Installation directory of OpenBLAS.CUDAHOME
: Installation directory of CUDA.LD_LIBRARY_PATH
: to make libraries available in the path while executing the application.
- Make a virtual environment with Python >= 3.5.
- git clone this repository
- Activate the virtual environment
- pip install reframe-hpc
reframe --config-file /path/to/configuration/file --checkpath /path/to/tests --recursive -r --performance-report --exec-policy async --system <name of your system> -t <name of the tag if any> --partition <your logical partition>
Please navigate to end of the video to see the results.
The benchmark work on the following three systems.
- Cartesius nodes (Dutch National Supercomputer)
- Intelinx (Experimental system with GPU + FPGA, at SURFsara, Amsterdam)
- EPYDIA (Experimental system at University of Amsterdam : EPYC Naples + NVIDIA GPUs)
If you would like to include your test or have any questions regarding the usage or inclusion of the test please do not hesitate to contact us :
Sagar dolas (sagar.dolas@surfsara.nl)
Project Lead and HPC Adviser - SURF