Installing applications
This section provides some instructions for installing and compiling some common applications on Anvil.VASP
The Vienna Ab initio Simulation Package (VASP) is a computer program for atomic scale materials modelling, e.g. electronic structure calculations and quantum-mechanical molecular dynamics, from first principles.
Link to section 'VASP License' of 'VASP' VASP License
The VASP team allows only registered users who have purchased their own license to use the software and access is only given to the VASP release which is covered by the license of the respective research group. For those who are interested to use VASP on Anvil, please send a ticket to ACCESS Help Desk to request access and provide your license for our verification. Once confirmed, the approved users will be given access to the vasp5
or vasp6
unix groups.
Please note, the license from Materials Design Inc is not accepted at this moment since we cannot verify the license information. If you hold a VASP license from Materials Design Inc, please check our user guide about build your own VASP below.
Prospective users can use the command below to check their unix groups on the system.
$ id $USER
If you are interested to purchase and get a VASP license, please visit VASP website for more information.
Link to section 'VASP 5 and VASP 6 Installations' of 'VASP' VASP 5 and VASP 6 Installations
The Anvil team provides VASP 5.4.4 and VASP 6.3.0 installations and modulefiles with our default environment compiler gcc/11.2.0
and mpi library openmpi/4.1.6
. Note that only license-approved users can load the VASP modulefile as below.
You can use the VASP 5.4.4 module by:
$ module load gcc/11.2.0 openmpi/4.1.6
$ module load vasp/5.4.4.pl2
You can use the VASP 6.3.0 module by:
$ module load gcc/11.2.0 openmpi/4.1.6
$ module load vasp/6.3.0
Once a VASP module is loaded, you can choose one of the VASP executables to run your code: vasp_std
, vasp_gam
, and vasp_ncl
.
The VASP pseudopotential files are not provided on Anvil, you may need to bring your own POTCAR files.
Here is an example of submit script for VASP simulations on Anvil.Link to section 'Build your own VASP 5 and VASP 6' of 'VASP' Build your own VASP 5 and VASP 6
If you would like to use your own VASP on Anvil, please follow the instructions for Installing VASP.6.X.X and Installing VASP.5.X.X.
In the following sections, we provide some instructions about how to install VASP 5 and VASP 6 on Anvil and also the installation scripts:
Build your own VASP 5
For VASP 5.X.X version, VASP provide several templates of makefile.include
in the /arch
folder, which contain information such as precompiler options, compiler options, and how to link libraries. You can pick up one based on your system and preferred features . Here we provide some examples about how to install the vasp.5.4.4.pl2.tgz
version on Anvil with different module environments. We also prepared two versions of VASP5 installation scripts at the end of this page.
Link to section 'Step 1: Download' of 'Build your own VASP 5' Step 1: Download
As a license holder, you can download the source code of VASP from the VASP Portal, we will not check your license in this case.
Copy the VASP resource file vasp.5.4.4.pl2.tgz
to the desired location, and unzip the file tar zxvf vasp.5.4.4.pl2.tgz
to obtain the folder /path/to/vasp-build-folder/vasp.5.4.4.pl2
and reveal its content.
Link to section 'Step 2: Prepare makefile.include' of 'Build your own VASP 5' Step 2: Prepare makefile.include
-
For GNU compilers parallelized using OpenMPI, combined with MKL
We modified the
makefile.include.linux_gnu
file to adapt the Anvil system. Download it to your VASP build folder/path/to/vasp-build-folder/vasp.5.4.4.pl2
:$ cd /path/to/vasp-build-folder/vasp.5.4.4.pl2 $ wget https://www.rcac.purdue.edu/files/knowledge/compile/src/makefile.include.linux_gnu $ cp makefile.include.linux_gnu makefile.include
If you would like to include the Wannier90 interface, you may also need to include the following lines to the end of your
makefile.include
file:# For the interface to Wannier90 (optional) LLIBS += $(WANNIER90_HOME)/libwannier.a
Load the required modules:
$ module purge $ module load gcc/11.2.0 openmpi/4.1.6 $ module load intel-mkl # If you would like to include the Wannier90 interface, also load the following module: # $ module load wannier90/3.1.0
-
For Intel compilers parallelized using IMPI, combined with MKL
Copy the
makefile.include.linux_intel
templet from the/arch
folder to your VASP build folder/path/to/vasp-build-folder/vasp.5.4.4.pl2
:$ cd /path/to/vasp-build-folder/vasp.5.4.4.pl2 $ cp arch/makefile.include.linux_intel makefile.include
For better performance, you may add the following line to the end of your
makefile.include
file (above the GPU section):FFLAGS += -march=core-avx2
If you would like to include the Wannier90 interface, you may also need to include the following lines to the end of your
makefile.include
file (above the GPU section):# For the interface to Wannier90 (optional) LLIBS += $(WANNIER90_HOME)/libwannier.a
Load the required modules:
$ module purge $ module load intel/19.0.5.281 impi/2019.5.281 $ module load intel-mkl # If you would like to include the Wannier90 interface, also load this module: # $ module load wannier90/3.1.0
Link to section 'Step 3: Make' of 'Build your own VASP 5' Step 3: Make
Build VASP with command make all
to install all three executables vasp_std
, vasp_gam
, and vasp_ncl
or use make std
to install only the vasp_std
executable. Use make veryclean
to remove the build folder if you would like to start over the installation process.
Link to section 'Step 4: Test' of 'Build your own VASP 5' Step 4: Test
You can open an Interactive session to test the installed VASP, you may bring your own VASP test files:
$ cd /path/to/vasp-test-folder/
$ module purge
$ module load gcc/11.2.0 openmpi/4.1.6 intel-mkl
# If you included the Wannier90 interface, also load this module:
# $ module load wannier90/3.1.0
$ mpirun /path/to/vasp-build-folder/vasp.5.4.4.pl2/bin/vasp_std
Link to section ' ' of 'Build your own VASP 5'
Build your own VASP 6
For VASP 6.X.X version, VASP provide several templates of makefile.include
, which contain information such as precompiler options, compiler options, and how to link libraries. You can pick up one based on your system and preferred features . Here we provide some examples about how to install vasp 6.3.0
on Anvil with different module environments. We also prepared two versions of VASP6 installation scripts at the end of this page.
Link to section 'Step 1: Download' of 'Build your own VASP 6' Step 1: Download
As a license holder, you can download the source code of VASP from the VASP Portal, we will not check your license in this case.
Copy the VASP resource file vasp.6.3.0.tgz
to the desired location, and unzip the file tar zxvf vasp.6.3.0.tgz
to obtain the folder /path/to/vasp-build-folder/vasp.6.3.0
and reveal its content.
Link to section 'Step 2: Prepare makefile.include' of 'Build your own VASP 6' Step 2: Prepare makefile.include
-
For GNU compilers parallelized using OpenMPI + OpenMP, combined with MKL
We modified the
makefile.include.gnu_ompi_mkl_omp
file to adapt the Anvil system. Download it to your VASP build folder/path/to/vasp-build-folder/vasp.6.3.0
:$ cd /path/to/vasp-build-folder/vasp.6.3.0 $ wget https://www.rcac.purdue.edu/files/knowledge/compile/src/makefile.include.gnu_ompi_mkl_omp $ cp makefile.include.gnu_ompi_mkl_omp makefile.include
If you would like to include the Wannier90 interface, you may also need to include the following lines to the end of your
makefile.include
file:# For the VASP-2-Wannier90 interface (optional) CPP_OPTIONS += -DVASP2WANNIER90 WANNIER90_ROOT ?=$(WANNIER90_HOME) LLIBS += -L$(WANNIER90_ROOT) -lwannier
Then, load the required modules:
$ module purge $ module load gcc/11.2.0 openmpi/4.1.6 $ module load intel-mkl hdf5 # If you would like to include the Wannier90 interface, also load the following module: # $ module load wannier90/3.1.0
-
For Intel compilers parallelized using IMPI + OpenMP, combined with MKL
We modified the
makefile.include.intel_omp
file to adapt the Anvil system. Download it to your VASP build folder/path/to/vasp-build-folder/vasp.6.3.0
:$ cd /path/to/vasp-build-folder/vasp.6.3.0 $ wget https://www.rcac.purdue.edu/files/knowledge/compile/src/makefile.include.intel_omp $ cp makefile.include.intel_omp makefile.include
If you would like to include the Wannier90 interface, you may also need to include the following lines to the end of your
makefile.include
file:# For the VASP-2-Wannier90 interface (optional) CPP_OPTIONS += -DVASP2WANNIER90 WANNIER90_ROOT ?=$(WANNIER90_HOME) LLIBS += -L$(WANNIER90_ROOT) -lwannier
Then, load the required modules:
$ module purge $ module load intel/19.0.5.281 impi/2019.5.281 $ module load intel-mkl hdf5 # If you would like to include the Wannier90 interface, also load the following module: # $ module load wannier90/3.1.0
Link to section 'Step 3: Make' of 'Build your own VASP 6' Step 3: Make
Open makefile
, make sure the first line is VERSIONS = std gam ncl
.
Build VASP with command make all
to install all three executables vasp_std
, vasp_gam
, and vasp_ncl
or use make std
to install only the vasp_std
executable. Use make veryclean
to remove the build folder if you would like to start over the installation process.
Link to section 'Step 4: Test' of 'Build your own VASP 6' Step 4: Test
You can open an Interactive session to test the installed VASP 6. Here is an example of testing above installed VASP 6.3.0 with GNU compilers and OpenMPI:
$ cd /path/to/vasp-build-folder/vasp.6.3.0/testsuite
$ module purge
$ module load gcc/11.2.0 openmpi/4.1.6 intel-mkl hdf5
# If you included the Wannier90 interface, also load the following module:
# $ module load wannier90/3.1.0
$ ./runtest
Link to section ' ' of 'Build your own VASP 6'
LAMMPS
Large-scale Atomic/Molecular Massively Parallel Simulator (LAMMPS) is a molecular dynamics program from Sandia National Laboratories. LAMMPS makes use of Message Passing Interface for parallel communication and is a free and open-source software, distributed under the terms of the GNU General Public License.
Provided LAMMPS module
Link to section 'LAMMPS modules' of 'Provided LAMMPS module' LAMMPS modules
The Anvil team provides LAMMPS module with our default module environment gcc/11.2.0
and openmpi/4.0.6
to all users. It can be accessed by:
$ module load gcc/11.2.0 openmpi/4.0.6
$ module load lammps/20210310
The LAMMPS executable is lmp
and the LAMMPS potential files are installed at $LAMMPS_HOME/share/lammps/potentials
, where the value of $LAMMPS_HOME
is the path to LAMMPS build folder. Use this variable in any scripts. Your actual LAMMPS folder path may change without warning, but this variable will remain current. The current path is:
$ echo $LAMMPS_HOME
$ /apps/spack/anvil/apps/lammps/20210310-gcc-11.2.0-jzfe7x3
LAMMPS Job Submit Script
This is an example of a job submission file for running parallel LAMMPS jobs using the LAMMPS module installed on Anvil.
#!/bin/bash
# FILENAME: myjobsubmissionfile
#SBATCH -A myallocation # Allocation name
#SBATCH --nodes=1 # Total # of nodes
#SBATCH --ntasks=128 # Total # of MPI tasks
#SBATCH --time=1:30:00 # Total run time limit (hh:mm:ss)
#SBATCH -J lammps_tt # Job name
#SBATCH -o myjob.o%j # Name of stdout output file
#SBATCH -e myjob.e%j # Name of stderr error file
#SBATCH -p wholenode # Queue (partition) name
# Manage processing environment, load compilers and applications.
module --force purge
module load gcc/11.2.0 openmpi/4.0.6
module load lammps/20210310
module list
# Launch MPI code
srun -n $SLURM_NTASKS lmp
Build your own LAMMPS
Link to section 'Build your own LAMMPS' of 'Build your own LAMMPS' Build your own LAMMPS
LAMMPS provides a very detailed instruction of Build LAMMPS with a lot of customization options. In the following sections, we provide basic installation instructions of how to install LAMMPS on Anvil, as well as a LAMMPS Installation Script for users who would like to build their own LAMMPS on Anvil:
Link to section 'Step 1: Download' of 'Build your own LAMMPS' Step 1: Download
LAMMPS is an open-source code, you can download LAMMPS as a tarball from LAMMPS download page. There are several versions available on the LAMMPS webpage, we strongly recommend downloading the latest released stable
version and unzip and untar it. It will create a LAMMPS directory:
$ wget https://download.lammps.org/tars/lammps-stable.tar.gz
$ tar -xzvf lammps-stable.tar.gz
$ ls
lammps-23Jun2022 lammps-stable.tar.gz
Link to section 'Step 2: Build source code' of 'Build your own LAMMPS' Step 2: Build source code
LAMMPS provides two ways to build the source code: traditional configure && make
method and the cmake
method. These are two independent approaches and users should not mix them together. You can choose the one you are more familiar with.
Build LAMMPS with Make
Traditional make
method requires a Makefile
file appropriate for your system in either the src/MAKE
, src/MAKE/MACHINES
, src/MAKE/OPTIONS
, or src/MAKE/MINE directory
. It provides various options to customize your LAMMPS. If you would like to build your own LAMMPS on Anvil with make
, please follow the instructions for Build LAMMPS with make. In the following sections, we will provide some instructions on how to install LAMMPS on Anvil with make
.
Link to section 'Include LAMMPS Packages' of 'Build LAMMPS with Make' Include LAMMPS Packages
In LAMMPS, a package is a group of files that enable a specific set of features. For example, force fields for molecular systems or rigid-body constraints are in packages. Usually, you can include only the packages you plan to use, but it doesn't hurt to run LAMMPS with additional packages.
To use make
command to see the make options and package status, you need to first jump to src
subdirectory. Here we will continue use lammps-23Jun2022
as an example:
$ cd lammps-23Jun2022/src # change to main LAMMPS source folder
$ make # see a variety of make options
$ make ps # check which packages are currently installed
For most LAMMPS packages, you can include them by:
$ make yes-PGK_NAME # install a package with its name, default value is "no", which means exclude the package
# For example:
$ make yes-MOLECULE
A few packages require additional steps to include libraries or set variables, as explained on Packages with extra build options. If a package requires external libraries, you must configure and build those libraries before building LAMMPS and especially before enabling such a package.
If you have issues with installing external libraries, please contact us at Help Desk.
Instead of specifying all the package options via the command line, LAMMPS provides some Make shortcuts for installing many packages, such as make yes-most
, which will install most LAMMPS packages w/o libs. You can pick up one of the shortcuts based on your needs.
Link to section 'Compilation' of 'Build LAMMPS with Make' Compilation
Once the desired packages are included, you can compile lammps with our default environment: compiler gcc/11.2.0
and MPI library openmpi/4.0.6
, you can load them all at once by module load modtree/cpu
. Then corresponding make
option will be make g++_openmpi
for OpenMPI with compiler set to GNU g++.
Then the LAMMPS executable lmp_g++_openmpi
will be generated in the build
folder.
LAMMPS support parallel compiling, so you may submit an Interactive job to do parallel compiling.
If you get some error messages and would like to start over the installation process, you can delete compiled objects, libraries and executables with make clean-all
.
Link to section 'Examples' of 'Build LAMMPS with Make' Examples
Here is an example of how to install the lammps-23Jun2022
version on Anvil with most packages enabled:
# Setup module environments $ module purge $ module load modtree/cpu
$ module load hdf5 fftw gsl netlib-lapack
$ module list $ cd lammps-23Jun2022/src # change to main LAMMPS source folder $ make yes-most # install most LAMMPS packages w/o libs $ make ps # check which packages are currently installed # compilation $ make g++_openmpi # or "make -j 12 g++_openmpi" to do parallel compiling if you open an interactive session with 12 cores.
Link to section 'Tips' of 'Build LAMMPS with Make' Tips
When you run LAMMPS and get an error like "command or style is unknown", it is likely due to the fact you did not include the required packages for that command or style. If the command or style is available in a package included in the LAMMPS distribution, the error message will indicate which package would be needed.
For more information about LAMMPS build options, please refer to these sections of LAMMPS documentation:
Build LAMMPS with Cmake
CMake is an alternative to compiling LAMMPS in addition to the traditional Make method. CMake has several advantages, and might be helpful for people with limited experience in compiling software or for those who want to modify or extend LAMMPS. If you prefer using cmake
, please follow the instructions for Build LAMMPS with CMake. In the following sections, we will provide some instructions on how to install LAMMPS on Anvil with cmake
and the LAMMPS Installation Script:
Link to section 'Use CMake to generate a build environment' of 'Build LAMMPS with Cmake' Use CMake to generate a build environment
-
First go to your LAMMPS directory and generate a new folder
build
for build environment. Here we will continue uselammps-23Jun2022
as an example:$ cd lammps-23Jun2022 $ mkdir build; cd build # create and change to a build directory
-
To use
cmake
features, you need tomodule load cmake
first. -
For basic LAMMPS installation with no add-on packages enabled and no customization, you can generate a build environment by:
$ cmake ../cmake # configuration reading CMake scripts from ../cmake
-
You can also choose to include or exclude packages to or from build.
In LAMMPS, a package is a group of files that enable a specific set of features. For example, force fields for molecular systems or rigid-body constraints are in packages. Usually, you can include only the packages you plan to use, but it doesn't hurt to run LAMMPS with additional packages.
For most LAMMPS packages, you can include it by adding the following flag to
cmake
command:-D PKG_NAME=yes # degualt value is "no", which means exclude the package
For example:
$ cmake -D PKG_MOLECULE=yes -D PKG_RIGID=yes -D PKG_MISC=yes ../cmake
A few packages require additional steps to include libraries or set variables, as explained on Packages with extra build options. If you have issue with installing external libraries, please contact us at Help Desk.
-
Instead of specifying all the package options via the command line, LAMMPS provides some CMake setting scripts in
/cmake/presets
folder. You can pick up one of them or customize it based on your needs. -
If you get some error messages after the
cmake ../cmake
step and would like to start over, you can delete the wholebuild
folder and create new one:$ cd lammps-23Jun2022 $ rm -rf build $ mkdir build && cd build
Link to section 'Compilation' of 'Build LAMMPS with Cmake' Compilation
-
Once the build files are generated by
cmake
command, you can compile lammps with our default environments: compilergcc/11.2.0
and MPI libraryopenmpi/4.0.6
, you can load them all at once bymodule load modtree/cpu
. -
Then, the next step is to compile LAMMPS with
make
orcmake --build
, upon completion, the LAMMPS executablelmp
will be generated in thebuild
folder. -
LAMMPS supports parallel compiling, so you may submit an Interactive job to do parallel compilation.
-
If you get some error with compiling, you can delete compiled objects, libraries and executables with
make clean
orcmake --build . --target clean
.
Link to section 'Examples' of 'Build LAMMPS with Cmake' Examples
Here is an example of how to install the lammps-23Jun2022
version on Anvil with most packages enabled:
# Setup module environments
$ module purge
$ module load modtree/cpu
$ module load hdf5 fftw gsl netlib-lapack
$ module load cmake anaconda
$ module list
$ cd lammps-23Jun2022 # change to the LAMMPS distribution directory
$ mkdir build; cd build; # create and change to a build directory
# enable most packages and setup Python package library path
$ cmake -C ../cmake/presets/most.cmake -D PYTHON_EXECUTABLE=$CONDA_PYTHON_EXE ../cmake
# If everything works well, you will see
# -- Build files have been written to: /path-to-lammps/lammps-23Jun2022/build
# compilation
$ make # or "make -j 12" to do parallel compiling if you open an interactive session with 12 cores.
# If everything works well, you will see
# [100%] Built target lmp
The CMake setting script /cmake/presets/most.cmake
we used in the example here will includes 57 most common packages:
$ ASPHERE BOCS BODY BROWNIAN CG-DNA CG-SDK CLASS2 COLLOID COLVARS COMPRESS CORESHELL DIELECTRIC DIFFRACTION DIPOLE DPD-BASIC DPD-MESO DPD-REACT DPD-SMOOTH DRUDE EFF EXTRA-COMPUTE EXTRA-DUMP EXTRA-FIX EXTRA-MOLECULE EXTRA-PAIR FEP GRANULAR INTERLAYER KSPACE MACHDYN MANYBODY MC MEAM MISC ML-IAP ML-SNAP MOFFF MOLECULE OPENMP OPT ORIENT PERI PLUGIN POEMS QEQ REACTION REAXFF REPLICA RIGID SHOCK SPH SPIN SRD TALLY UEF VORONOI YAFF
Link to section 'Tips' of 'Build LAMMPS with Cmake' Tips
When you run LAMMPS and get an error like "command or style is unknown", it is likely due to you did not include the required packages for that command or style. If the command or style is available in a package included in the LAMMPS distribution, the error message will indicate which package would be needed.
After the initial build, whenever you edit LAMMPS source files, enable or disable packages, change compiler flags or build options, you must recompile LAMMPS with make
.
For more information about LAMMPS build options, please following these links from LAMMPS website:
LAMMPS Installation Script
Here we provide a lammps-23Jun2022
installation script with cmake
. It contains the procedures from downloading the source code to what we mentioned in Build LAMMPS with Cmake Example
section. You will start with making an empty folder. Then, download the installation scriptinstall-lammps.sh
to this folder. Since parallel compiling with 12 cores is used in the script, you may submit an Interactive job to ask for 12 cores:
$ mkdir lammps; cd lammps; # create and change to a lammps directory
$ wget https://www.rcac.purdue.edu/files/knowledge/compile/src/install-lammps.sh
$ ls
install-lammps.sh
$ sinteractive -N 1 -n 12 -A oneofyourallocations -p shared -t 1:00:00
$ bash install-lammps.sh