Personal computer installation: Difference between revisions

From VASP Wiki
No edit summary
No edit summary
Line 38: Line 38:
===Building VASP 6.3.0 on Debian 11.3===
===Building VASP 6.3.0 on Debian 11.3===
-----
-----
First, we need to make sure that the [[Installing_VASP.6.X.X#Requirements|prerequisites]] for building {{VASP}} are met. Here, we install the following compiler and libraries from the system's package manager:
{| class="wikitable" style="text-align: center;
{| class="wikitable" style="text-align: center;
|-
|-
Line 58: Line 59:
|}
|}


Please install required software packages with the package manager:
These packages can be installed directly from the command line like this:


  sudo apt install make build-essential rsync g++ gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev
  sudo apt install make build-essential rsync g++ gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev


Change into the {{VASP}} directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:
Next, unpack the {{VASP}} source code to a location of your choice. Then change into the {{VASP}} base directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:


  cp arch/makefile.include.gnu_omp makefile.include
  cp arch/makefile.include.gnu_omp makefile.include
Line 104: Line 105:
===Building VASP 6.3.0 on Ubuntu 20.04===
===Building VASP 6.3.0 on Ubuntu 20.04===
-----
-----
First, we need to make sure that the [[Installing_VASP.6.X.X#Requirements|prerequisites]] for building {{VASP}} are met. Here, we install the following compiler and libraries from the system's package manager:
{| class="wikitable" style="text-align: center;
{| class="wikitable" style="text-align: center;
|-
|-
Line 124: Line 126:
|}
|}


Please install the required software packages with the package manager:
These packages can be installed directly from the command line like this:


  sudo apt install make build-essential g++ gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev
  sudo apt install make build-essential g++ gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev


Change into the {{VASP}} directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:
Next, unpack the {{VASP}} source code to a location of your choice. Then change into the {{VASP}} base directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:


  cp arch/makefile.include.gnu_omp makefile.include
  cp arch/makefile.include.gnu_omp makefile.include
Line 171: Line 173:
===Building VASP 6.3.0 on Ubuntu 22.04===
===Building VASP 6.3.0 on Ubuntu 22.04===
-----
-----
First, we need to make sure that the [[Installing_VASP.6.X.X#Requirements|prerequisites]] for building {{VASP}} are met. Here, we install the following compiler and libraries from the system's package manager:
{| class="wikitable" style="text-align: center;
{| class="wikitable" style="text-align: center;
|-
|-
Line 191: Line 194:
|}
|}


Please install the required software packages with the package manager:
These packages can be installed directly from the command line like this:


  sudo apt install make build-essential g++ gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev
  sudo apt install make build-essential g++ gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev


Change into the {{VASP}} directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:
Next, unpack the {{VASP}} source code to a location of your choice. Then change into the {{VASP}} base directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:


  cp arch/makefile.include.gnu_omp makefile.include
  cp arch/makefile.include.gnu_omp makefile.include
Line 237: Line 240:
===Building VASP 6.3.0 on Fedora 35===
===Building VASP 6.3.0 on Fedora 35===
-----
-----
First, we need to make sure that the [[Installing_VASP.6.X.X#Requirements|prerequisites]] for building {{VASP}} are met. Here, we install the following compiler and libraries from the system's package manager:
{| class="wikitable" style="text-align: center;
{| class="wikitable" style="text-align: center;
|-
|-
Line 257: Line 261:
|}
|}


Please install the required software packages with the package manager:
These packages can be installed directly from the command line like this:


  sudo yum install gcc gcc-c++ gcc-gfortran openblas-devel openmpi-devel scalapack-openmpi-devel fftw-devel hdf5-openmpi-devel
  sudo yum install gcc gcc-c++ gcc-gfortran openblas-devel openmpi-devel scalapack-openmpi-devel fftw-devel hdf5-openmpi-devel
Line 270: Line 274:
  source ~/.bashrc
  source ~/.bashrc


Change into the {{VASP}} directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:
Next, unpack the {{VASP}} source code to a location of your choice. Then change into the {{VASP}} base directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:


  cp arch/makefile.include.gnu_omp makefile.include
  cp arch/makefile.include.gnu_omp makefile.include
Line 312: Line 316:
===Building VASP 6.3.0 on Rocky Linux 8.5===
===Building VASP 6.3.0 on Rocky Linux 8.5===
-----
-----
Please install the required software packages with the package manager. First, some packages are available from the default package sources:
First, we need to make sure that the [[Installing_VASP.6.X.X#Requirements|prerequisites]] for building {{VASP}} are met. Here, we install the following compiler and libraries from the system's package manager:
 
Some of these packages are available from the default package sources:


  sudo dnf install openmpi-devel fftw-devel
  sudo dnf install openmpi-devel fftw-devel
Line 335: Line 341:
  source ~/.bashrc
  source ~/.bashrc
{{NB|mind|As long as the path <code>/opt/rh/gcc-toolset-11/root/bin/</code> is in the <code>PATH</code> variable the system's default compiler binaries (<code>gcc</code>, <code>g++</code>, <code>gfortran</code>,...) are "hidden" behind the newer ones.}}
{{NB|mind|As long as the path <code>/opt/rh/gcc-toolset-11/root/bin/</code> is in the <code>PATH</code> variable the system's default compiler binaries (<code>gcc</code>, <code>g++</code>, <code>gfortran</code>,...) are "hidden" behind the newer ones.}}
Change into the {{VASP}} directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:
Next, unpack the {{VASP}} source code to a location of your choice. Then change into the {{VASP}} base directory and use the <code>arch/makefile.include.gnu_omp</code> template as basis for the <code>[[makefile.include]]</code>:


  cp arch/makefile.include.gnu_omp makefile.include
  cp arch/makefile.include.gnu_omp makefile.include

Revision as of 08:41, 28 April 2022

Here you will find instructions on how to install VASP on some widely-used Linux distributions. For the sake of simplicity the suggested build processes rely as much as possible on compilers and libraries provided by the operating system's package manager. The focus is on minimizing the effort to obtain working VASP binaries with only little changes required to the provided makefile.include templates in the arch directory.

Warning: These short and convenient installation instructions may come at the cost of performance. They are not optimized with respect to compilers, libraries and hardware. Please consider benchmarking and optimizing your build process prior to large-scale production runs.

In order to verify each build we run the FAST category tests of the testsuite.

Tip: All build instructions presented here include HDF5 support to allow post-processing of results with py4vasp.


Debian

Building VASP 6.3.0 on Debian 11.3


First, we need to make sure that the prerequisites for building VASP are met. Here, we install the following compiler and libraries from the system's package manager:

Compiler MPI FFT BLAS LAPACK ScaLAPACK HDF5 Known issues
gcc-10.2.1 openmpi-4.1.0 fftw-3.3.8 openblas-0.3.13 netlib-scalapack-2.1.0 hdf5-1.10.6 Memory-leak[1]

These packages can be installed directly from the command line like this:

sudo apt install make build-essential rsync g++ gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev

Next, unpack the VASP source code to a location of your choice. Then change into the VASP base directory and use the arch/makefile.include.gnu_omp template as basis for the makefile.include:

cp arch/makefile.include.gnu_omp makefile.include

Search for the paragraph in makefile.include starting with ## Customize as of this point! and apply the following changes below:

  • Comment out the OPENBLAS_ROOT variable (not needed) and set BLASPACK:
  • # BLAS and LAPACK (mandatory)
    #OPENBLAS_ROOT ?= /path/to/your/openblas/installation
    BLASPACK    = -lopenblas
  • Comment out the SCALAPACK_ROOT variable (not needed) and set SCALAPACK:
  • # scaLAPACK (mandatory)
    #SCALAPACK_ROOT ?= /path/to/your/scalapack/installation
    SCALAPACK   = -lscalapack-openmpi
  • Comment out the FFTW_ROOT variable (not needed). Set LLIBS and INCS in the FFTW section:
  • # FFTW (mandatory)
    #FFTW_ROOT  ?= /path/to/your/fftw/installation
    LLIBS      += -lfftw3 -lfftw3_omp
    INCS       += -I/usr/include
  • Enable HDF5 support by adding -DVASP_HDF5 to the CPP_OPTIONS variable. Leave HDF5_ROOT variable commented out (not needed). Set LLIBS and INCS in the HDF5 section:
  • # HDF5-support (optional but strongly recommended)
    CPP_OPTIONS+= -DVASP_HDF5
    #HDF5_ROOT  ?= /path/to/your/hdf5/installation
    LLIBS      += -L/usr/lib/x86_64-linux-gnu/hdf5/openmpi/ -lhdf5_fortran
    INCS       += -I/usr/include/hdf5/openmpi/

Save your makefile.include and compile VASP:

make DEPS=1 -j

Once the build process is complete the binaries are located in the VASP bin subfolder. They were compiled with OpenMP threading support. Before running VASP please always check if the OMP_NUM_THREADS environment variable is set according to your needs. For example, if you require only pure MPI parallelization without OpenMP threading add

export OMP_NUM_THREADS=1

in your ~/.bashrc file.

Ubuntu

Building VASP 6.3.0 on Ubuntu 20.04


First, we need to make sure that the prerequisites for building VASP are met. Here, we install the following compiler and libraries from the system's package manager:

Compiler MPI FFT BLAS LAPACK ScaLAPACK HDF5 Known issues
gcc-9.4.0 openmpi-4.0.3 fftw-3.3.8 openblas-0.3.8 netlib-scalapack-2.1.0 hdf5-1.10.4 -

These packages can be installed directly from the command line like this:

sudo apt install make build-essential g++ gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev

Next, unpack the VASP source code to a location of your choice. Then change into the VASP base directory and use the arch/makefile.include.gnu_omp template as basis for the makefile.include:

cp arch/makefile.include.gnu_omp makefile.include

Search for the paragraph in makefile.include starting with ## Customize as of this point! and apply the following changes below:

  • Comment out the line adding -fallow-argument-mismatch to the variable FFLAGS:
  • # For gcc-10 and higher (comment out for older versions)
    #FFLAGS     += -fallow-argument-mismatch
  • Comment out the OPENBLAS_ROOT variable (not needed) and set BLASPACK:
  • # BLAS and LAPACK (mandatory)
    #OPENBLAS_ROOT ?= /path/to/your/openblas/installation
    BLASPACK    = -lopenblas
  • Comment out the SCALAPACK_ROOT variable (not needed) and set SCALAPACK:
  • # scaLAPACK (mandatory)
    #SCALAPACK_ROOT ?= /path/to/your/scalapack/installation
    SCALAPACK   = -lscalapack-openmpi
  • Comment out the FFTW_ROOT variable (not needed). Set LLIBS and INCS in the FFTW section:
  • # FFTW (mandatory)
    #FFTW_ROOT  ?= /path/to/your/fftw/installation
    LLIBS      += -lfftw3 -lfftw3_omp
    INCS       += -I/usr/include
  • Enable HDF5 support by adding -DVASP_HDF5 to the CPP_OPTIONS variable. Leave HDF5_ROOT variable commented out (not needed). Set LLIBS and INCS in the HDF5 section:
  • # HDF5-support (optional but strongly recommended)
    CPP_OPTIONS+= -DVASP_HDF5
    #HDF5_ROOT  ?= /path/to/your/hdf5/installation
    LLIBS      += -L/usr/lib/x86_64-linux-gnu/hdf5/openmpi/ -lhdf5_fortran
    INCS       += -I/usr/include/hdf5/openmpi/

Save your makefile.include and compile VASP:

make DEPS=1 -j

Once the build process is complete the binaries are located in the VASP bin subfolder. They were compiled with OpenMP threading support. Before running VASP please always check if the OMP_NUM_THREADS environment variable is set according to your needs. For example, if you require only pure MPI parallelization without OpenMP threading add

export OMP_NUM_THREADS=1

in your ~/.bashrc file.

Building VASP 6.3.0 on Ubuntu 22.04


First, we need to make sure that the prerequisites for building VASP are met. Here, we install the following compiler and libraries from the system's package manager:

Compiler MPI FFT BLAS LAPACK ScaLAPACK HDF5 Known issues
gcc-11.2.0 openmpi-4.1.2 fftw-3.3.8 openblas-0.3.20 netlib-scalapack-2.1.0 hdf5-1.10.7 -

These packages can be installed directly from the command line like this:

sudo apt install make build-essential g++ gfortran libopenblas-dev libopenmpi-dev libscalapack-openmpi-dev libfftw3-dev libhdf5-openmpi-dev

Next, unpack the VASP source code to a location of your choice. Then change into the VASP base directory and use the arch/makefile.include.gnu_omp template as basis for the makefile.include:

cp arch/makefile.include.gnu_omp makefile.include

Search for the paragraph in makefile.include starting with ## Customize as of this point! and apply the following changes below:

  • Comment out the OPENBLAS_ROOT variable (not needed) and set BLASPACK:
  • # BLAS and LAPACK (mandatory)
    #OPENBLAS_ROOT ?= /path/to/your/openblas/installation
    BLASPACK    = -lopenblas
  • Comment out the SCALAPACK_ROOT variable (not needed) and set SCALAPACK:
  • # scaLAPACK (mandatory)
    #SCALAPACK_ROOT ?= /path/to/your/scalapack/installation
    SCALAPACK   = -lscalapack-openmpi
  • Comment out the FFTW_ROOT variable (not needed). Set LLIBS and INCS in the FFTW section:
  • # FFTW (mandatory)
    #FFTW_ROOT  ?= /path/to/your/fftw/installation
    LLIBS      += -lfftw3 -lfftw3_omp
    INCS       += -I/usr/include
  • Enable HDF5 support by adding -DVASP_HDF5 to the CPP_OPTIONS variable. Leave HDF5_ROOT variable commented out (not needed). Set LLIBS and INCS in the HDF5 section:
  • # HDF5-support (optional but strongly recommended)
    CPP_OPTIONS+= -DVASP_HDF5
    #HDF5_ROOT  ?= /path/to/your/hdf5/installation
    LLIBS      += -L/usr/lib/x86_64-linux-gnu/hdf5/openmpi/ -lhdf5_fortran
    INCS       += -I/usr/include/hdf5/openmpi/

Save your makefile.include and compile VASP:

make DEPS=1 -j

Once the build process is complete the binaries are located in the VASP bin subfolder. They were compiled with OpenMP threading support. Before running VASP please always check if the OMP_NUM_THREADS environment variable is set according to your needs. For example, if you require only pure MPI parallelization without OpenMP threading add

export OMP_NUM_THREADS=1

in your ~/.bashrc file.

Fedora

Building VASP 6.3.0 on Fedora 35


First, we need to make sure that the prerequisites for building VASP are met. Here, we install the following compiler and libraries from the system's package manager:

Compiler MPI FFT BLAS LAPACK ScaLAPACK HDF5 Known issues
gcc-11.2.1 openmpi-4.1.1 fftw-3.3.8 openblas-0.3.19 netlib-scalapack-2.1.0 hdf5-1.10.7 Memory-leak[1]

These packages can be installed directly from the command line like this:

sudo yum install gcc gcc-c++ gcc-gfortran openblas-devel openmpi-devel scalapack-openmpi-devel fftw-devel hdf5-openmpi-devel

Add the following lines to your .bashrc file located in your home directory:

export PATH=${PATH}:/usr/lib64/openmpi/bin/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib64/openmpi/lib

and either open a new shell or run this command to activate the lines above:

source ~/.bashrc

Next, unpack the VASP source code to a location of your choice. Then change into the VASP base directory and use the arch/makefile.include.gnu_omp template as basis for the makefile.include:

cp arch/makefile.include.gnu_omp makefile.include

Search for the paragraph in makefile.include starting with ## Customize as of this point! and apply the following changes below:

  • Comment out the OPENBLAS_ROOT variable (not needed) and set BLASPACK:
  • # BLAS and LAPACK (mandatory)
    #OPENBLAS_ROOT ?= /path/to/your/openblas/installation
    BLASPACK    = -lopenblas
  • Comment out the SCALAPACK_ROOT variable (not needed) and set SCALAPACK:
  • # scaLAPACK (mandatory)
    #SCALAPACK_ROOT ?= /path/to/your/scalapack/installation
    SCALAPACK   = -lscalapack
  • Comment out the FFTW_ROOT variable (not needed). Set LLIBS and INCS in the FFTW section:
  • # FFTW (mandatory)
    #FFTW_ROOT  ?= /path/to/your/fftw/installation
    LLIBS      += -lfftw3 -lfftw3_omp
    INCS       += -I/usr/include
  • Enable HDF5 support by adding -DVASP_HDF5 to the CPP_OPTIONS variable. Leave HDF5_ROOT variable commented out (not needed). Set LLIBS and INCS in the HDF5 section:
  • # HDF5-support (optional but strongly recommended)
    CPP_OPTIONS+= -DVASP_HDF5
    #HDF5_ROOT  ?= /path/to/your/hdf5/installation
    LLIBS      += -lhdf5_fortran
    INCS       += -I/usr/lib64/gfortran/modules/openmpi/

Save your makefile.include and compile VASP:

make DEPS=1 -j

Once the build process is complete the binaries are located in the VASP bin subfolder. They were compiled with OpenMP threading support. Before running VASP please always check if the OMP_NUM_THREADS environment variable is set according to your needs. For example, if you require only pure MPI parallelization without OpenMP threading add

export OMP_NUM_THREADS=1

in your ~/.bashrc file.

Rocky Linux

Building VASP 6.3.0 on Rocky Linux 8.5


First, we need to make sure that the prerequisites for building VASP are met. Here, we install the following compiler and libraries from the system's package manager:

Some of these packages are available from the default package sources:

sudo dnf install openmpi-devel fftw-devel

Unfortunately the GCC version 8.5 provided by default is not suitable for compiling VASP. As an alternative we can use a newer version from the EPEL repositories:

sudo dnf install epel-release
sudo dnf install gcc-toolset-11-gcc gcc-toolset-11-gcc-c++ gcc-toolset-11-gcc-gfortran

Furthermore, some required libraries are available within the "PowerTools" repositories:

sudo dnf install dnf-plugins-core
sudo dnf config-manager --set-enabled powertools
sudo dnf install lapack-devel openblas-devel scalapack-openmpi-devel hdf5-openmpi-devel

Add the following lines to your .bashrc file located in your home directory:

export PATH=/opt/rh/gcc-toolset-11/root/bin/:/usr/lib64/openmpi/bin/:${PATH}

and either open a new shell or run this command to activate the lines above:

source ~/.bashrc
Mind: As long as the path /opt/rh/gcc-toolset-11/root/bin/ is in the PATH variable the system's default compiler binaries (gcc, g++, gfortran,...) are "hidden" behind the newer ones.

Next, unpack the VASP source code to a location of your choice. Then change into the VASP base directory and use the arch/makefile.include.gnu_omp template as basis for the makefile.include:

cp arch/makefile.include.gnu_omp makefile.include

Search for the paragraph in makefile.include starting with ## Customize as of this point! and apply the following changes below:

  • Comment out the OPENBLAS_ROOT variable (not needed) and set BLASPACK:
  • # BLAS and LAPACK (mandatory)
    #OPENBLAS_ROOT ?= /path/to/your/openblas/installation
    BLASPACK    = -lopenblas
  • Comment out the SCALAPACK_ROOT variable (not needed) and set SCALAPACK:
  • # scaLAPACK (mandatory)
    #SCALAPACK_ROOT ?= /path/to/your/scalapack/installation
    SCALAPACK   = -lscalapack
  • Comment out the FFTW_ROOT variable (not needed). Set LLIBS and INCS in the FFTW section:
  • # FFTW (mandatory)
    #FFTW_ROOT  ?= /path/to/your/fftw/installation
    LLIBS      += -lfftw3 -lfftw3_omp
    INCS       += -I/usr/include
  • Enable HDF5 support by adding -DVASP_HDF5 to the CPP_OPTIONS variable. Leave HDF5_ROOT variable commented out (not needed). Set LLIBS and INCS in the HDF5 section:
  • # HDF5-support (optional but strongly recommended)
    CPP_OPTIONS+= -DVASP_HDF5
    #HDF5_ROOT  ?= /path/to/your/hdf5/installation
    LLIBS      += -lhdf5_fortran
    INCS       += -I/usr/lib64/gfortran/modules/openmpi/

Save your makefile.include and compile VASP:

make DEPS=1 -j

Once the build process is complete the binaries are located in the VASP bin subfolder. They were compiled with OpenMP threading support. Before running VASP please always check if the OMP_NUM_THREADS environment variable is set according to your needs. For example, if you require only pure MPI parallelization without OpenMP threading add

export OMP_NUM_THREADS=1

in your ~/.bashrc file.

Footnotes and references

  1. a b A bug in OpenMPI versions 4.0.4-4.1.1 causes a memory leak in some ScaLAPACK calls. This mainly affects long molecular-dynamics runs. This issue is fixed as of openmpi-4.1.2.