Amber20 update 9Webpage
http://ambermd.org/Version
Amber20 update 9, AmberTools 20 update 15

Build EnvironmentIntel Parallel Studio 2017 Update8 (MPI only)
GCC 7.3.1 (devtoolset-7)
CUDA 11.1 Update 1

Files Required
Amber20.tar.bz2
AmberTools20.tar.bz2(Amber20 update.1-9 & AmberTools20 update.1-15; obtained during the build procedure below)

Build Procedure#/bin/shVERSION=20
TOOLSVERSION=20
INSTALL_DIR="/local/apl/lx/amber20-up9"
TARBALL_DIR="/home/users/${USER}/Software/AMBER/20"
PARALLEL=12#---------------------------------------------------------------------module purge
module load intel_parallelstudio/2017update8
module load scl/devtoolset-7
module load cuda/11.1
export AMBERHOME=${INSTALL_DIR}
export CUDA_HOME="/local/apl/lx/cuda-11.1"
export LANG=C
export LC_ALL=C# install directory has to be prepared before running this script
if [ ! -d ${AMBERHOME} ]; thenecho "Create ${AMBERHOME} before running this script."
exit 1fi# the install directory must be empty
if [ "$(ls -A ${AMBERHOME})" ]; thenecho "Target directory ${AMBERHOME} not empty"
exit 2fiulimit -s unlimited# prep files
cd ${AMBERHOME}
bunzip2 -c ${TARBALL_DIR}/Amber${VERSION}.tar.bz2 | tar xf bunzip2 -c ${TARBALL_DIR}/AmberTools${TOOLSVERSION}.tar.bz2 | tar xf -mv amber${VERSION}_src/* .
rmdir amber${VERSION}_src# install python first. otherwise, update_amber failed to connect ambermd.org./AmberTools/src/configure_python
AMBER_PYTHON=$AMBERHOME/bin/amber.python# apply patches and update AmberTools
echo y | $AMBER_PYTHON ./update_amber --upgrade$AMBER_PYTHON ./update_amber --update
echo "[GPU serial edition (two versions)]"
LANG=C ./configure --no-updates -cuda gnu
make -j${PARALLEL} install && make cleanecho "[GPU parallel edition (two versions)]"
LANG=C ./configure --no-updates -mpi -cuda gnu
make -j${PARALLEL} install && make cleanecho "[CPU serial edition]"
LANG=C ./configure --no-updates gnu
make -j${PARALLEL} install && make cleanecho "[CPU openmp edition]"
LANG=C ./configure --no-updates -openmp gnu
make -j${PARALLEL} install && make cleanecho "[CPU parallel edition]"
LANG=C ./configure --no-updates -mpi gnu
make -j${PARALLEL} install && make clean# run tests. ${AMBERHOME}/amber.sh
cd ${AMBERHOME}# parallel tests firstexport DO_PARALLEL="mpirun -np 2"
make test.parallel && make clean.test
make test.cuda_parallel && make clean.test # DPFP
cd test; ./test_amber_cuda_parallel.sh SPFP; make clean; cd ../export DO_PARALLEL="mpirun -np 4"
cd test; make test.parallel.4proc; make clean; cd ../unset DO_PARALLEL# openmp tests
make test.openmp && make clean.test# serial tests
make test.serial && make clean.test
make test.cuda_serial && make clean.test # DPFP
cd test; ./test_amber_cuda_serial.sh SPFP; make clean; cd ../cd ${AMBERHOME}
chmod 700 src

Tests
Only minor numerical errors were found.
(Error on CUDA version of GAMD found informer build (update0) no longer exists. Thank you for the fix!)

Notes

Built and tested on ccgpup (P100 frontend node).
(Recently, access to external sites from ccgpup via http/https is allowed.)
No significant changes in performance of pmemd.cuda from the previous build (update0). (Performance on V100
might be very slightly (< 1%) worse than previous build...)On P100, pmemd.cuda of amber18-bf12 shows better performance than this one.
No verified python3.

(Notes about cmake version)(NOTE: we decided not to use cmake this time due to the error on pbsa_cuda_cg test; this error does not happen for"configure" version.)If python3 is used for miniconda (configure_python -v 3), we met an error during the build process (python2 wasinvoked somehow).
Build procedure and related flags seem to be differencent from "configure" version.
In case of "configure", sander API is disabled for cuda version. However, in case of "cmake", sander API isenabled for cuda version.
There might be some other differences?
"pbsa_cuda_cg" test of "test_at_cuda" failed for cmake version. This error does not happen for "configure" version.
Non-negligible errors happen. (e.g. large deviation of EPB, "Iterations required" number is zero, value next to"Convergence achieved" seems curious as seen in below. (Similar errors can be found in bc5 and bc10 diff.)
There are no problems for all the other tests.
We also tested with gcc7+cuda-11.1, gcc7-cuda10.1, and gcc6+cuda-9.1, but was in vain. (Not tested with
gcc-8 or intel compilers)(So far we couln't understand what is wrong.)
The sander API issue described above is not related this. (-DBUILD_SANDER_API=FALSE upon cmake
didn't change anything.)-DBLA_VENDOR=Generic doesn't change anything, either. (openblas will be used if this flag omitted)
caused by mischoice of some cuda related library?
possible FAILURE: (ignored) check mdout.1a93_B.p22.min_bc2.dif/local/apl/lx/amber20-up9/AmberTools/test/pbsa_cuda_cg
929c929<Iterations required: 220>

Iterations required:

0931c931<

Norm of the residual vector:

0.1317175924778>

Norm of the residual vector:

0.

932c932<Convergence achieved: 9.6113021224978365E-5>

Convergence achieved: 1.1278324955777715E-44

933c933< Total surface charge-1.9750> Total surface charge-2.0000

934c934< Reaction field energy -982.8577> Reaction field energy -805.5799
936c936< Etot =-2949.8108 EKtot =0. EPtot=0.

> Etot =-2772.5330 EKtot =0. EPtot=0.

< Etot =-2949.8108 EKtot =0. EPtot=0.

> Etot =-2772.5330 EKtot =0. EPtot=0.

936c936939c939< EELEC =-1786.2464 EPB=-982.8577 RESTRAINT =0.

> EELEC =-1786.2464 EPB=-805.5799 RESTRAINT =0.

945c945< Etot =-2949.8108 EKtot =0. EPtot=0.

> Etot =-2772.5330 EKtot =0. EPtot=0.

948c948< EELEC =-1786.2464 EPB=-982.8577 RESTRAINT =0.

> EELEC =-1786.2464 EPB=-805.5799 RESTRAINT =0.

### Maximum absolute error in matching lines = 2.20e+02 at line 929 field 4### Maximum relative error in matching lines = 8.52e+39 at line 932 field 4

cmake flags for GPU serial version:

(AMBER_PYTHON points miniconda python (prepared beforehand), CUDA_HOME is /local/apl/lx/cuda-(version).)cmake .. \-DCOMPILER=GNU \-DMPI=FALSE \-DCUDA=TRUE \-DINSTALL_TESTS=FALSE \-DDOWNLOAD_MINICONDA=FALSE \-DPYTHON_EXECUTABLE=${AMBER_PYTHON} \-DCUDA_TOOLKIT_ROOT_DIR=${CUDA_HOME} \-DCHECK_UPDATES=FALSE