Building HPCG with Arm Compiler

Overview Before you begin Procedure Related information


How to build HPCG with Arm Compiler for HPC.

HPCG complements the High-Performance LINPACK (HPL) benchmark. It applies computational and data access patterns that emulate the patterns of real HPC applications.

The version of the code that is used here is optimized to enable parallelism with OpenMP during the ComputeSYMGS stage using two different techniques:

  • Multi-level task dependency graph with data structure reordering.
  • Block multicoloring data structure reordering, and block interleaving to enable vectorization.

The first technique is used on the finest level of the HPCG grid, and the second is used for the coarser levels. 

In addition, the ComputeSPMV, ComputeDotProduct, and ComputeWAXPBY kernels now benefit by calling Arm Performance Libraries (define HPCG_USE_{SPMV,DDOT,WAXPBY}_ARMPL at compilation time):

Minor optimizations have also been applied to these kernels, such as loop unrolling, in the absence of Arm Performance Libraries.

The following components are used in this build:

 Component Form
 HPCG (including optimizations) https://gitlab.com/arm-hpc/benchmarks/hpcg (use tag: SC18)
 Arm Compiler for HPC
 Version 19.1
 Open MPI
 Linux distribution
 RHEL 7.5
 Cavium ThunderX2

Recipes for other versions of the application are available in the GitLab Packages Wiki.