This repository contains the OpenACC NPB3.3 source from https://github.com/khaki3/acc-saturator and the translated OpenMP5 version of these benchmarks, as the main result of this work. The translation was primarily achieved using the Intel Application Migration Tool for OpenACC to OpenMP (Intel Technical Article, GitHub Repository).
- Source code of the OpenACC NPB3.3 implementation, as presented in https://github.com/khaki3/acc-saturator.
- The Intel Application Migration Tool for OpenACC to OpenMP (Intel Technical Article, GitHub Repository).
- The result of applying the Intel migration tool to each file in the
openacc-npb-saturator
repository. - Translation Process The Intel migration tool was applied to each source file using the following command:
intel-application-migration-tool-for-openacc-to-openmp -overwrite-input -suppress-openacc file.c
- Note: The
config/make.def
file was manually modified to support the compilation of OpenMP directives, particularly for oneAPI and NVHPC compilers:
# Intel compiler for Intel spir64
ifeq ($(CCC), icx-pvc)
CC = icx
CFLAGS = -O3 -fp-model fast -fno-alias -fiopenmp -fopenmp-targets=spir64 -mcmodel=medium -Wl,--no-relax
CLINK = icx
CLINKFLAGS = -O3 -fp-model fast -fno-alias -fiopenmp -fopenmp-targets=spir64 -mcmodel=medium -Wl,--no-relax
UCC = icx
endif
# NVIDIA compiler for NVIDIA A100
ifeq ($(CCC), pgcc-a100)
CC = pgcc
CFLAGS = -mp=gpu -gpu=cc80 -Minfo=accel -Msafeptr -O3 -mcmodel=medium -I/usr/src/kernels/4.18.0-553.5.1.el8_10.x86_64/include
CLINK = $(CC)
CLINKFLAGS = -mp=gpu -gpu=cc80 -Minfo=accel -Msafeptr -O3 -mcmodel=medium -I/usr/src/kernels/4.18.0-553.5.1.el8_10.x86_64/include
UCC = pgcc
endif
- The OpenMP5 NPB version after some manual modifications to ensure the compliance to NVIDIA and Intel compilers&GPUs, and ensure the correctness in both systems.
- The directory Manual_Changes_diff contains the documentation of the manual changes (were produced with vimdiff).
To compile and execute a benchmark (for example BT, class C, on NVIDIA A100 GPU, with NVHPC compiler):
cd openacc-npb-saturator-transformed-intel-migration-final/BT/BT
CCC=pgcc-a100 make CLASS=C
ulimit -s unlimited
./bt.C.x