Biowulf High Performance Computing at the NIH
NWChem on Biowulf & Helix

NWChem is an open source computational chemistry package that includes scalable tools for both classical and ab initio molecular simulations.

NWChem can handle:

NWChem is developed by a consortium of scientists and maintained by the Environmental Molecular Sciences Laboratory at Pacific Northwest National Laboratory (PNNL, hence the name NWChem).

Example input files are available in /usr/local/nwchem/6.8/examples, however be sure to modify any examples to use local scratch space on Biowulf (see below).

On Helix

NWChem is a cpu-intensive program that should not be run on Helix.

MPI batch job on Biowulf

NWChem expects to run in parallel using MPI. A sample MPI batch script is given below:

#SBATCH --partition=norm
#SBATCH --nodes=1
#SBATCH --ntasks=8
#SBATCH --ntasks-per-core=1
#SBATCH --gres=lscratch:100

module load nwchem/6.8

mpirun -np $SLURM_NTASKS nwchem 3carbo_dft.nw >& 3carbo_dft.out

This job script will allocate 8 cores, with a single MPI task running per core (--ntasks-per-core=1). Jobs that will require more than a single node to run should be submitted to the multinode partition.

IMPORTANT: You MUST allocate and use local scratch space when running NWChem on Biowulf to avoid overwhelming the parallel filesystems. If you fail to do so, your job(s) will not be allowed to run. To allocate local scratch space, add the following directive to your NWChem input file:

scratch_dir /lscratch/${SLURM_JOBID}

If you have set the scratch directory successfully, you should see something like the following in your NWChem output:

           Directory information
  0 permanent = .
  0 scratch   = /lscratch/54309256

If scratch is set to . or /scratch, you have made a big mistake and are likely to cause filesystem problems. You should cancel your job(s) immediately and edit your input file to properly set the scratch directory. Please see the NWChem documentation for details.

Submit this job with:

biowulf% sbatch nwchem.bat

NWChem and Python

NWChem has been compiled with Python support. NWChem relies on a specific version of Python and thus loading it precludes loading other Anaconda environments. If you need additional Python modules installed into the NWChem Python environment, please contact the HPC staff.

Consequently, NWChem supports embedded Python scripts, which can be used to control the application's behavior. For more information, see the NWChem Python documentation.

Example input scripts using Python can be found in /usr/local/apps/nwchem/6.8/contrib/python.