Summary

Sourcehttp://www.nwchem-sw.org/index.php/Main_Page

License: NWChem is an open-source computational chemistry package distributed under the terms of the Educational Community License (ECL) 2.0

Availability: on maxwell only! 

Path:  see below

Documentation: http://www.nwchem-sw.org/index.php/Release66:NWChem_Documentation

Citation: Please cite the following reference when publishing results obtained with NWChem: M. Valiev, E.J. Bylaska, N. Govind, K. Kowalski, T.P. Straatsma, H.J.J. van Dam, D. Wang, J. Nieplocha, E. Apra, T.L. Windus, W.A. de Jong, "NWChem: a comprehensive and scalable open-source solution for large scale molecular simulations" Comput. Phys. Commun. 181, 1477 (2010)

NWChem aims to provide its users with computational chemistry tools that are scalable both in their ability to treat large scientific computational chemistry problems efficiently, and in their use of available parallel computing resources from high-performance parallel supercomputers to conventional workstation clusters.NWChem software can handle:

  • Biomolecules, nanostructures, and solid-state
  • From quantum to classical, and all combinations
  • Ground and excited-states
  • Gaussian basis functions or plane-waves
  • Scaling from one to thousands of processors
  • Properties and relativistic effects

Using nwchem

 nwchem is installed in two variants. Usually you would use the system installed version, which is fully MPI-capable but doesn't support GPU acceleration. To use the standard nwchem, you just need to choose the type of MPI implementation, either openmpi or mpich. The examples below are for the openmpi-version. In principle you could switch to the mpich-version by just replacing openmpi by mpich. However, you might need to supply a hostfile in that case.

[max]% module avail
[max]% module load mpi/openmpi-x86_64
[max]%  which nwchem_openmpi
/usr/lib64/openmpi/bin/nwchem_openmpi

# nwchem provides its own setup script in /etc/profile.d/nwchem.sh. 
# The script is usually sourced at login, but you might need to add it to your batch-script.

 

A sample batch script could look like this:

#!/bin/bash
#SBATCH --partition=maxcpu
#SBATCH --time=168:00:00
#SBATCH --nodes=1
#SBATCH --job-name nwchem
#SBATCH --output nwchem.out
#SBATCH --error nwchem.err
# might not be needed but doesn't hurt
source /etc/profile.d/modules.sh
module purge
module load mpi/openmpi-x86_64
# tell nwchem where to find the libraries
source /etc/profile.d/nwchem.sh 
# might make sense to clean up
mpirun nwchem_openmpi nwchem.inp > nwchem.log

The other version installed on maxwell supports openmpi and cuda and runs on GPUs. The environment can be initialized using the module command. You need however to load the maxwell module prior to the nwchem module. For example:

[max]% module avail
[max]% module purge                     # clean up
[max]% module load maxwell nwchem
[max]%  which nwchem_openmpi            # or just nwchem
/software/nwchem/6.6-intel-cuda/bin/LINUX64/nwchem_openmpi


The corresponding job-script can be found below. Please note: due to limited GPU resources in the maxcpu-partition, the allcpu-partition is much more suitable. Don't source the /etc/profile.d/nwchem.sh scriplet. It configures the wrong nwchem version.

#!/bin/bash
#SBATCH --partition=all
#SBATCH --time=168:00:00
#SBATCH --nodes=1
## It wont run on older GPUs like K20! 
#SBATCH --constraint="P100|K40X"
#SBATCH --job-name nwchem-cuda
#SBATCH --output nwchem-cuda.out
#SBATCH --error newchem-cuda.err
# might not be needed but doesn't hurt
source /etc/profile.d/modules.sh
module purge
module load maxwell nwchem
mpirun nwchem nwchem.inp > nwchem-cuda.log
------------------------------------------