AmberTools 26 (update1)
Webpage
Version
AmberTools 26 (update 1)
Build Environment
- GCC 13.3.1 (gcc-toolset-13)
- CUDA 12.9 update 1 (12.9.1)
- OpenMPI 4.1.8 (CUDA-aware)
- PLUMED 2.10.0
- (Gaussian 16 C.02; used only for QM/MM test)
Files Required
- ambertools26.tar.bz2
Build Procedure
#!/bin/sh
VERSION=26
INSTALL_DIR=/apl/ambertools/26u1
BASEDIR=/home/users/${USER}/Software/AmberTools/26
TARBALL=${BASEDIR}/ambertools${VERSION}.tar.bz2
WORKDIR=/gwork/users/${USER}/at26PLUMED_ROOT=/apl/plumed/2.10.0/gcc13/ompi
PARALLEL=16
#-----------------------------------------------------------------------
export LANG=C
export LC_ALL=C
ulimit -s unlimited
module -s purge
module -s load gcc-toolset/13
module -s load cuda/12.9u1
module -s load openmpi/4.1.8/gcc13-cuda12.9u1
module -s load gaussian/16c02
module -s load plumed/2.10.0-gcc13-ompi418# install directory must be empty
if [ "$(ls -A $INSTALL_DIR)" ]; then
echo "Target directory $INSTALL_DIR not empty"
exit 1
fimkdir -p ${WORKDIR}
cd ${WORKDIR}
if [ -d ambertools${VERSION}_src ]; then
mv -f ambertools${VERSION}_src at_erase
rm -rf at_erase &
fi
tar xf ${TARBALL}
cd ambertools${VERSION}_srcsed -i -e "1s/env python/env python3/" update_amber
./update_amber --update
yes | ./update_amber --upgrade
./update_amber --update# force allow cuda 12.9.1 (12.9u1)
sed -i -e "s/VERSION_LESS 12.9/VERSION_LESS 13.0/" cmake/CudaConfig.cmake## force allow cuda 13.3 (SM70 not supported in CUDA 13.x)
#sed -i -e "s/VERSION_LESS 12.9/VERSION_LESS 13.4/" \
# -e "s/APPEND CUDA_NVCC_FLAGS ${SM70FLAGS}/APPEND CUDA_NVCC_FLAGS/" \
# cmake/CudaConfig.cmake
#sed -i -e "s/LESS_EQUAL 13.1.1/LESS_EQUAL 13.4/" AmberTools/src/quick/quick-cmake/QUICKCudaConfig.cmake
# ad hoc fix for symbolic links (amber.conda & amber.python) (by Gemini)
sed -i -e '/installtime_create_symlink(${PYTHON_EXECUTABLE}/,/endif()/ {
/installtime_create_symlink(${PYTHON_EXECUTABLE}/ {
i\
install(CODE "execute_process(COMMAND \\\${CMAKE_COMMAND} -E create_symlink \\"${PYTHON_EXECUTABLE}\\" \\"\\\$ENV{DESTDIR}\\\${CMAKE_INSTALL_PREFIX}/${BINDIR}/amber.python\\")" COMPONENT Python)\nif(EXISTS "${CONDA}")\ninstall(CODE "execute_process(COMMAND \\\${CMAKE_COMMAND} -E create_symlink \\"${CONDA}\\" \\"\\\$ENV{DESTDIR}\\\${CMAKE_INSTALL_PREFIX}/${BINDIR}/amber.conda\\")" COMPONENT Python)\nendif()
}
d
}' cmake/PythonInterpreterConfig.cmake
# CPU serial
echo "[CPU serial version]"
mkdir build_cpu_serial && cd build_cpu_serial
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=FALSE \
-DCUDA=FALSE \
-DOPENMP=FALSE \
-DINSTALL_TESTS=TRUE \
-DDOWNLOAD_MINICONDA=TRUE \
-DPMMG_GUI_DEPS=ON \
-DBUILD_REAXFF_PUREMD=TRUE \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL} install
cd ../ && rm -rf build_cpu_serial
# ad hoc fix
sed -i -e "s|${WORKDIR}/ambertools${VERSION}_src/build_cpu_serial/CMakeFiles/miniconda/install/bin/python|${INSTALL_DIR}/miniconda/bin/python|" ${INSTALL_DIR}/bin/pdb2pqreval "$(${INSTALL_DIR}/miniconda/bin/conda shell.bash hook)"
# CUDA serial
echo "[CUDA serial version]"
mkdir build_cuda_serial && cd build_cuda_serial
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=FALSE \
-DCUDA=TRUE \
-DOPENMP=FALSE \
-DINSTALL_TESTS=FALSE \
-DDOWNLOAD_MINICONDA=FALSE \
-DUSE_CONDA_LIBS=TRUE \
-DPYTHON_EXECUTABLE=${INSTALL_DIR}/miniconda/bin/python \
-DCUDA_TOOLKIT_ROOT_DIR=${CUDA_HOME} \
-DBUILD_REAXFF_PUREMD=FALSE \
-DDISABLE_PBSA_CUDA=TRUE \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL} install
cd ../ && rm -rf build_cuda_serial
# CUDA MPI
echo "[CUDA MPI version]"
mkdir build_cuda_mpi && cd build_cuda_mpi
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=TRUE \
-DCUDA=TRUE \
-DOPENMP=FALSE \
-DINSTALL_TESTS=FALSE \
-DDOWNLOAD_MINICONDA=FALSE \
-DUSE_CONDA_LIBS=TRUE \
-DPYTHON_EXECUTABLE=${INSTALL_DIR}/miniconda/bin/python \
-DCUDA_TOOLKIT_ROOT_DIR=${CUDA_HOME} \
-DBUILD_REAXFF_PUREMD=FALSE \
-DDISABLE_PBSA_CUDA=TRUE \
-DPLUMED_ROOT=${PLUMED_ROOT} \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL} install
cd ../ && rm -rf build_cuda_mpi
# CPU MPI+openmp (cpptraj only)
echo "[CPU MPI+OpenMP version (cpptraj only)]"
mkdir build_cpu_hybrid && cd build_cpu_hybrid
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=TRUE \
-DCUDA=FALSE \
-DOPENMP=TRUE \
-DINSTALL_TESTS=FALSE \
-DDOWNLOAD_MINICONDA=FALSE \
-DUSE_CONDA_LIBS=TRUE \
-DPYTHON_EXECUTABLE=${INSTALL_DIR}/miniconda/bin/python \
-DBUILD_REAXFF_PUREMD=FALSE \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL}
cmake --install AmberTools/src/cpptraj
mv ${INSTALL_DIR}/bin/cpptraj.MPI ${INSTALL_DIR}/bin/cpptraj.OMP.MPI
cd ../ && rm -rf build_cpu_hybrid
# CPU openmp
echo "[CPU OpenMP version]"
mkdir build_cpu_openmp && cd build_cpu_openmp
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=FALSE \
-DCUDA=FALSE \
-DOPENMP=TRUE \
-DINSTALL_TESTS=FALSE \
-DDOWNLOAD_MINICONDA=FALSE \
-DUSE_CONDA_LIBS=TRUE \
-DPYTHON_EXECUTABLE=${INSTALL_DIR}/miniconda/bin/python \
-DBUILD_REAXFF_PUREMD=TRUE \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL} install
cd ../ && rm -rf build_cpu_openmp
# CPU MPI
echo "[CPU MPI version]"
mkdir build_cpu_mpi && cd build_cpu_mpi
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=TRUE \
-DCUDA=FALSE \
-DOPENMP=FALSE \
-DINSTALL_TESTS=FALSE \
-DDOWNLOAD_MINICONDA=FALSE \
-DUSE_CONDA_LIBS=TRUE \
-DPYTHON_EXECUTABLE=${INSTALL_DIR}/miniconda/bin/python \
-DBUILD_REAXFF_PUREMD=FALSE \
-DPLUMED_ROOT=${PLUMED_ROOT} \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL} install
cd ../ && rm -rf build_cpu_mpi
# ad hoc fix for python interpreter path
# FixCondaShebang does not work for some files on RCCS system...
# (not due to symbolic links)
ORIGPATH=${WORKDIR}/ambertools${VERSION}_src/build_cpu_serial/CMakeFiles/miniconda/install
ORIGPATH2=/lustre${ORIGPATH}
NEWPATH=${INSTALL_DIR}/miniconda
cd ${INSTALL_DIR}
for f in bin/* miniconda/bin/*; do
grep -I gwork $f
if [ $? == 0 ]; then
sed -i -e "s|${ORIGPATH2}|${NEWPATH}|g" \
-e "s|${ORIGPATH}|${NEWPATH}|g" $f
fi
done
# append env variables setting
cd ${INSTALL_DIR}
cat <<EOF >> amber.sh# rccs setting
CUDA_AMBER=/apl/cuda/12.9u1
export PATH=\$CUDA_AMBER/bin:\$PATH
export LD_LIBRARY_PATH=\$CUDA_AMBER/lib64:\$LD_LIBRARY_PATHOMPI_AMBER=/apl/openmpi/4.1.8/gcc13-cuda12.9u1
export PATH=\$OMPI_AMBER/bin:\$PATH
export LD_LIBRARY_PATH=\$OMPI_AMBER/lib:\$LD_LIBRARY_PATH
export OMPI_MCA_btl=^openibexport LD_LIBRARY_PATH=/apl/oneapi/mkl/2026.0/lib:\$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/apl/oneapi/compiler-rt/2026.0.0/lib:\$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/apl/pbs/23.06.06/lib:\$LD_LIBRARY_PATH
EOF
cat <<EOF >> amber.csh# rccs setting
set CUDA_AMBER=/apl/cuda/12.9u1
setenv PATH "\$CUDA_AMBER/bin:\$PATH"
setenv LD_LIBRARY_PATH "\$CUDA_AMBER/lib64:\$LD_LIBRARY_PATH"set OMPI_AMBER=/apl/openmpi/4.1.8/gcc13-cuda12.9u1
setenv PATH "\$OMPI_AMBER/bin:\$PATH"
setenv LD_LIBRARY_PATH "\$OMPI_AMBER/lib:\$LD_LIBRARY_PATH"
setenv OMPI_MCA_btl ^openibsetenv LD_LIBRARY_PATH "/apl/oneapi/mkl/2026.0/lib:\$LD_LIBRARY_PATH"
setenv LD_LIBRARY_PATH "/apl/oneapi/compiler-rt/2026.0.0/lib:\$LD_LIBRARY_PATH"
setenv LD_LIBRARY_PATH "/apl/pbs/23.06.06/lib:\$LD_LIBRARY_PATH"
EOF
# run tests
cd ${INSTALL_DIR}
. ${INSTALL_DIR}/amber.sh
# now, $AMBERHOME should be $INSTALL_DIR# parallel tests first
export DO_PARALLEL="mpirun -np 2"make test.parallel && make clean.test
export DO_PARALLEL="mpirun -np 4"
cd test; make test.parallel.4proc; make clean; cd ../unset DO_PARALLEL
# openmp tests
export OMP_NUM_THREADS=8
make test.openmp && make clean.test
unset OMP_NUM_THREADS
# serial tests
make test.serial && make clean.test
Tests (GPU)
Tested on ccgpu.
#!/bin/sh
VERSION=26
INSTALL_DIR=/apl/ambertools/26u1
BASEDIR=/home/users/${USER}/Software/AmberTools/26
TARBALL=${BASEDIR}/ambertools${VERSION}.tar.bz2
WORKDIR=/gwork/users/${USER}/at26PARALLEL=16
#-----------------------------------------------------------------------
export LANG=C
export LC_ALL=C
ulimit -s unlimitedmodule -s purge
module -s load gcc-toolset/13
module -s load cuda/12.9u1
module -s load mkl/2026.0
module -s load openmpi/4.1.8/gcc13-cuda12.9u1
module -s load gaussian/16c02
module -s load plumed/2.10.0-gcc13-ompi418
# run tests
cd ${INSTALL_DIR}
. ${INSTALL_DIR}/amber.sh
# now, $AMBERHOME should be $INSTALL_DIR# gpu tests
export DO_PARALLEL="mpirun -np 2"
make test.cuda.parallel; make clean.test # DPFP
#cd test; make test.cuda.parallel.SPFP; make clean; cd ../unset DO_PARALLEL
make test.cuda.serial; make clean.test # DPFP
#cd test; make test.cuda.serial.SPFP; make clean; cd ../
Test Results
Test log is available in /apl/ambertools/26u1/logs.
CPU parallel test
- mmpbsa_py
- ls: No match
- $AMBERHOME/lib/python3.*/site-packages/mpi4py does not exist, while $AMBERHOME/miniconda/lib/python3.*/site-packages/mpi4py exists.
- (-np 4 tests have passed successfully)
CPU serial Test
- antechamber/acdoctor => runtime error?
- C3H7I.prepi.dif => numerical error? (180 degrees vs -180 degrees?)
- spce-mgcl-1264.exnvv.dif => minor numerical error
- emap2.out.dif => numerical error?
- emap2.x.dif => numerical error
- qm7b_7203.out.dif => minor numerical error
OpenMP and GPU Tests
All the tests have passed.
Notes
- AmberTools was installed as a separate package from pmemd.
- Hybrid parallel (MPI+OpenMP) cpptraj was installed experimentally. (cpptraj.OMP.MPI)
- (OpenMP libraries are linked even in cpptraj, where OpenMP is not enabled...)
PLUMED couldn't be bundled. However, it can be called via PLUMED_KERNEL environment variable.- (MKL path was added in amber.*sh, since plumed depends on it. This may not be necessary.)
- (2026-Jun-30 update) PLUMED is recognized without other settings. (CMake couldn't find libplumedKernel.so, though.)
- Also, PLUMED_KERNEL env variable has no effect. It was removed.
- CUDA 13.3 failed with type error on rism related codes. We thus employ 12.9u1 (12.9.1).
- To avoid compilation error, pbsa.cuda was disabled for this time. Libtorch was also disabled.
- Torchani was skipped this time, since there is little information available.
- Additional software is required and that is not compatible with GPU?
- Gcc15 (gcc-toolset/15) serial version failed on gem.pmemd tests. We thus employ gcc13 (gcc-toolset/13).
- Only gcc13 & gcc15 (gcc-toolset) were tried.
- (2026-Jun-24) installed as ambertools 26 update 1.
- (2026-Jun-30) Since the symbolic link "miniconda/_conda" in the installation directory was a broken link, it was manually replaced with a symbolic link to "micromamba" in the same directory.