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; Gaussian basis functions or plane-waves; scaling from one to thousands of processors; properties and relativity.
The NWChem home page is at http://www.nwchem-sw.org.
Packages with modules
NWChem is available to anyone as open source software at no cost under the terms of the Educational Community Licence, version 2.0.
Example script for the Pan cluster
#!/bin/bash -e #SBATCH --job-name NWChem_job #SBATCH --account nesi99999 #SBATCH --time 01:00:00 #SBATCH --constraint avx #SBATCH --tasks 64 #SBATCH --cpus-per-task 1 #SBATCH --tasks-per-node 16 #SBATCH --mem-per-cpu 4G #SBATCH --output NWChem_job.%j.out # Include the job ID in the names #SBATCH --error NWChem_job.%j.err # of the output and error files module load NWChem/6.6-intel-2015a-Python-2.7.9 # Since --output is set, there is no need to redirect output to a file # on the NWChem command line. srun nwchem NWChem_job.nw
Shared memory limits
NWChem relies on an environment variable,
ARMCI_DEFAULT_SHMMAX, to set the
amount of shared memory used per node.
ARMCI_DEFAULT_SHMMAX must be set to an
appropriate value given the global memory set in the NWChem input file.
For example, if the global memory (set via the
global keyword in the input
file) is set to 1,024 MB,
ARMCI_DEFAULT_SHMMAX should be set to 1,024
multiplied by the number of cores requested per node.
It follows that a NWChem job must request the same number of cores on each
node. This is accomplished by setting the number of cores per task
--cpus-per-task) and tasks per node (
--tasks-per-node) in the job
submission script. These values should be appropriately set. Setting
--cpus-per-task to greater than 1 will force shared-memory parallelisation;
if this option is supplemented by
--tasks greater than 1, hybrid
parallelisation will be used.
ARMCI_DEFAULT_SHMMAX should be no greater than the value of shmmax on the
relevant node. The latter value can be ascertained as follows, to return the
value of shmmax in MB, and should be obtained from an appropriate build node
--constraint wm is used, and build-sb if
echo $(($(cat /proc/sys/kernel/shmmax) / 1048576))