RMG (program)

RMG (Real Space MultiGrid) is an open source density functional theory electronic structure code distributed under the GNU General Public License. It solves Kohn-Sham equations directly on a 3D real space grid without using basis set functions. RMG is highly scalable; it has been run on supercomputers with thousands of CPU cores.

RMG
Stable release
2.0
Written inC/C++
Operating systemLinux, Unix, Windows, OS X
LicenseGPL
Websitehttp://www.rmgdft.org/

Description

RMG's main feature is that it uses real-space mesh as a basis, rather plane waves or other types of basis set functions. This formulation lends itself to a straightforward parallelization, because each processor can be assigned a region of space. This avoids the need for Fourier transforms, and makes RMG highly scalable. The multigrid method is used to solve Poisson equation and to accelerate convergence. Mehrstellen discretization, which is shorter ranged than the commonly used than central difference discretization, is used to represent the kinetic energy operator. This decreases the cost of processor-to-processor communication, which is advantageous for the use on massively parallel supercomputers.

Domain decomposition is used to assign different regions of space to individual CPU cores or nodes. RMG scales nearly linearly up to 100k processor cores and 20k GPUs on Cray XK6.

RMG was originally developed in 1993–1994 at North Carolina State University. It was written in C with small parts being in FORTRAN. The current version uses a mixture of C and C++. MPI is used for inter-node communication and C++11 threads for intra-node parallelization. Other libraries used are Lapack, ScaLAPACK, FFTW, libxc and spglib.

RMG runs on laptops, desktops, workstations, clusters or supercomputers. It can run on Linux, Unix, Windows and Mac OS X operating systems.

gollark: <@184468521042968577> I fail to see why you'd want that horrible type unsafety.
gollark: <@237328509234708481> I shall write a paper on potatOS.
gollark: Also, half the packages use native libraries which sometimes fail to build, and most stuff produces cryptic errors if it breaks.
gollark: Also, the whole 2/3 split.
gollark: The fact that you need to create an entire virtual environment to manage packages is kind of bad.

See also

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.