Skip to content

From OpenACC to OpenMP5 GPU Offloading: Performance Evaluation on NAS Parallel Benchmarks

License

Notifications You must be signed in to change notification settings

Scientific-Computing-Lab/OpenACC-to-OpenMP5-for-NPB

Repository files navigation

OpenACC-to-OpenMP5-for-NPB

From OpenACC to OpenMP5 GPU Offloading: Performance Evaluation on NAS Parallel Benchmarks

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).


Repository Contents

1. openacc-npb-saturator

2. intel-application-migration-tool-for-openacc-to-openmp

3. openacc-npb-saturator-transformed-intel-migration

  • 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

4. openacc-npb-saturator-transformed-intel-migration-final

  • 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

About

From OpenACC to OpenMP5 GPU Offloading: Performance Evaluation on NAS Parallel Benchmarks

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published