Skip to content

Standards ​

The specifications behind FUNDAL's two backends, and where to read about the compilers.

OpenACC ​

FUNDAL's OpenACC backend uses the runtime routines acc_malloc, acc_free, acc_memcpy_to_device, acc_memcpy_from_device (bound directly to their C interface), the device queries acc_get_num_devices, acc_get_device_num, acc_set_device_num, acc_get_device_type, acc_get_property, acc_get_property_string, acc_init, and the deviceptr, present, enter data/exit data and update constructs. They are all in the 3.x specifications.

VersionDateLink
3.4Jun 2025OpenACC 3.4
3.3Nov 2022local copy, openacc.org
allopenacc.org/specification

Further reading: the OpenACC Programming and Best Practices Guide, the NVIDIA HPC compilers user's guide, OpenACC in GCC.

OpenMP ​

FUNDAL's OpenMP backend uses omp_target_alloc, omp_target_free, omp_target_memcpy, the device routines omp_get_num_devices, omp_get_default_device, omp_set_default_device, omp_get_initial_device, and the target teams distribute parallel do, has_device_addr (OpenMP 5.1), target enter data/exit data and target update constructs.

VersionDateLink
6.0Nov 2024OpenMP 6.0
5.2Nov 2021local copy, openmp.org
allopenmp.org/specifications

Further reading: the OpenMP reference guides, the Intel OpenMP offload guide, the ROCm documentation.

Compilers ​

CompilerFUNDAL backendCOMPILER_* macrofobos templates
NVIDIA nvfortranOpenACCCOMPILER_NVFtemplate-nvf, template-oac-nvf
GNU gfortranOpenACCCOMPILER_GNUtemplate-gnu, template-oac-gnu
Intel ifxOpenMP offloadnonetemplate-ifx, template-omp-ifx
AMD amdflangOpenMP offload (with DEV_HIP)nonetemplate-amd, template-omp-amd

Only these combinations have build modes. nvfortran and gfortran also implement OpenMP offload, and other compilers (Cray, for example) OpenACC, but FUNDAL defines no macros or build modes for them: an OpenACC build needs COMPILER_NVF or COMPILER_GNU (see Macros). Support for each specification version changes with every compiler release: check the release notes of your compiler.