GPAW is an open-source software package for various electronic structure simulations. GPAW is implemented as a combination of the Python and C programming languages. We discuss main features of GPAW's implementation and present performance results on various massively parallel supercomputers and on accelerator (GP-GPU, Xeon Phi coprocessor) based systems.
Electronic structure calculations are a widely used tool in materials science and are a large consumer of supercomputing resources. Traditionally, the software packages for these kinds of simulations have been implemented in compiled languages, where Fortran in its different versions has been the most popular choice. While dynamic Python can increase the efficiency of programmer, it cannot compete directly with the raw performance of compiled languages. However, by using Python together with compiled languages, it becomes possible to have most of the productivity enhancing features together with a good numerical performance. We have used this approach to implement the electronic structure simulation software GPAW. High-level algorithms are implemented in Python while main numerical kernels utilize high performance libraries (e.g., Numpy) or custom C extensions.
GPAW is used by hundreds of researchers on computer systems ranging from laptops to world largest supercomputers. With recent developments, GPAW can utilize also accelerators such as GP-GPUs and Intel Xeon Phi coprocessors with the help of the pyCUDA and pyMIC libraries. We present the main features of GPAW's implementation and discuss challenges that arise when using Python with tens of thousands of CPU cores. We present performance results on various massively parallel supercomputers and on accelerator-based systems.