GPU-based acceleration of free energy calculations in solid state physics - Januszewski, Michał; Ptok, Andrzej; Crivelli, Dawid; Gardas, Bartłomiej (Computer physics communications, 2015)
Obtaining a thermodynamically accurate phase diagram through numerical calculations is a computationally expensive problem that is crucially important to understanding the complex phenomena of solid state physics, such as superconductivity. In this work we show how this type of analysis can be significantly accelerated through the use of modern GPUs. We illustrate this with a concrete example of free energy calculation in multi-band iron-based superconductors, known to exhibit a superconducting state with oscillating order parameter (OP). Our approach can also be used for classical BCS-type superconductors. With a customized algorithm and compiler tuning we are able to achieve a 19×speedup compared to the CPU (119×compared to a single CPU core), reducing calculation time from minutes to mere seconds, enabling the analysis of larger systems and the elimination of finite size effects. Program title: Free_Energy Catalogue identifier: AEVX_v1_0 Program summary URL:http://cpc.cs.qub.ac.uk/summaries/AEVX_v1_0.html Program obtainable from: CPC Program Library, Queen’s University, Belfast, N. Ireland Licensing provisions: GNU Lesser General Public License, version 3 No. of lines in distributed program, including test data, etc.: 786 No. of bytes in distributed program, including test data, etc.: 6304 Distribution format: tar.gz Programming language: Fortran, CUDA C. Computer: Any with a CUDA-compliant GPU. Operating system: No limits (tested on Linux). RAM: Typically tens of megabytes. Classification: 7, 6.5. Nature of problem: GPU-accelerated free energy calculations in multi-band iron-based superconductor models. Solution method: Parallel parameter space search for a global minimum of free energy. Unusual features: The same core algorithm is implemented in Fortran with OpenMP and OpenACC compiler annotations, as well as in CUDA C. The original Fortran implementation targets the CPU architecture, while the CUDA C version is hand-optimized for modern GPUs. Running time: Problem-dependent, up to several seconds for a single value of momentum and a linear lattice size on the order of 103