There are a number of new directions for GPU acceleration coming our way, with multiple vendors now stepping into the GPUs-for-HPC arena.
Here’s a few options that are currently available for GPU acceleration in Fortran :
Directive based approaches
OpenACC : Supported by PGI, Flang, and GNU compilers (mileage varies with each). Does anyone know the story of AMD GPU support for OpenACC implementations ?
OpenMP 5.0 : AMD’s llvm fork has OpenMP 5.0 support for Nvidia and AMD GPUs https://github.com/ROCm-Developer-Tools/llvm-project
Kernel Based Approaches
CUDA-Fortran : PGI Compilers only, Nvidia GPUs only
hipfort : C-Fortran Interface for HIP, AMD and Nvidia GPUs
FortranCL : C-Fortran Interface for a number of common OpenCL routines. It’s not clear it’s supported anymore, but its out there.
I’m curious to know how this community wants program GPUs and what your pro’s and con’s are for current implementations available.