AmberTools 26 (update1)
ウェブページ
バージョン
AmberTools 26 (update 1)
ビルド環境
- 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; QM/MM テストにのみ使用)
ビルドに必要なファイル
- ambertools26.tar.bz2
ビルド手順
#!/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
テスト(GPU)
以下のスクリプトを 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 ../
テスト結果
/apl/ambertools/26u1/logs 以下にログを置いています。
CPU 並列テスト
- mmpbsa_py
- ls: No match
- $AMBERHOME/lib/python3.*/site-packages/mpi4py は存在しないが、$AMBERHOME/miniconda/lib/python3.*/site-packages/mpi4py は存在する
- (4並列テストはすべてパス)
シリアルテスト
- antechamber/acdoctor => 実行エラー?
- C3H7I.prepi.dif => 数値エラー?(180 degrees vs -180 degrees?)
- spce-mgcl-1264.exnvv.dif => 軽微な数値エラー
- emap2.out.dif => 数値エラー?
- emap2.x.dif => 数値エラー
- qm7b_7203.out.dif => 軽微な数値エラー
OpenMP テスト, GPU 関連テスト
すべてパス
メモ
- pmemd とは別パッケージとして導入しています。
- 試験的に cpptraj を MPI, OpenMP 有効でビルドしています。(cpptraj.OMP.MPI)
- (openmp を有効にしていない cpptraj でも OpenMP のライブラリがリンクされていますが…)
plumed をコンパイル時に組み込むことはできていませんが、実行時に PLUMED_KERNEL 環境変数経由で呼び出すことはできているようです。- amber.*sh に挿入している MKL などは plumed が依存しているため、一応追加しています。
- (2026/6/30) plumed は上記手順で認識できているようでした。(cmake は libplumedKernel.so を見つけられませんでしたが…)PLUMED_KERNEL 環境変数は意味がなさそうなため消去しました。
- CUDA 13.3 を使うと rism 関連で型関連のエラーが出るため、12.9u1 (12.9.1) を使用。
- pbsa.cuda はビルドに失敗したため今回は無効化。libtorch も同様に無効化。
- torchani については情報が少ないため、今回は回避。
- ソフトを追加する必要がある上、現時点では GPU 非対応?
- gcc15 (gcc-toolset/15) を使うとシリアル版の gem.pmemd テストで追加のエラーが出たため gcc13 (gcc-toolset/13)を使用。
- gcc13, gcc15 (gcc-toolset) 以外は試していません。
- (2026/6/24) ambertools 26 update 1 として導入。
- (2026/6/30) インストールディレクトリの miniconda/_conda がリンク切れだったため、同じディレクトリにある micromamba へのシンボリックリンクに手動で置き直しました。