Skip to content

GPU support in Abinit

IMPORTANT: GPU support is currently highly EXPERIMENTAL and should be used by experienced developers only.

Since April 2024, a new GPU implementation of ABINIT has become available. A new user manual for ABINIT on GPU is currently being written and will be made available soon. In the meantime, you may refer to the description of the gpu_option variable for guidance, as entry point.

The previous implementation from 2013 (based on cuda/magma) is now obsolete. However, it remains available for testing purposes only.

To use ABINIT with GPUs, two distinct programming models are available: - OpenMP offload Available for mostly all ground-state properties (DFPT is ongoing). LOBPCGand Chebyshev filtering iterative eigensolvers available (see wfoptalg). - cuda+Kokkos+YAKL Available only for the calculation of the ground-state total energy, using the LOBPCG algorithm.

To utilize either of these programming models, it is essential to compile ABINIT with specific configurations by enabling the relevant options during the setup stage and selecting the correct value for the input parameter gpu_option.

If you wish to conduct tests on a CPU+GPU computing architecture, you can look to the three (at present) example configuration files for inspiration, corresponding to three different tested installations. They are available in the directory doc/build of the package, and also available from https://github.com/abinit/abinit/tree/master/doc/build . Simply adapt them to suit your specific CPU+GPU hardware/software:

  • Architecture 1 CPU: AMD Milan EPYC 7763 GPU: Nvidia A100 SXM4 80 Go Programming model: openMP offload Compilers: Nvidia HPC compilers Libraries: MKL, Cuda

  • Architecture 2 CPU: AMD Milan EPYC 7543 GPU: Nvidia A100 SXM4 80 Go Programming model: openMP offload Compilers: Nvidia HPC compilers Libraries: MKL, Cuda

  • Architecture 3 CPU: AMD Trendo EPYC 7A53 GPU: AMD Instinct MI250X 64 GB Programming model: openMP offload Compilers: CRAY Libraries: FTTW3, libSCI, HIP+ROCm