Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install Request: NWChem 7.x #591

Open
kaibinary opened this issue Nov 5, 2024 · 3 comments
Open

Install Request: NWChem 7.x #591

kaibinary opened this issue Nov 5, 2024 · 3 comments

Comments

@kaibinary
Copy link
Member

Application: NWChem 7.2.3

Link: https://github.com/nwchemgit/nwchem/releases

Cluster: Young

Description: The NWChem software contains computational chemistry tools that are scalable both in their ability to efficiently treat large scientific problems, and in their use of available computing resources from high-performance parallel supercomputers to conventional workstation clusters.

License: open source, ECL v2.0 licensed. https://opensource.org/license/ecl-2-0

Request number: 1483300

@kaibinary
Copy link
Member Author

Running the following buildscript on Young;

#!/usr/bin/env bash

###############################################
# Installing NWChem
#
# Built with Intel MPI and MKL. 
# Builds for architecture - need to build on oldest host.

NAME=${NAME:-nwchem}
VERSION=${VERSION:-7.2.3}
REVISION=${REVISION:-d690e065}
INSTALL_PREFIX=${INSTALL_PREFIX:-"/shared/ucl/apps/$NAME/$VERSION-$REVISION/$COMPILER_TAG"}
SHA256=${SHA256:-8800196cf85771264f3bc9c5aa8bc24410a95ec1acc3f515e1d08dd7ca82c5fd}
SRC_ARCHIVE=${SRC_ARCHIVE:-https://github.com/nwchemgit/nwchem/releases/download/v7.2.3-release/nwchem-7.2.3-release.revision-d690e065-src.2024-08-27.tar.bz2}
SRC_DIR=${SRC_DIR:-"nwchem-$VERSION"}

# Python 3 is required for the build
PYTHONHOME=${PYTHONHOME:-/shared/ucl/apps/python/3.9.6/gnu-10.2.0}
PYTHONVERSION=${PYTHONVERSION:-3.9}

set -e

# load modules for building
for i in $(dirname -- "$0" 2>/dev/null)/includes/{module_maker,require}_inc.sh; do . $i; done
module purge
require gcc-libs
require compilers/intel/2022.2
require mpi/intel/2021.11/intel
require python/3.9.6-gnu-10.2.0

mkdir -p "/dev/shm/$NAME"
temp_dir=$(mktemp -d -p "/dev/shm/${NAME}")

cd "$temp_dir"

wget "$SRC_ARCHIVE"
archive=$(basename "${SRC_ARCHIVE}")

echo "Checking hashes:"
sha256sum -c <<<"$SHA256  $archive"

tar -xvf "$archive"

# NWChem wants its variables exported.
export FC="ifort"
export CC="icc"

export NWCHEM_TOP="$temp_dir/$SRC_DIR"
export NWCHEM_TARGET="LINUX64"
export NWCHEM_MODULES="all python"
export NWCHEM_LONG_PATHS="Y"
export LARGE_FILES="TRUE"
# NOIO recommended on clusters
export USE_NOIO="TRUE"

export USE_OPENMP="y"
export USE_MPI="y"
export USE_MPIF="y"
export USE_MPIF4="y"
export MPI_LOC="$MPI_HOME"
# can run contrib/distro-tools/getmpidefs_nwchem to get these
#export MPI_INCLUDE="-I$MPI_HOME/intel64/include" (deprecated)
#export MPI_LIB="-L$MPI_HOME/intel64/lib/release_mt -L$MPI_HOME/intel64/lib" (deprecated)
#export LIBMPI="-lmpifort -lmpi -lmpigi -ldl -lrt -lpthread" (deprecated)

export MPI_F90="mpif90"
export MPI_CC="mpicc"
export MPI_CXX="mpicxx"

# Docs: "On Intel True Scale and Omni Path systems, MPI-PR is more reliable than OPENIB or MPI-SPAWN"
export ARMCI_NETWORK="MPI-PR"
export MSG_COMMS="MPI"

export PYTHONHOME
export PYTHONVERSION

export BLASOPT="${MKLROOT}/lib/intel64/libmkl_blas95_ilp64.a -L${MKLROOT}/lib/intel64 -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lpthread -lm"
export LAPACK_LIB="${MKLROOT}/lib/intel64/libmkl_lapack95_ilp64.a"
export USE_SCALAPACK="y"
export BLAS_SIZE=8
export SCALAPACK_SIZE=8
export SCALAPACK="-L${MKLROOT}/lib/intel64 -lmkl_scalapack_ilp64 -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lmkl_blacs_intelmpi_ilp64 -lpthread -lm"

# make nwchem
cd "$NWCHEM_TOP/src"
make nwchem_config 2>&1 | tee ../nwchem_config.log
make 2>&1 | tee ../nwchem_make.log

# install

mkdir -p "$INSTALL_PREFIX/bin"
cp "$NWCHEM_TOP/bin/${NWCHEM_TARGET}/nwchem" "$INSTALL_PREFIX/bin"
chmod 755 "$INSTALL_PREFIX/bin/nwchem"
cd "$NWCHEM_TOP/src/"
cp -r data "$INSTALL_PREFIX"
cd "$NWCHEM_TOP/src/basis"
cp -r libraries "$INSTALL_PREFIX/data"
cd "$NWCHEM_TOP/src/nwpw"
cp -r libraryps "$INSTALL_PREFIX/data"
chmod -R a+rx "$INSTALL_PREFIX/data"
cp -r "$NWCHEM_TOP/examples" "$INSTALL_PREFIX"

# create .nwchemrc
cat <<EOT >> $INSTALL_PREFIX/.nwchemrc
nwchem_basis_library $INSTALL_PREFIX/data/libraries/
nwchem_nwpw_library $INSTALL_PREFIX/data/libraryps/
ffield amber
amber_1 $INSTALL_PREFIX/data/amber_s/
amber_2 $INSTALL_PREFIX/data/amber_q/
amber_3 $INSTALL_PREFIX/data/amber_x/
amber_4 $INSTALL_PREFIX/data/amber_u/
spce    $INSTALL_PREFIX/data/solvents/spce.rst
charmm_s $INSTALL_PREFIX/data/charmm_s/
charmm_x $INSTALL_PREFIX/data/charmm_x/
EOT

@kaibinary
Copy link
Member Author

Opps...

downloading dftd3.tgz
chchc curl -f -L https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3/dftd3.tgz/dftd3.tgz -o dftd3.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (60) Issuer certificate is invalid.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
attempt no. 2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (60) Issuer certificate is invalid.
More details here: http://curl.haxx.se/docs/sslcerts.html

@kaibinary
Copy link
Member Author

kaibinary commented Nov 8, 2024

#!/usr/bin/env bash

###############################################
# Installing NWChem
#
# Built with Intel MPI and MKL. 
# Builds for architecture - need to build on oldest host.

NAME=${NAME:-nwchem}
VERSION=${VERSION:-7.2.3}
REVISION=${REVISION:-d690e065}
INSTALL_PREFIX=${INSTALL_PREFIX:-"/shared/ucl/apps/$NAME/$VERSION-$REVISION/$COMPILER_TAG"}
SHA256=${SHA256:-8800196cf85771264f3bc9c5aa8bc24410a95ec1acc3f515e1d08dd7ca82c5fd}
SRC_ARCHIVE=${SRC_ARCHIVE:-https://github.com/nwchemgit/nwchem/releases/download/v7.2.3-release/nwchem-7.2.3-release.revision-d690e065-src.2024-08-27.tar.bz2}
SRC_DIR=${SRC_DIR:-"nwchem-$VERSION"}

# Python 3 is required for the build
PYTHONHOME=${PYTHONHOME:-/shared/ucl/apps/python/3.9.6/gnu-10.2.0}
PYTHONVERSION=${PYTHONVERSION:-3.9}

set -e

# load modules for building
for i in $(dirname -- "$0" 2>/dev/null)/includes/{module_maker,require}_inc.sh; do . $i; done
module purge
require gcc-libs
require compilers/intel/2024.0.1
require mpi/intel/2021.11/intel
require python/3.9.6-gnu-10.2.0

mkdir -p "/dev/shm/$NAME"
temp_dir=$(mktemp -d -p "/dev/shm/${NAME}")

cd "$temp_dir"

wget "$SRC_ARCHIVE"
archive=$(basename "${SRC_ARCHIVE}")

echo "Checking hashes:"
sha256sum -c <<<"$SHA256  $archive"

tar -xvf "$archive"

# NWChem wants its variables exported.
export FC="ifort"
export CC="icx"

export NWCHEM_TOP="$temp_dir/$SRC_DIR"
export NWCHEM_TARGET="LINUX64"
export NWCHEM_MODULES="all python gwmol"
export NWCHEM_LONG_PATHS="Y"
export LARGE_FILES="TRUE"
# NOIO recommended on clusters
export USE_NOIO="TRUE"
# Turn off hardware optimisations
export USE_HWOPT=n

export USE_OPENMP="y"
export USE_MPI="y"
export USE_MPIF="y"
export USE_MPIF4="y"
export MPI_LOC="$MPI_HOME"
# can run contrib/distro-tools/getmpidefs_nwchem to get these
#export MPI_INCLUDE="-I$MPI_HOME/intel64/include" (deprecated)
#export MPI_LIB="-L$MPI_HOME/intel64/lib/release_mt -L$MPI_HOME/intel64/lib" (deprecated)
#export LIBMPI="-lmpifort -lmpi -lmpigi -ldl -lrt -lpthread" (deprecated)

export MPI_F90="mpif90"
export MPI_CC="mpicc"
export MPI_CXX="mpicxx"

# Docs: "On Intel True Scale and Omni Path systems, MPI-PR is more reliable than OPENIB or MPI-SPAWN"
export ARMCI_NETWORK="MPI-PR"
export MSG_COMMS="MPI"

#export PYTHONHOME
#export PYTHONVERSION

export BLASOPT="${MKLROOT}/lib/intel64/libmkl_blas95_ilp64.a -L${MKLROOT}/lib/intel64 -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lpthread -lm"
export LAPACK_LIB="${MKLROOT}/lib/intel64/libmkl_lapack95_ilp64.a"
export BLAS_SIZE=8
export USE_SCALAPACK="y"
export SCALAPACK_SIZE=8
export SCALAPACK="-L${MKLROOT}/lib/intel64 -lmkl_scalapack_ilp64 -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lmkl_blacs_intelmpi_ilp64 -lpthread -lm"

# make nwchem
cd "$NWCHEM_TOP/src"
make nwchem_config 2>&1 | tee ../nwchem_config.log
make -j 2>&1 | tee ../nwchem_make.log

# install
INSTALL_PREFIX=/home/$(whoami)/nwchem-$VERSION-$REVISION
mkdir -p "$INSTALL_PREFIX/bin"
cp "$NWCHEM_TOP/bin/${NWCHEM_TARGET}/nwchem" "$INSTALL_PREFIX/bin"
chmod 755 "$INSTALL_PREFIX/bin/nwchem"
cd "$NWCHEM_TOP/src/"
cp -r data "$INSTALL_PREFIX"
cd "$NWCHEM_TOP/src/basis"
cp -r libraries "$INSTALL_PREFIX/data"
cd "$NWCHEM_TOP/src/nwpw"
cp -r libraryps "$INSTALL_PREFIX/data"
chmod -R a+rx "$INSTALL_PREFIX/data"
cp -r "$NWCHEM_TOP/examples" "$INSTALL_PREFIX"

# create .nwchemrc
cat <<EOT >> $INSTALL_PREFIX/.nwchemrc
nwchem_basis_library $INSTALL_PREFIX/data/libraries/
nwchem_nwpw_library $INSTALL_PREFIX/data/libraryps/
ffield amber
amber_1 $INSTALL_PREFIX/data/amber_s/
amber_2 $INSTALL_PREFIX/data/amber_q/
amber_3 $INSTALL_PREFIX/data/amber_x/
amber_4 $INSTALL_PREFIX/data/amber_u/
spce    $INSTALL_PREFIX/data/solvents/spce.rst
charmm_s $INSTALL_PREFIX/data/charmm_s/
charmm_x $INSTALL_PREFIX/data/charmm_x/
EOT

rm -rf $temp_dir

The above seems to build just fine.

Need to test examples located in $INSTALL_PREFIX

cp $INSTALL_PREFIX/.nwchemrc ~/.nwchemrc
export NWCHEM_BASIS_LIBRARY=$INSTALL_PREFIX/data/libraries/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant