本家様 http://www.gromacs.org/

ライセンスは version4.6以降は「GNU Lesser General Public License」

入手先

http://manual.gromacs.org/documentation/

2022.11現在「GROMACS 2022 series」で「2022.3 released September 2nd, 2022」が最新のご様子. これをインストールしてみる

インストール先は CentOS7 で RTX A2000 搭載の esxi 仮想マシンです.

[root@centos7 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
 
[root@centos7 ~]# nvidia-smi -L
GPU 0: NVIDIA RTX A2000 (UUID: GPU-23cc3ee7-31d3-a068-2f61-5aa00052d084)
 
[root@centos7 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  520.56.06  Thu Oct  6 21:38:55 UTC 2022
GCC version:  gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
 
[root@centos7 ~]# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_May__3_18:49:52_PDT_2022
Cuda compilation tools, release 11.7, V11.7.64
Build cuda_11.7.r11.7/compiler.31294372_0
 
[root@centos7 ~]# mkdir /apps/src
[root@centos7 ~]# cd /apps/src/
[root@centos7 src]# curl -O ftp://ftp.gromacs.org/gromacs/gromacs-2022.3.tar.gz

コンパイル/下準備

バイナリー提供はないようで、各自でソースコードからコンパイルが必要

コンパイル要件とかは https://manual.gromacs.org/current/install-guide/index.htmlを参照すると

「GROMACS 2021 series」でのコンパイラは

  • GNU (gcc/libstdc++) 7
  • LLVM (clang/libc++) 7
  • Microsoft (MSVC) 2019

となっている. ドキュメントにはしれっとPGIを(略
Intel様のコンパイラで古くからあるicc/icpcが外れ、代わりにメインのllvmなコンパイラicx/icpxでコンパイルができるそうな.

ここではCentOS7でgromacsを使いたいのですがCentOS7の標準GCCは 4.8.5で無理. 一応RHEL8系は GCC 8.3.1なので基本大丈夫.
ないなら CentOS/devtoolset で最新GCCを追加して対応してみる. ここでは devtoolset-11(GCC 11.2.1) を使ってみる

[root@centos7 src]# yum install ImageMagick python3-devel

あとBLASが必要といわれるがgromaccs内に一応あるのでそのままで. intelのMKLがあるならそこのBLASを使うのもいい.
python3-sphinxも求められるが、1.6.1以上を求められる. centos7のpython3-sphinxは1.2.3で無理みたい.
ドキュメント向けなのでここでは対応しない

CentOS7

devtoolset-11のGCC-11を使えるようにします CentOS/devtoolset

[root@centos7 ~]# source scl_source enable devtoolset-11
 
[root@centos7 ~]# gcc --version
gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
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@centos7 ~]#

取得したソースコードを展開します

[root@centos7 src]# tar xf ./gromacs-2022.3.tar.gz
[root@centos7 src]# cd gromacs-2022.3/
 
[root@centos7 gromacs-2022.3]# ls -CF
admin/  AUTHORS  CMakeLists.txt  CPackInit.cmake    docs/    python_packaging/  scripts/  src/
api/    cmake/   COPYING         CTestConfig.cmake  INSTALL  README             share/    tests/
 
[root@centos7 gromacs-2022.3]#

コンパイルはhttp://manual.gromacs.org/documentation/current/install-guide/index.htmlを参照します。

コンパイルオプション:

  • 「-DGMX_DOUBLE=on to build GROMACS in double precision (slower, and not normally useful)」
    MDなのに単精度でいいみたい。
  • 「-DGMX_GPU=on to build using nvcc to run using NVIDIA CUDA GPU acceleration or an OpenCL GPU」
  • 「-DGMX_USE_OPENCL=on to build with OpenCL support enabled. GMX_GPU must also be set.」
    この2つから、nvidiaGPUを使うなら「-DGMX_GPU=on」のみで、nvidiaGPUでもOpenCLで使いたいなら
    「-DGMX_GPU=on」と「-DGMX_USE_OPENCL=on」を同時に指定する必要があるみたい。
    OpenCL対応なのでAMDさんのGPUカードも使えるみたい
  • 「-DGMX_SIMD=xxx to specify the level of SIMD support of the node on which GROMACS will run」
    CPUに乗っているSIMD拡張命令セット。MMXとかSSE、AVXとか。「lscpu」でFlagsに表示されるもの
    指定するのは限られているようで、SSE2、SSE4.1、avxらを採用できるみたい。
    複数の計算機を使って計算する際、その最大公約数を指定するみたい
  • 「-DCMAKE_INSTALL_PREFIX=xxx to install GROMACS to a non-standard location (default /usr/local/gromacs)」
    インストール先。既定では「/usr/local/gromacs」みたい
  • 「-DBUILD_SHARED_LIBS=off to turn off the building of shared libraries to help with static linking」
    実行ファイルに関連するライブラリを呑ませるか、必要になったら動的に呑ませるか。まぁークラスターで計算するなら呑ませたほうがいいのかな
  • 「-DREGRESSIONTEST_DOWNLOAD」
    makeの後に「make check」が実行できるようになって、コンパイル品のテストができる
    「regressiontests-2019.4.tar.gz」とかで提供されているパッケージをダウンロードして、
    その中でgromacsを動かして同様のテストができるみたい
  • 「-DGMX_BUILD_OWN_FFTW=ON」
    makeの最中にFFTWをダウンロードしてコンパイルします。まぁ既にfftwのパッケージがインストールさえていれば不要かな。
    ただし、「-DGMX_DOUBLE」に被るが単精度もしくは倍制度の適切なライブラリが入っていれば
  • 「-DGMX_MPI=on」
    複数の計算機を使って計算するなら、これを入れる。自動的にバイナリー接尾語として「_mpi」が付くみたい。
    openmpiは使えそうで、「module load mpi」として準備してからコンパイルする必要がある。

cmakeで準備します
CentOS7ではcmakeは2.8.12とかでgromacsはcmake 3.4.3以上が求められます。「yum --enablerepo=epel install cmake3」で3.17.5を導入してください

[root@centos7 gromacs-2022.3]# yum --enablerepo=epel install cmake3
 
[root@centos7 gromacs-2022.3]# mkdir build && cd $_
[root@centos7 build]#
 
[root@centos7 build]# cmake3 .. -DCMAKE_INSTALL_PREFIX=/apps/gromacs-2022.3
-- The C compiler identification is GNU 11.2.1
-- The CXX compiler identification is GNU 11.2.1
-- Check for working C compiler: /opt/rh/devtoolset-11/root/usr/bin/cc
-- Check for working C compiler: /opt/rh/devtoolset-11/root/usr/bin/cc - works
 
(中略
 cudaがあるのかとか、mpiは何が入っているかとか調べ上げて、OS由来のを採用するか、gromacs持ち込みのライブラリを
 使うか勝手に検討してくれます。
 
[root@centos7 build]# make -j 20; make install

ちょいと作られたファイルを確認

[root@centos7 build]# ls -l /apps/gromacs-2022.3/bin/
total 388
-rwxr-xr-x. 1 root root   3382 Sep  2 16:49 demux.pl
-rwxr-xr-x. 1 root root 215464 Nov  4 04:33 gmx
-rw-r--r--. 1 root root 140282 Sep  2 16:50 gmx-completion.bash
-rw-r--r--. 1 root root     37 Nov  4 04:28 gmx-completion-gmx.bash
-rwxr-xr-x. 1 root root    570 Nov  4 04:28 GMXRC
-rwxr-xr-x. 1 root root   3228 Nov  4 04:28 GMXRC.bash
-rwxr-xr-x. 1 root root   3045 Nov  4 04:28 GMXRC.csh
-rwxr-xr-x. 1 root root    120 Nov  4 04:28 GMXRC.zsh
-rwxr-xr-x. 1 root root   9008 Sep  2 16:49 xplor2gmx.pl
[root@centos7 build]#
[root@centos7 build]# ls -l /apps/gromacs-2022.3/lib64/
total 22420
lrwxrwxrwx. 1 root root       14 Nov  4 04:33 libgmxapi.so -> libgmxapi.so.0
lrwxrwxrwx. 1 root root       18 Nov  4 04:33 libgmxapi.so.0 -> libgmxapi.so.0.3.1
-rwxr-xr-x. 1 root root   379448 Nov  4 04:33 libgmxapi.so.0.3.1
lrwxrwxrwx. 1 root root       15 Nov  4 04:33 libgromacs.so -> libgromacs.so.7
lrwxrwxrwx. 1 root root       19 Nov  4 04:33 libgromacs.so.7 -> libgromacs.so.7.0.0
-rwxr-xr-x. 1 root root 20628720 Nov  4 04:33 libgromacs.so.7.0.0
lrwxrwxrwx. 1 root root       16 Nov  4 04:33 libmuparser.so -> libmuparser.so.2
lrwxrwxrwx. 1 root root       20 Nov  4 04:33 libmuparser.so.2 -> libmuparser.so.2.3.2
-rwxr-xr-x. 1 root root   615912 Nov  4 04:29 libmuparser.so.2.3.2
lrwxrwxrwx. 1 root root       17 Nov  4 04:33 libnblib_gmx.so -> libnblib_gmx.so.0
lrwxrwxrwx. 1 root root       21 Nov  4 04:33 libnblib_gmx.so.0 -> libnblib_gmx.so.0.1.0
-rwxr-xr-x. 1 root root  1324144 Nov  4 04:33 libnblib_gmx.so.0.1.0
drwxr-xr-x. 2 root root       46 Nov  4 04:33 pkgconfig
[root@centos7 build]#

openmpiと絡めて

単一のマシンで計算するのでなく、複数の計算機を使って計算する際には MPI を絡める必要がある
gromacsは openmpi のほかにも MPICH も対応しているが、ここでは openmpi で作ってみる。

[root@centos7 build]# rm -rf ./*
[root@centos7 build]# module load mpi/openmpi-x86_64
[root@centos7 build]# which mpirun
/usr/lib64/openmpi/bin/mpirun
 
[root@centos7 build]# cmake3 .. -DCMAKE_INSTALL_PREFIX=/apps/gromacs-2022.3 -DGMX_MPI=on
 
[root@centos7 build]# make -j 20; make install
[root@centos7 build]# ls -l /apps/gromacs-2022.3/bin/
total 604
-rwxr-xr-x. 1 root root   3382 Sep  2 16:49 demux.pl
-rwxr-xr-x. 1 root root 215464 Nov  4 04:33 gmx
-rw-r--r--. 1 root root 140282 Sep  2 16:50 gmx-completion.bash
-rw-r--r--. 1 root root     37 Nov  4 04:28 gmx-completion-gmx.bash
-rw-r--r--. 1 root root     41 Nov  4 04:35 gmx-completion-gmx_mpi.bash    <--追加された
-rwxr-xr-x. 1 root root 215568 Nov  4 04:39 gmx_mpi                        <--追加された
-rwxr-xr-x. 1 root root    570 Nov  4 04:35 GMXRC
-rwxr-xr-x. 1 root root   3228 Nov  4 04:35 GMXRC.bash
-rwxr-xr-x. 1 root root   3045 Nov  4 04:35 GMXRC.csh
-rwxr-xr-x. 1 root root    120 Nov  4 04:35 GMXRC.zsh
-rwxr-xr-x. 1 root root   9008 Sep  2 16:49 xplor2gmx.pl

GPUと絡めて

[root@centos7 build]# rm -rf ./*
[root@centos7 build]# which nvcc
/usr/local/cuda/bin/nvcc
 
[root@centos7 build]#
[root@centos7 build]# cmake3 .. -DCMAKE_INSTALL_PREFIX=/apps/gromacs-2022.3 -DGMX_GPU=CUDA
[root@centos7 build]# make -j 20 ; make install
 
[root@centos7 build]# ldd /apps/gromacs-2022.3/bin/gmx
        linux-vdso.so.1 =>  (0x00007ffd2b3d7000)
        libgromacs.so.7 => /apps/gromacs-2022.3/bin/../lib64/libgromacs.so.7 (0x00007f6a6b169000)
        libgomp.so.1 => /lib64/libgomp.so.1 (0x00007f6a6af43000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6a6ad27000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f6a6aa1f000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f6a6a71d000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6a6a507000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f6a6a139000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f6a69f35000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f6a69d2d000)
        libcufft.so.10 => /usr/local/cuda/lib64/libcufft.so.10 (0x00007f6a612a2000)             <--- cudaライブラリ
        libfftw3f.so.3 => /lib64/libfftw3f.so.3 (0x00007f6a60f29000)
        libmuparser.so.2 => /apps/gromacs-2022.3/bin/../lib64/../lib64/libmuparser.so.2 (0x00007f6a6cca6000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f6a6cb24000)
[root@centos7 build]#

メモ

  • gromacs-2016.6
    CentOS7の標準cmake-2.8.12.2 ,gcc-4.8.5 ,openmpi-1.10.7でコンパイル可能
    cuda-10.1
  • gromacs-2018.8
    epel由来のcmake-3.6.8, CentOS7以来のgcc-4.8.5 ,openmpi-1.10.7でコンパイル可能
    cuda-10.1
  • gromacs-2019.6
    epel由来のcmake-3.6.8, CentOS7以来のgcc-4.8.5 ,openmpi-1.10.7でコンパイル可能
    cuda-10.1
  • gromacs-2020.5
    ANSI C99 and C++14 対応が必要でCentOS7由来のgcc-4.8.5では無理
    cmake-3.6.8, devtoolset-7 ,openmpi-1.10.7, cuda-10.1でコンパイル可能
  • gromacs-2021
    ANSI C99 and C++17 対応が必要

Environment modules

#%Module
 
set gromacs        /apps/gromacs-2022.3
 
setenv GMXBIN      $gromacs/bin
setenv GMXDATA     $gromacs/share/gromacs
setenv GMXLDLIB    $gromacs/lib64
setenv GMXMAN      $gromacs/share/man
setenv GROMACS_DIR $gromacs
 
prepend-path PATH            $gromacs/bin
prepend-path LD_LIBRARY_PATH $gromacs/lib64
prepend-path MANPATH         $gromacs/share/man
prepend-path PKG_CONFIG_PATH $gromacs/lib64/pkgconfig

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-11-04 (金) 05:29:42 (24d)