... | ... | @@ -10,9 +10,142 @@ NWChem: Open Source High-Performance Computational Chemistry. NWChem aims to pro |
|
|
<!-- Label: BuildMaturity=NeedsPatch -->
|
|
|
|
|
|
# Versions
|
|
|
[NWChem 7.0 ARM](#build-details-for-version-70-acfl)
|
|
|
[NWChem 6.8 ARM](#build-details-for-version-68-arm) -
|
|
|
[NWChem 6.8 GCC](#build-details-for-version-68-gcc)
|
|
|
|
|
|
|
|
|
# Build Details For Version 7.0 ACfL
|
|
|
|
|
|
NWChem 7.0 presents a number of improvements for building and running on Arm based systems such as:
|
|
|
* Removal of deprecated MPI-1 interface calls
|
|
|
* Auto recognition of Arm Compiler
|
|
|
* No need to patch
|
|
|
|
|
|
A number of the QA tests still fail, most due to small precision errors - so validation is highly encouraged.
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
1. NWChem 7.0
|
|
|
2. Arm Compiler for Linux 20.0
|
|
|
3. Arm Perforamce Libraries 20.0
|
|
|
4. Open MPI version 4.0.2
|
|
|
5. Tested on TX2 running CentOS 8
|
|
|
6. Last updated 14/05/20
|
|
|
|
|
|
## Build instructions
|
|
|
|
|
|
### Downloading and unpack the packages
|
|
|
|
|
|
```
|
|
|
wget https://github.com/nwchemgit/nwchem/archive/v7.0.0-release.tar.gz
|
|
|
tar xf v7.0.0-release.tar.gz
|
|
|
cd nwchem-7.0.0-release
|
|
|
export NWCHEM_TOP=$PWD
|
|
|
```
|
|
|
|
|
|
### Modify the Make file
|
|
|
|
|
|
```
|
|
|
patch -p0 <<EOF
|
|
|
--- src/config/makefile.h 2020-05-12 07:32:42.500000000 -0500
|
|
|
+++ src/config/makefile.h.arm 2020-02-25 19:08:40.000000000 -0600
|
|
|
@@ -2273,6 +2273,14 @@
|
|
|
endif
|
|
|
endif
|
|
|
|
|
|
+ ifeq (\$(_CC),armclang)
|
|
|
+ COPTIONS += -O3 -funroll-loops -mcpu=native -armpl
|
|
|
+ ifdef USE_OPENMP
|
|
|
+ COPTIONS += -fopenmp
|
|
|
+ endif
|
|
|
+ endif
|
|
|
+
|
|
|
+
|
|
|
ifeq (\$(_FC),gfortran)
|
|
|
ifdef USE_GPROF
|
|
|
FOPTIONS += -pg
|
|
|
@@ -2315,13 +2323,13 @@
|
|
|
|
|
|
DEFINES += -DARMFLANG
|
|
|
LINK.f = \$(FC) \$(LDFLAGS)
|
|
|
- FOPTIMIZE = -O3 -Mfma -ffp-contract=fast
|
|
|
+ FOPTIMIZE = -O3 -Mfma -ffp-contract=fast -fno-backslash
|
|
|
ifeq (\$(V),1)
|
|
|
\$(info ARMFLANG FOPTIMIZE = \${FOPTIMIZE})
|
|
|
endif
|
|
|
|
|
|
FDEBUG += -g -O
|
|
|
- FOPTIMIZE += -mtune=native
|
|
|
+ FOPTIMIZE += -mcpu=native -armpl
|
|
|
|
|
|
ifndef USE_FPE
|
|
|
FOPTIMIZE += -ffast-math #2nd time
|
|
|
EOF
|
|
|
```
|
|
|
|
|
|
### Build configuration
|
|
|
|
|
|
```
|
|
|
export CC=armclang
|
|
|
export CXX=armclang++
|
|
|
export FC=armflang
|
|
|
|
|
|
export NWCHEM_TARGET=LINUX64
|
|
|
export ARMCI_NETWORK=MPI-PR
|
|
|
|
|
|
# Setup MPI PATHS
|
|
|
# Set to "y" to indicate that NWChem should be compiled with MPI
|
|
|
export USE_MPI=y
|
|
|
# Set to "y" for the NWPW module to use fortran-bindings of MPI (Generally set when USE_MPI is set)
|
|
|
export USE_MPIF=y
|
|
|
# Set to "y" for the NWPW module to use Integer*4 fortran-bindings of MPI. (Generally set when USE_MPI is set on most platforms)
|
|
|
export USE_MPIF4=y
|
|
|
|
|
|
# Use this to guess MPI value or set yourself
|
|
|
${NWCHEM_TOP}/src/tools/guess-mpidefs
|
|
|
|
|
|
# export MPI_INCLUDE="</path/to/mpi/includes>"
|
|
|
# export MPI_LIB="</path/to/mpi/libs/dir>"
|
|
|
# export LIBMPI="<list of mpi libraries>"
|
|
|
|
|
|
|
|
|
export NWCHEM_MODULES="all"
|
|
|
export BLAS_LIBS="-L$ARMPL_DIR/lib -larmpl_ilp64"
|
|
|
export BLASOPT=${BLAS_LIBS}
|
|
|
export BLAS_SIZE=8
|
|
|
|
|
|
# Same for LAPACK
|
|
|
# export LAPACK="-L</path/to/arm/performace/libraries/dir> -larmpl_ilp64"
|
|
|
# If you have used the provided module then you can just use
|
|
|
export LAPACK="-L$ARMPL_DIR/lib -larmpl_ilp64"
|
|
|
export LAPACK_LIBS="$LAPACK"
|
|
|
export LAPACK_LIB="$LAPACK"
|
|
|
export LAPACK_SIZE=8
|
|
|
|
|
|
# possibly need this for the configure step for GA ?
|
|
|
FFLAG_INT=-i8
|
|
|
|
|
|
```
|
|
|
|
|
|
### Build and install
|
|
|
```
|
|
|
cd $NWCHEM_TOP/src
|
|
|
make nwchem_config
|
|
|
make -j 28 | tee make.log
|
|
|
```
|
|
|
|
|
|
### Testing
|
|
|
```
|
|
|
# Run some QA tests
|
|
|
#--------------------
|
|
|
cd $NWCHEM_TOP/QA
|
|
|
export NWCHEM_EXECUTABLE=$NWCHEM_TOP/bin/${NWCHEM_TARGET}/nwchem
|
|
|
./doqmtests.mpi 16 | tee doqmtests.mpi.log
|
|
|
```
|
|
|
There are a number of failed test cases, see notes note at [end](#testing-2).
|
|
|
|
|
|
|
|
|
# Build Details For Version 6.8 Arm
|
|
|
|
|
|
## Configuration
|
... | ... | |