#author("2021-02-21T13:11:10+00:00","default:sysosa","sysosa")
#author("2021-02-21T16:28:57+00:00","default:sysosa","sysosa")
本家様 [[http://www.gromacs.org/>+http://www.gromacs.org/]]

&size(10){ライセンスは version4.6以降は「GNU Lesser General Public License」};

***入手先 [#ff3b20fd]
[[http://manual.gromacs.org/documentation/>+http://manual.gromacs.org/documentation/]]
2021.01現在「GROMACS 2021 series」が発行されて「2021 released on January 28th」に2021の初回分がリリースされた.
#code(nonumber){{
[root@c ~]# cd /apps/src
[root@c src]# curl -O ftp://ftp.gromacs.org/gromacs/gromacs-2021.tar.gz
}}


***コンパイル/下準備 [#e8600d21]
バイナリー提供はないようで、各自でコンパイルが必要
コンパイル要件とかは [[https://manual.gromacs.org/documentation/2021/install-guide/index.html>+https://manual.gromacs.org/documentation/2021/install-guide/index.html]]参照で。

「GROMACS 2021 series」でのコンパイラは
-GNU (gcc/libstdc++) 7
-Intel (icc) 19.1
-LLVM (clang/libc++) 5
-Microsoft (MSVC) 2017 15.7

がサポートで、CentOS7はGCC 4.8.5、CentOS8は GCC 8.3.1なのでCentOS8なら基本大丈夫. でもCentOS7でコンパイルするには
[[CentOS/devtoolset]]を参照にdevtoolset-9とかインストールされればいいのかと.

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

***CentOS7 [#ha92efdd]
ここではCentOS7にてコンパイルします. CentOS7の既定のGCCは 4.8.5 なのでまず[[CentOS/devtoolset]]を参照して
devtoolset-9のGCC-9を使えるようにします
#code(nonumber){{
[root@centos7 ~]# source scl_source enable devtoolset-9
[root@centos7 ~]# gcc --version
gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
Copyright (C) 2019 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 ~]#
}}
ソースコードを取得して展開します

#code(nonumber){{
[root@centos7 ~]# mkdir -p /apps/src && cd $_
[root@centos7 src]# curl -O ftp://ftp.gromacs.org/gromacs/gromacs-2021.tar.gz
[root@centos7 src]# tar xf gromacs-2021.tar.gz
[root@centos7 src]# cd gromacs-2021/
[root@centos7 gromacs-2021]# ls -CF
admin/   cmake/          CPackInit.cmake    INSTALL            scripts/  tests/
api/     CMakeLists.txt  CTestConfig.cmake  python_packaging/  share/
AUTHORS  COPYING         docs/              README             src/
[root@centos7 gromacs-2021]#
}}

コンパイルは[[http://manual.gromacs.org/documentation/current/install-guide/index.html>+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で準備します
&size(10){CentOS7ではcmakeは2.8.12とかでgromacsはcmake 3.4.3以上が求められます。「yum install cmake3」で3.13.4を導入してください。その際は「cmake」の代わりに「cmake3」を使用します};
#code(nonumber){{
[root@centos7 gromacs-2021]# mkdir b && cd $_
[root@centos7 b]#
[root@centos7 b]# yum install fftw-devel ImageMagick
[root@centos7 b]#
[root@centos7 b]# cmake3 .. -DCMAKE_INSTALL_PREFIX=/apps/gromacs-2021.0
-- The C compiler identification is GNU 9.3.1
-- The CXX compiler identification is GNU 9.3.1
-- Check for working C compiler: /opt/rh/devtoolset-9/root/usr/bin/cc
-- Check for working C compiler: /opt/rh/devtoolset-9/root/usr/bin/cc - works
(中略
 cudaがあるのかとか、mpiは何が入っているかとか調べ上げて、OS由来のを採用するか、gromacs持ち込みのライブラリを
 使うか勝手に検討してくれます。

[root@centos7 b]# make; make install
}}

ちょいと作られたファイルを確認
#code(nonumber){{
[root@centos7 ~]# ls -l /apps/gromacs-2021.0/bin/
total 292
-rwxr-xr-x. 1 root root   3382 Jan 28 22:36 demux.pl
-rwxr-xr-x. 1 root root 117440 Feb 21 00:21 gmx
-rw-r--r--. 1 root root 139816 Jan 28 22:37 gmx-completion.bash
-rw-r--r--. 1 root root     37 Feb 21 00:04 gmx-completion-gmx.bash
-rwxr-xr-x. 1 root root    570 Feb 21 00:04 GMXRC
-rwxr-xr-x. 1 root root   3143 Feb 21 00:04 GMXRC.bash
-rwxr-xr-x. 1 root root   3045 Feb 21 00:04 GMXRC.csh
-rwxr-xr-x. 1 root root    120 Feb 21 00:04 GMXRC.zsh
-rwxr-xr-x. 1 root root   9008 Jan 28 22:36 xplor2gmx.pl
[root@centos7 ~]#
[root@centos7 ~]# ls -l /apps/gromacs-2021.0/lib64/
total 19540
lrwxrwxrwx. 1 root root       14 Feb 21 01:06 libgmxapi.so -> libgmxapi.so.0
lrwxrwxrwx. 1 root root       18 Feb 21 01:06 libgmxapi.so.0 -> libgmxapi.so.0.2.0
-rwxr-xr-x. 1 root root   267848 Feb 21 00:21 libgmxapi.so.0.2.0
lrwxrwxrwx. 1 root root       15 Feb 21 01:06 libgromacs.so -> libgromacs.so.6
lrwxrwxrwx. 1 root root       19 Feb 21 01:06 libgromacs.so.6 -> libgromacs.so.6.0.0
-rwxr-xr-x. 1 root root 18934296 Feb 21 00:21 libgromacs.so.6.0.0
lrwxrwxrwx. 1 root root       13 Feb 21 01:06 libnblib.so -> libnblib.so.0
lrwxrwxrwx. 1 root root       17 Feb 21 01:06 libnblib.so.0 -> libnblib.so.0.1.0
-rwxr-xr-x. 1 root root   801376 Feb 21 00:21 libnblib.so.0.1.0
drwxr-xr-x. 2 root root       27 Feb 21 01:06 pkgconfig
[root@centos7 ~]#
}}

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

#code(nonumber){{
[root@centos7 ~]# cd /apps/src/gromacs-2021/
[root@centos7 gromacs-2021]# mkdir b-mpi && cd $_

[root@centos7 b-mpi]# cmake3 .. -DCMAKE_INSTALL_PREFIX=/apps/gromacs-2021.0 -DGMX_MPI=on
[root@centos7 b-mpi]# make && make install
}}
#code(nonumber){{
[root@centos7 ~]# ls -l /apps/gromacs-2021.0/bin/
total 412
-rwxr-xr-x. 1 root root   3382 Jan 28 22:36 demux.pl
-rwxr-xr-x. 1 root root 117440 Feb 21 00:21 gmx
-rw-r--r--. 1 root root 139816 Jan 28 22:37 gmx-completion.bash
-rw-r--r--. 1 root root     37 Feb 21 00:04 gmx-completion-gmx.bash
-rw-r--r--. 1 root root     41 Feb 21 01:15 gmx-completion-gmx_mpi.bash
-rwxr-xr-x. 1 root root 117544 Feb 21 01:29 gmx_mpi
-rwxr-xr-x. 1 root root    570 Feb 21 01:15 GMXRC
-rwxr-xr-x. 1 root root   3143 Feb 21 01:15 GMXRC.bash
-rwxr-xr-x. 1 root root   3045 Feb 21 01:15 GMXRC.csh
-rwxr-xr-x. 1 root root    120 Feb 21 01:15 GMXRC.zsh
-rwxr-xr-x. 1 root root   9008 Jan 28 22:36 xplor2gmx.pl
}}

***GPUと絡めて [#c9b0d1c6]
#code(nonumber){{
[root@centos7 ~]# cd /apps/src/gromacs-2021/
[root@centos7 gromacs-2021]# mkdir b-gpu && cd $_

[root@centos7 b-gpu]# cmake3 .. -DCMAKE_INSTALL_PREFIX=/apps/gromacs-2021.0 -DGMX_MPI=on -DGMX_GPU=CUDA
[root@centos7 b-gpu]# make
}}
cuファイルのコンパイルでエラーが発生します.



***メモ [#k19cb12c]
-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 [#jed91bc8]
#code(nonumber){{
#%Module

set gromacs        /apps/gromacs-2019.4

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