昔amberを使って自由エネルギー計算を行った事があった。
学術機関/非営利団体/政府機関 なら無償で使えるみたい.
ハードウエアメーカーがベンチ目的で使うなら 500ドル
以前は政府機関なら500$と聞いていたのだが変更になったみたい
AmberToolsとAmberがあってpmemdの存在可否くらい?
ソースコードが必要なら https://ambermd.org/GetAmber.php
にて取得します
っがコンパイルとか面倒なら conda 経由でインストール可能のようで、この場合は AmberTools版が対象です.
インストール対象の計算機は rockylinux9 なマシンです
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)
[root@rockylinux9 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 595.91.07 Release Build (dvs-builder@U22-I3-B08-02-2) Wed Jul 29 03:01:16 UTC 2026
GCC version: gcc version 11.5.0 20240719 (Red Hat 11.5.0-14) (GCC)
[root@rockylinux9 ~]# ls -ld /usr/local/cuda* | grep -v '^l'
drwxr-xr-x. 15 root root 4096 Aug 15 03:30 /usr/local/cuda-12.8
[root@rockylinux9 ~]#nvidiaドライバーはありますが、cudaライブラリは入れていないです
ここではcrYOLOやPyEMの構築にpyenv/anaconda環境を作っているのでそれを踏襲して環境を作る
[root@rockylinux9 ~]# source /apps/pyenv/versions/miniforge3-26.3.2-3/etc/profile.d/conda.shその後に
[root@rockylinux9 ~]# conda create --name AmberTools
[root@rockylinux9 ~]# conda activate AmberTools
(AmberTools) [root@rockylinux9 ~]#
(AmberTools) [root@rockylinux9 ~]# conda search ambertools -c conda-forge
Loading channels: done
# Name Version Build Channel
:
ambertools 25.3 cuda_None_nompi_py310hd4529b1_100 conda-forge
ambertools 25.3 cuda_None_nompi_py311h232f31e_100 conda-forge
ambertools 25.3 cuda_None_nompi_py312hd652fd9_100 conda-forge
ambertools 25.3 cuda_None_nompi_py313h34d38f2_100 conda-forge
ambertools 25.3 cuda_None_nompi_py314h2f9d5e2_100 conda-forge
ambertools 26.0 cuda_None_nompi_py310hd4529b1_100 conda-forge
ambertools 26.0 cuda_None_nompi_py311h232f31e_100 conda-forge
ambertools 26.0 cuda_None_nompi_py312hd652fd9_100 conda-forge
ambertools 26.0 cuda_None_nompi_py313h34d38f2_100 conda-forge
ambertools 26.0 cuda_None_nompi_py314h2f9d5e2_100 conda-forge
:
(AmberTools) [root@rockylinux9 ~]#いろいろ種類がありますが、cudaと付いていてもmdエンジンがcuda対応ではなく cpptraj とかの解析エンジンの一部がcuda対応な感じ.
あとopenmpiと付くのはmpi対応な感じ. ambertoolsでのmdエンジン(minimizationも含む)は sander でこれはcpu演算のみです.
gpu対応なプログラムは pmemd で、これは amber パッケージに含まれている. ambertoolsには入ってないよ
ここではノーマル版を入れてみた.
(AmberTools) [root@rockylinux9 ~]# conda install ambertools=26.0 -c conda-forge
(AmberTools) [root@rockylinux9 ~]# conda list
:
ambertools 26.0 cuda_None_nompi_py314h2f9d5e2_100 conda-forge
amberutils 21.0 pypi_0 pypi
:
mkl 2026.1.0 hecca717_244 conda-forge
:
python 3.14.6 h242f9ac_102_cp314 conda-forge
:
(AmberTools) [root@rockylinux9 ~]#
(AmberTools) [root@rockylinux9 ~]# conda list |grep pypi
amberutils 21.0 pypi_0 pypi
edgembar 3.6.5 pypi_0 pypi
fetkutils 3.6.5 pypi_0 pypi
mmpbsa-py 16.0 pypi_0 pypi
ndfes 3.6.5 pypi_0 pypi
pdb4amber 22.0 pypi_0 pypi
proprep 1.0.0 pypi_0 pypi
pymsmt 22.0 pypi_0 pypi
pytraj 3.0.0.dev0 pypi_0 pypi
rismtools 0.0.0 pypi_0 pypi
sander 22.0 pypi_0 pypi
(AmberTools) [root@rockylinux9 ~]#
(AmberTools) [root@rockylinux9 ~]# ls -l /apps/pyenv/versions/miniforge3-26.3.2-3/envs/AmberTools/bin/sander*
-rwxr-xr-x. 2 root root 10294552 Jul 15 11:51 /apps/pyenv/versions/miniforge3-26.3.2-3/envs/AmberTools/bin/sander
-rwxr-xr-x. 2 root root 10332496 Jul 15 11:51 /apps/pyenv/versions/miniforge3-26.3.2-3/envs/AmberTools/bin/sander.LES
(AmberTools) [root@rockylinux9 ~]#「/apps/modulefiles/ambertools/23.6」
#%Module1.0
set root /apps/pyenv/versions/anaconda3-2024.06-1/envs/AmberTools
prepend-path PATH $root/binソースコードをhttps://ambermd.org/GetAmber.php
から取得します. 取得するのは ambertools と amber の両方です.
準備
構築に必要なパッケージとcudaライブラリを入れます。
[root@rockylinux9 ~]# dnf install cmake gfortran libXt-devel libXext-devel perl-ExtUtils-MakeMaker bzip2-devel environment-modules fftw-devel libtirpc-devel
[root@rockylinux9 ~]# module load cuda/12.8
[root@rockylinux9 ~]# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Feb_21_20:23:50_PST_2025
Cuda compilation tools, release 12.8, V12.8.93
Build cuda_12.8.r12.8/compiler.35583870_0
[root@rockylinux9 ~]# gcc --version
gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-14)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@rockylinux9 ~]#下準備として
[root@rockylinux9 ~]# cd /apps/src
[root@rockylinux9 src]# git clone http://github.com/plumed/plumed2
[root@rockylinux9 src]# cd plumed2/
[root@rockylinux9 plumed2]# git checkout v2.10.1
[root@rockylinux9 plumed2]# module load mpi
[root@rockylinux9 plumed2]# ./configure --prefix=/apps/plumed/2.10.1
[root@rockylinux9 plumed2]# make; make install
[root@rockylinux9 ~]# dnf config-manager --set-enabled crb
[root@rockylinux9 ~]# dnf install blas-devel lapack-devel suitesparse-devel
[root@rockylinux9 ~]# cd /apps/src
[root@rockylinux9 src]# git clone https://github.com/Electrostatics/apbs.git
[root@rockylinux9 src]# cd apbs
[root@rockylinux9 apbs]# git checkout v3.4.1
[root@rockylinux9 apbs]# mkdir build ; cd build/
[root@rockylinux9 build]#
[root@rockylinux9 build]# export APBSHOME=/apps/apbs/3.4.1-iapbs
[root@rockylinux9 build]# export MCSH_HOME=/dev/null
[root@rockylinux9 build]# cmake .. \
-DCMAKE_INSTALL_PREFIX=/apps/apbs/3.4.1-iapbs \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_DOC=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DENABLE_QUIET=ON \
-DENABLE_iAPBS=ON \
-DENABLE_TESTS=OFF \
-DBLAS_LIBRARIES=/usr/lib64/libblas.so \
-DLAPACK_LIBRARIES=/usr/lib64/liblapack.so
[root@rockylinux9 build]# cmake --build . -j 16
[root@rockylinux9 build]# cmake --install .
[root@rockylinux9 build]# ls /apps/apbs/3.4.1-iapbs/
bin include lib64 share
[root@rockylinux9 build]# ls /apps/apbs/3.4.1-iapbs/bin/
apbs
[root@rockylinux9 build]#[root@rockylinux9 ~]# cd /apps/src
[root@rockylinux9 src]# tar xf /Public/em/ambertools26.tar.bz2
[root@rockylinux9 src]# cd ambertools26_src/
[root@rockylinux9 ambertools26_src]# ls -CF
AmberTools/ build/ cmake/ CMakeLists.txt cmake-packaging/ compile_with_hip.sh* dat/ README recipe_at/ test/ update_amber* updateutils/
[root@rockylinux9 ambertools26_src]# ./update_amber --update
Preparing to apply updates... please wait.
Downloading updates for AmberTools 26
Downloading AmberTools 26/update.1 (1498.42 KB)
Downloading: [::::::::::::::::::::::::::::::::::::::::::::::::::] 100.0% Done.
Applying AmberTools 26/update.1
NOTE: update_amber only updates the raw source code! You must recompile if you want
any changes to take effect!
[root@rockylinux9 ambertools26_src]#cmakeを使ってコンパイル設定を行いmake/make installな流れ
一応簡単に作れるシェルスクリプトが build/ に用意されてますが、
ここではcmakeを直に使って設定を行います
cmakeのオプションは https://ambermd.org/pmwiki/pmwiki.php/Main/CMake-Common-Options
にある.
[root@rockylinux9 ambertools26_src]# ls -CF build/
clean_build* configure_cmake.py* run_cmake* run_cmake.sample*
[root@rockylinux9 ambertools26_src]#
[root@rockylinux9 ambertools26_src]# mkdir build26
[root@rockylinux9 ambertools26_src]# cd build26/
[root@rockylinux9 ambertools26_src]# cmake .. \
-DCMAKE_INSTALL_PREFIX=/apps/amber/26 \
-DCOMPILER=GNU \
-DMPI=FALSE \
-DCUDA=TRUE \
-DINSTALL_TESTS=TRUE \
-DDOWNLOAD_MINICONDA=TRUE \
-DOPENMP=TRUE \
-DBUILD_GUI=TRUE \
-DBUILD_QUICK=TRUE \
-DBUILD_PERL=TRUE \
-DPMMG_GUI_DEPS=TRUE \
-DBUILD_SANDER_APBS=TRUE \
-DPLUMED_ROOT=/apps/plumed/2.10.1 \
-DCMAKE_PREFIX_PATH=/apps/apbs/3.4.1-iapbs \
-DBUILD_TCPB=TRUE
:
:
-- **************************************************************************
-- Build Report
-- Compiler Flags:
-- C No-Opt: -Wall -Wno-unused-function -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-but-set-variable -fcommon -O0
-- C Optimized: -Wall -Wno-unused-function -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-but-set-variable -fcommon -O3 -mtune=native
--
-- CXX No-Opt: -Wall -Wno-unused-function -Wno-unknown-pragmas -Wno-unused-local-typedefs -Wno-unused-variable -Wno-unused-but-set-variable -O0
-- CXX Optimized: -Wall -Wno-unused-function -Wno-unknown-pragmas -Wno-unused-local-typedefs -Wno-unused-variable -Wno-unused-but-set-variable -O3 -mtune=native
--
-- Fortran No-Opt: -Wall -Wno-tabs -Wno-unused-function -ffree-line-length-none -Wno-unused-dummy-argument -Wno-unused-variable -fallow-argument-mismatch -fno-inline-arg-packing -O0
-- Fortran Optimized: -Wall -Wno-tabs -Wno-unused-function -ffree-line-length-none -Wno-unused-dummy-argument -Wno-unused-variable -fallow-argument-mismatch -fno-inline-arg-packing -O3 -mtune=native
--
-- 3rd Party Libraries
-- ---building bundled: -----------------------------------------------------
-- arpack - for fundamental linear algebra calculations
-- ucpp - used as a preprocessor for the NAB compiler
-- netcdf - for creating trajectory data files
-- netcdf-fortran - for creating trajectory data files from Fortran
-- protobuf - protocol buffers library, used for communication with external software in QM/MM
-- readline - enables an interactive terminal in cpptraj
-- xblas - used for high-precision linear algebra calculations
-- boost - C++ support library
-- kmmd - Machine-learning molecular dynamics
-- tng_io - enables GROMACS tng trajectory input in cpptraj
-- nlopt - used to perform nonlinear optimizations
-- perlmol - chemistry library used by FEW
-- ---using installed: ------------------------------------------------------
-- blas - for fundamental linear algebra calculations
-- lapack - for fundamental linear algebra calculations
-- fftw - used to do Fourier transforms very quickly
-- apbs - used by Sander as an alternate Poisson-Boltzmann equation solver
-- zlib - for various compression and decompression tasks
-- libbz2 - for bzip2 compression in cpptraj
-- plumed - used as an alternate MD backend for Sander
-- libm - for fundamental math routines if they are not contained in the C library
-- ---disabled: ------------------------------------------------
-- c9x-complex - used as a support library on systems that do not have C99 complex.h support
-- lio - used by Sander to run certain QM routines on the GPU
-- pupil - used by Sander as an alternate user interface
-- mkl - alternate implementation of lapack and blas that is tuned for speed
-- mbx - computes energies and forces for pmemd with the MB-pol model
-- torchani - enables computation of energies and forces with Torchani
-- libtorch - enables libtorch C++ library for tensor computation and dynamic neural networks
-- Features:
-- MPI: OFF
-- MVAPICH2-GDR for GPU-GPU comm.: OFF
-- OpenMP: ON
-- CUDA: ON
-- NCCL: OFF
-- Build Shared Libraries: ON
-- Build GUI Interfaces: ON
-- Build Python Programs: ON
-- -Python Interpreter: Internal Miniconda (version 3.12)
-- Build Perl Programs: ON
-- Build configuration: RELEASE
-- Target Processor: x86_64
-- Build Documentation: ON
-- Sander Variants: normal LES APBS PUPIL API LES-API QUICK-CUDA
-- Install location: /apps/amber/26/
-- Installation of Tests: ON
-- Compilers:
-- C: GNU 11.5.0 (/usr/bin/gcc)
-- CXX: GNU 11.5.0 (/usr/bin/g++)
-- Fortran: GNU 11.5.0 (/usr/bin/gfortran)
-- Building Tools:
-- addles ambpdb antechamber cew cifparse cphstats cpptraj emil etc fe-toolkit few gbnsr6 gem.pmemd kmmd leap lib libdlfind mdgx mm_pbsa mmpbsa_py modxna moft nabc
ndiff-2.00 nfe-umbrella-slice nmode nmr_aux packmol_memgen packmol_memgen/web paramfit parmed pbsa pdb4amber proprep pymsmt pype_resp pysander pytraj quick
rism rismtools sander saxs sebomd sff sqm tcpb-cpp tcpb-cpp/pytcpb xray xtalutil
-- NOT Building Tools:
-- reaxff_puremd - BUILD_REAXFF_PUREMD is not enabled
-- gpu_utils - Not included in AmberTools
-- pmemd - Not included in AmberTools
-- **************************************************************************
:
:
[root@rockylinux9 build24]# make; make install
(確認)
[root@rockylinux9 ~]# ls /apps/amber/26/bin/*.cuda
/apps/amber/26/bin/cpptraj.cuda /apps/amber/26/bin/pbsa.cuda /apps/amber/26/bin/rism3d.snglpnt.cuda /apps/amber/26/bin/test-api.cuda
/apps/amber/26/bin/mdgx.cuda /apps/amber/26/bin/quick.cuda /apps/amber/26/bin/sander.quick.cuda
[root@rockylinux9 ~]# ls /apps/amber/26/bin/sander*
/apps/amber/26/bin/sander /apps/amber/26/bin/sander.APBS /apps/amber/26/bin/sander.LES /apps/amber/26/bin/sander.OMP /apps/amber/26/bin/sander.quick.cuda
[root@rockylinux9 ~]# ls /apps/amber/26/bin/*leap
/apps/amber/26/bin/tleap /apps/amber/26/bin/xleap
[root@rockylinux9 ~]#「/apps/modulefiles/amber/26」
#%Module1.0
set root /apps/amber/26
setenv AMBERHOME $root
setenv PERL5LIB $root/lib/perl
setenv PYTHONPATH $root/lib/python3.12/site-packages
setenv QUICK_BASIS $root/AmberTools/src/quick/basis
prepend-path PATH $root/bin
prepend-path LD_LIBRARY_PATH $root/lib
複数枚のgpuカードを使って計算する際に必要なそうな. nccl: NVIDIA Collective Communications Library https://developer.nvidia.com/nccl
The NVIDIA Collective Communication Library (NCCL) implements multi-GPU and multi-node communication primitives optimized for NVIDIA GPUs and Networking.
(deepL先生訳: NVIDIAコレクティブ・コミュニケーション・ライブラリ(NCCL)は、NVIDIA GPUおよびネットワーキングに最適化されたマルチGPUおよびマルチノード通信プリミティブを実装しています)
これをAmberに入れると、、まぁそうなるそうな.
ncclのインストール.
[root@rockylinux9 ~]# cd /apps/src/
[root@rockylinux9 src]# git clone https://github.com/NVIDIA/nccl.git
[root@rockylinux9 src]# cd nccl
[root@rockylinux9 nccl]# git tag
[root@rockylinux9 nccl]# git checkout v2.23.4-1
[root@rockylinux9 nccl]# git branch
* (HEAD detached at v2.23.4-1)
master
[root@rockylinux9 nccl]# rm -rf build
[root@rockylinux9 nccl]# make -j src.build CUDA_HOME=/usr/local/cuda-12.2 PREFIX=/apps/nccl
[root@rockylinux9 nccl]# make install CUDA_HOME=/usr/local/cuda-12.2 PREFIX=/apps/nccl
[root@rockylinux9 nccl]# ls -R /apps/nccl/
/apps/nccl/:
include lib
/apps/nccl/include:
nccl.h nccl_net.h
/apps/nccl/lib:
libnccl.so libnccl.so.2 libnccl.so.2.23.4 libnccl_static.a pkgconfig
/apps/nccl/lib/pkgconfig:
nccl.pc
[root@rockylinux9 nccl]#もしrpmファイルを作るなら
[root@rockylinux9 nccl]# vi pkg/redhat/nccl.spec.in
%define debug_package %{nil}
+%define _prefix /apps/nccl
[root@rockylinux9 nccl]# make pkg.redhat.build -j CUDA_HOME=/usr/local/cuda-12.2
[root@rockylinux9 nccl]# rpm -qpli ./build/pkg/rpm/x86_64/libnccl-2.23.4-1+cuda12.2.x86_64.rpm
Name : libnccl
Version : 2.23.4
Release : 1+cuda12.2
Architecture: x86_64
:
/apps/nccl/lib64/libnccl.so.2
/apps/nccl/lib64/libnccl.so.2.23.4
:
[root@rockylinux9 nccl]#っでインストール
[root@rockylinux9 nccl]# dnf localinstall ./build/pkg/rpm/x86_64/libnccl-2.23.4-1+cuda12.2.x86_64.rpm \
./build/pkg/rpm/x86_64/libnccl-devel-2.23.4-1+cuda12.2.x86_64.rpm
[root@rockylinux9 nccl]#そうしてncclを有効にして amber をコンパイルします
[root@rockylinux9 ~]# module load cuda mpi
[root@rockylinux9 ~]# source scl_source enable gcc-toolset-12
[root@rockylinux9 ~]# cd /apps/src/amber24_src/
[root@rockylinux9 amber24_src]#
[root@rockylinux9 amber24_src]# mkdir build-nccl
[root@rockylinux9 amber24_src]# cd build-nccl
[root@rockylinux9 build-nccl]#
[root@rockylinux9 build-nccl]# NCCL_HOME=/apps/nccl cmake .. -DCMAKE_INSTALL_PREFIX=/apps/amber/24 \
-DCOMPILER=GNU -DMPI=TRUE -DCUDA=TRUE \
-DINSTALL_TESTS=TRUE -DDOWNLOAD_MINICONDA=TRUE -DOPENMP=TRUE -DBUILD_GUI=TRUE -DNCCL=TRUE
:
:
-- Features:
-- MPI: ON
-- MVAPICH2-GDR for GPU-GPU comm.: OFF
-- OpenMP: ON
-- CUDA: ON
-- NCCL: ON
-- Build Shared Libraries: ON
-- Build GUI Interfaces: ON
-- Build Python Programs: ON
-- -Python Interpreter: Internal Miniconda (version 3.11)
-- Build Perl Programs: ON
-- Build configuration: RELEASE
-- Target Processor: x86_64
-- Build Documentation: ON
-- Sander Variants: normal LES API LES-API MPI LES-MPI QUICK-MPI QUICK-CUDA
-- Install location: /apps/amber/24/
-- Installation of Tests: ON
:
:
[root@rockylinux9 build24]# make; make install「pmemd.cuda.MPI」が得られます
EnvironmentModulesは「/apps/modulefiles/amber/24」として
#%Module1.0
set root /apps/amber/24
setenv AMBERHOME $root
setenv PERL5LIB $root/lib/perl
setenv PYTHONPATH $root/lib/python3.11/site-packages
setenv QUICK_BASIS $root/AmberTools/src/quick/basis
prepend-path PATH $root/bin
prepend-path LD_LIBRARY_PATH $root/lib:/apps/nccl/lib64とする. LD_LIBRARY_PATH として「/apps/nccl/lib64」を追加します
plumedを作ってから
git clone http://github.com/plumed/plumed2
git checkout v2.10.1
module load mpi
./configure --prefix=/apps/plumed/2.10.1
make; make installmpi/GPUで計算可能なmdエンジンを作ります
tar xf pmemd26.tar.bz
cd pmemd26_src
./update_pmemd --update
mkdir build-26
cd build-26
module load mpi
module load cuda/12.8
export LIBRARY_PATH=/apps/plumed/2.10.1/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/apps/plumed/2.10.1/lib:$LD_LIBRARY_PATH
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=/apps/pmemd26 \
-DCOMPILER=GNU \
-DMPI=TRUE \
-DCUDA=TRUE \
-DPGM=FALSE \
-DINSTALL_TESTS=FALSE \
-DDOWNLOAD_MINICONDA=FALSE \
-DBUILD_PYTHON=FALSE \
-DBUILD_PERL=FALSE \
-DBUILD_GUI=FALSE \
-DPMEMD_ONLY=TRUE \
-DCHECK_UPDATES=FALSE \
-DPLUMED_ROOT=/apps/plumed/2.10.1
make ; make installenvironment-modules「/apps/modulefiles/amber/26」
#%Module
set pmemd /apps/pmemd26
set root /apps/pyenv/versions/miniforge3-26.3.2-3/envs/AmberTools26
setenv PMEMDHOME $pmemd
prepend-path PATH $pmemd/bin:$root/bin
prepend-path LD_LIBRARY_PATH $pmemd/lib:$root/lib