#author("2026-08-15T01:24:02+00:00","default:sysosa","sysosa") #author("2026-08-15T01:24:28+00:00","default:sysosa","sysosa") 昔amberを使って自由エネルギー計算を行った事があった。 学術機関/非営利団体/政府機関 なら無償で使えるみたい. &size(10){ハードウエアメーカーがベンチ目的で使うなら 500ドル}; &size(10){以前は政府機関なら500$と聞いていたのだが変更になったみたい}; AmberToolsとAmberがあってpmemdの存在可否くらい? ソースコードが必要なら [[https://ambermd.org/GetAmber.php>+https://ambermd.org/GetAmber.php]] にて取得します っがコンパイルとか面倒なら conda 経由でインストール可能のようで、この場合は AmberTools版が対象です. ***対象計算機 [#uc20a098] インストール対象の計算機は rockylinux9 なマシンです #code(nonumber){{ [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ライブラリは入れていないです ***condaで入手 [#y0681bc5] ここでは[[crYOLO]]や[[PyEM]]の構築にpyenv/anaconda環境を作っているのでそれを踏襲して環境を作る #code(nonumber){{ [root@rockylinux9 ~]# source /apps/pyenv/versions/miniforge3-26.3.2-3/etc/profile.d/conda.sh }} その後に #code(nonumber){{ [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演算のみです. &size(10){gpu対応なプログラムは pmemd で、これは amber パッケージに含まれている. ambertoolsには入ってないよ}; ここではノーマル版を入れてみた. #code(nonumber){{ (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 ~]# }} ***EnvironmentModules [#ca311fb7] 「/apps/modulefiles/ambertools/23.6」 #code(nonumber){{ #%Module1.0 set root /apps/pyenv/versions/anaconda3-2024.06-1/envs/AmberTools prepend-path PATH $root/bin }} ***amber をソースから作ってみる [#mb5c1943] ソースコードを[[https://ambermd.org/GetAmber.php>+https://ambermd.org/GetAmber.php]]から取得します. 取得するのは ambertools と amber の両方です. 準備 構築に必要なパッケージとcudaライブラリを入れます。 #code(nonumber){{ [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 ~]# }} 下準備として #code(nonumber){{ [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]# }} #code(nonumber){{ [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>+https://ambermd.org/pmwiki/pmwiki.php/Main/CMake-Common-Options]] にある. #code(nonumber){{ [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 -- 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 ~]# }} ***EnvironmentModules [#n47a1710] 「/apps/modulefiles/amber/26」 #code(nonumber){{ #%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 }} ***nccl [#j8585a13] 複数枚のgpuカードを使って計算する際に必要なそうな. nccl: NVIDIA Collective Communications Library [[https://developer.nvidia.com/nccl>+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のインストール. #code(nonumber){{ [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ファイルを作るなら #code(nonumber){{ [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]# }} っでインストール #code(nonumber){{ [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 をコンパイルします #code(nonumber){{ [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」として #code(nonumber){{ #%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 }} とする. &size(10){LD_LIBRARY_PATH として「/apps/nccl/lib64」を追加します}; ***pmemd26 [#fa23eb9f] plumedを作ってから #code(nonumber){{ git clone http://github.com/plumed/plumed2 git checkout v2.10.1 module load mpi ./configure --prefix=/apps/plumed/2.10.1 make; make install }} mpi/GPUで計算可能なmdエンジンを作ります #code(nonumber){{ 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 install }} environment-modules「/apps/modulefiles/amber/26」 #code(nonumber){{ #%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 }}