昔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 /cat /proc/driver/nvidia/version
cat: /cat: No such file or directory
NVRM version: NVIDIA UNIX x86_64 Kernel Module 535.179 Fri Apr 26 21:43:18 UTC 2024
GCC version: gcc version 11.4.1 20231218 (Red Hat 11.4.1-3) (GCC)
[root@rockylinux9 ~]# ls /usr/local/cuda
ls: cannot access '/usr/local/cuda': No such file or directory
[root@rockylinux9 ~]#
nvidiaドライバーはありますが、cudaライブラリは入れていないです
ここではcrYOLOやPyEMの構築にpyenv/anaconda環境を作っているのでそれを踏襲して環境を作る
ここではanacondaを使ってますが、ライセンスの問題があるなら miniconda をお使いください
[root@rockylinux9 ~]# source /apps/pyenv/versions/anaconda3-2024.06-1/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 19 h0d7ec52_0 conda-forge
:
ambertools 23.6 cuda_11.8_openmpi_py312h755114c_5 conda-forge
:
ambertools 23.6 openmpi_py312ha276755_2 conda-forge
:
ambertools 23.6 py312h7fdaf08_1 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=23.6 -c conda-forge
(AmberTools) [root@rockylinux9 ~]# conda list
:
ambertools 23.6 cuda_None_nompi_py312h41aabf6_105 conda-forge
amberutils 21.0 pypi_0 pypi
:
python 3.12.5 h2ad013b_0_cpython conda-forge
:
(AmberTools) [root@rockylinux9 ~]#
(AmberTools) [root@rockylinux9 ~]# conda list |grep pypi
amberutils 21.0 pypi_0 pypi
edgembar 0.2 pypi_0 pypi
mmpbsa-py 16.0 pypi_0 pypi
packmol-memgen 2024.2.9 pypi_0 pypi
pdb4amber 22.0 pypi_0 pypi
pymsmt 22.0 pypi_0 pypi
pytraj 2.0.6 pypi_0 pypi
sander 22.0 pypi_0 pypi
(AmberTools) [root@rockylinux9 ~]#
(AmberTools) [root@rockylinux9 ~]# ls -l /apps/pyenv/versions/anaconda3-2024.06-1/envs/AmberTools/bin/sander*
-rwxr-xr-x. 2 root root 9184696 Jun 15 05:58 /apps/pyenv/versions/anaconda3-2024.06-1/envs/AmberTools/bin/sander
-rwxr-xr-x. 2 root root 9210320 Jun 15 05:58 /apps/pyenv/versions/anaconda3-2024.06-1/envs/AmberTools/bin/sander.LES
(AmberTools) [root@rockylinux9 ~]#
っが、cuda付きがインストールされるみたい.
ただ、、アプリ名.cuda なるファイルがない... amberならcuda対応なアプリは アプリ名.cuda という名称なのだが...
「/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 の両方です.
準備
amber24はgcc 12 より上は未サポートなので rockylinux9 の標準GCCは 11.4.1 なのでok. もし 12 で行きたいなら RockyLinux の gcc-toolset で12にすればいいかな.
あと構築に必要なパッケージを入れます。それとcudaライブラリも入れます。
[root@rockylinux9 ~]# dnf install cmake gfortran libXt-devel libXext-devel perl-ExtUtils-MakeMaker bzip2-devel gcc-toolset-12
[root@rockylinux9 ~]# module load cuda/12.2
[root@rockylinux9 ~]# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Jul_11_02:20:44_PDT_2023
Cuda compilation tools, release 12.2, V12.2.128
Build cuda_12.2.r12.2/compiler.33053471_0
[root@rockylinux9 ~]# gcc --version
gcc (GCC) 11.4.1 20231218 (Red Hat 11.4.1-3)
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 ~]# source scl_source enable gcc-toolset-12
[root@rockylinux9 ~]#
[root@rockylinux9 ~]# gcc --version
gcc (GCC) 12.2.1 20221121 (Red Hat 12.2.1-7)
Copyright (C) 2022 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]# tar xf /Public/em/AmberTools24.tar.bz2
[root@rockylinux9 src]# tar xf /Public/em/Amber24.tar.bz2
[root@rockylinux9 src]# cd amber24_src/
[root@rockylinux9 amber24_src]# ls -CF
AmberTools/ benchmarks/ build/ cmake/ CMakeLists.txt cmake-packaging/ dat/ examples/ README recipe_at/ src/ test/ update_amber* updateutils/
[root@rockylinux9 amber24_src]# ./update_amber --update
Preparing to apply updates... please wait.
Downloading updates for AmberTools 24
Downloading AmberTools 24/update.1 (3.06 KB)
Applying AmberTools 24/update.1
Downloading AmberTools 24/update.2 (887 Bytes)
Applying AmberTools 24/update.2
Downloading AmberTools 24/update.3 (12.66 MB)
Downloading: [::::::::::::::::::::::::::::::::::::::::::::::::::] 100.0% Done.
Applying AmberTools 24/update.3
Downloading AmberTools 24/update.4 (1.00 KB)
Applying AmberTools 24/update.4
Downloading updates for Amber 24
Downloading Amber 24/update.1 (1.10 KB)
Applying Amber 24/update.1
Downloading Amber 24/update.2 (317.64 KB)
Downloading: [::::::::::::::::::::::::::::::::::::::::::::::::::] 100.0% Done.
Applying Amber 24/update.2
NOTE: update_amber only updates the raw source code! You must recompile if you want
any changes to take effect!
[root@rockylinux9 amber24_src]#
cmakeを使ってコンパイル設定を行いmake/make installな流れ
一応簡単に作れるシェルスクリプトが build/ に用意されてますが、
ここではcmakeを直に使って設定を行います
cmakeのオプションは https://ambermd.org/pmwiki/pmwiki.php/Main/CMake-Common-Options にある.
[root@rockylinux9 amber24_src]# ls -CF build/
clean_build* configure_cmake.py* run_cmake* run_cmake.sample*
[root@rockylinux9 amber24_src]# mkdir build24
[root@rockylinux9 amber24_src]# cd build24/
[root@rockylinux9 build24]# cmake .. -DCMAKE_INSTALL_PREFIX=/apps/amber/24 \
-DCOMPILER=GNU -DMPI=FALSE -DCUDA=TRUE \
-DINSTALL_TESTS=TRUE -DDOWNLOAD_MINICONDA=TRUE -DOPENMP=TRUE -DBUILD_GUI=TRUE
:
:
-- 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.11)
-- Build Perl Programs: ON
-- Build configuration: RELEASE
-- Target Processor: x86_64
-- Build Documentation: ON
-- Sander Variants: normal LES API LES-API QUICK-CUDA
-- Install location: /apps/amber/24/
-- Installation of Tests: ON
:
:
[root@rockylinux9 build24]# make; make install
[root@rockylinux9 build24]# ls /apps/amber/24/bin/*.cuda
/apps/amber/24/bin/cpptraj.cuda /apps/amber/24/bin/pbsa.cuda /apps/amber/24/bin/quick.cuda /apps/amber/24/bin/test-api.cuda
/apps/amber/24/bin/mdgx.cuda /apps/amber/24/bin/pmemd.cuda /apps/amber/24/bin/sander.quick.cuda
[root@rockylinux9 build24]# ls /apps/amber/24/bin/sander*
/apps/amber/24/bin/sander /apps/amber/24/bin/sander.LES /apps/amber/24/bin/sander.OMP /apps/amber/24/bin/sander.quick.cuda
[root@rockylinux9 build24]# ls /apps/amber/24/bin/pmemd*
/apps/amber/24/bin/pmemd /apps/amber/24/bin/pmemd.cuda /apps/amber/24/bin/pmemd.cuda_DPFP /apps/amber/24/bin/pmemd.cuda_SPFP /apps/amber/24/bin/pmemd.decomp
[root@rockylinux9 build24]#
「make -j 20」とかしたらコンパイルエラーになった...なので1coreでコンパイル. すっごく時間が掛かります
再度 cmake を実行するとエラーになる場合がある. その際は「/apps/src/amber24_src/CMakeCache.txt」を削除すれば回避できます.
「/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
複数枚の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」を追加します