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

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

入手先

http://manual.gromacs.org/documentation/
2019.10現在 2019.4 が最新版で、こちらを入手しました

コンパイル

バイナリー提供はないようで、各自でコンパイルが必要
コンパイル要件とかは http://manual.gromacs.org/documentation/2019.4/install-guide/index.html参照で。

ここではCentOS8にてコンパイルします。
まずは取得したソースコードを展開します

[root@c ~]# cd /apps/src/
 
[root@c src]# tar xzvf gromacs-2019.4.tar.gz
[root@c src]# cd gromacs-2019.4/
[root@c gromacs-2019.4]# ls -CF
admin/   CMakeLists.txt   CTestConfig.cmake  README    src/
AUTHORS  COPYING          docs/              scripts/  tests/
cmake/   CPackInit.cmake  INSTALL            share/
 
[root@c gromacs-2019.4]#

コンパイルは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 install cmake3」で3.13.4を導入してください。その際は「cmake」の代わりに「cmake3」を使用します

[root@c gromacs-2019.4]# mkdir b && cd $_
 
[root@c b]# cmake .. -DCMAKE_INSTALL_PREFIX=/apps/gromacs-2019.4
-- The C compiler identification is GNU 8.2.1
-- The CXX compiler identification is GNU 8.2.1
(中略
 cudaがあるのかとか、mpiは何が入っているかとか調べ上げて、OS由来のを採用するか、gromacs持ち込みのライブラリを
 使うか勝手に検討してくれます。
 
[root@c b]# make; make install

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

[root@c ~]# ls -l /apps/gromacs-2019.4/bin/
total 256
-rwxr-xr-x. 1 root root   3382 Oct  1 11:49 demux.pl
-rwxr-xr-x. 1 root root  81640 Oct 30 03:27 gmx
-rw-r--r--. 1 root root 139476 Oct  2 15:32 gmx-completion.bash
-rw-r--r--. 1 root root     37 Oct 30 02:42 gmx-completion-gmx.bash
-rwxr-xr-x. 1 root root    570 Oct 30 02:42 GMXRC
-rwxr-xr-x. 1 root root   2746 Oct 30 02:42 GMXRC.bash
-rwxr-xr-x. 1 root root   2997 Oct 30 02:42 GMXRC.csh
-rwxr-xr-x. 1 root root    120 Oct 30 02:42 GMXRC.zsh
-rwxr-xr-x. 1 root root   9008 Oct  1 11:49 xplor2gmx.pl
 
[root@c ~]# ls -l /apps/gromacs-2019.4/lib64/
total 18176
lrwxrwxrwx. 1 root root       15 Oct 30 12:13 libgromacs.so -> libgromacs.so.4
lrwxrwxrwx. 1 root root       19 Oct 30 12:13 libgromacs.so.4 -> libgromacs.so.4.0.0
-rwxr-xr-x. 1 root root 18608392 Oct 30 03:27 libgromacs.so.4.0.0
drwxr-xr-x. 2 root root       27 Oct 30 12:13 pkgconfig
 
[root@c ~]# ldd /apps/gromacs-2019.4/bin/gmx
        linux-vdso.so.1 (0x00007ffd8713c000)
        libgromacs.so.4 => /apps/gromacs-2019.4/bin/../lib64/libgromacs.so.4 (0x00007fcf0e5e7000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fcf0e252000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fcf0ded0000)
        libgomp.so.1 => /lib64/libgomp.so.1 (0x00007fcf0dca0000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fcf0da88000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fcf0d868000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fcf0d4a4000)
        libhwloc.so.5 => /lib64/libhwloc.so.5 (0x00007fcf0d265000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fcf0d061000)
        librt.so.1 => /lib64/librt.so.1 (0x00007fcf0ce58000)
        libfftw3f.so.3 => /lib64/libfftw3f.so.3 (0x00007fcf0ca41000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fcf0f87f000)
        libnuma.so.1 => /lib64/libnuma.so.1 (0x00007fcf0c835000)
        libltdl.so.7 => /lib64/libltdl.so.7 (0x00007fcf0c62b000)
 
[root@c ~]# ldd /apps/gromacs-2019.4/lib64/libgromacs.so.4
        linux-vdso.so.1 (0x00007fff25681000)
        libhwloc.so.5 => /lib64/libhwloc.so.5 (0x00007f1250fdc000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f1250dd8000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f1250bcf000)
        libfftw3f.so.3 => /lib64/libfftw3f.so.3 (0x00007f12507b8000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1250598000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f1250203000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f124fe81000)
        libgomp.so.1 => /lib64/libgomp.so.1 (0x00007f124fc51000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f124fa39000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f124f675000)
        libnuma.so.1 => /lib64/libnuma.so.1 (0x00007f124f469000)
        libltdl.so.7 => /lib64/libltdl.so.7 (0x00007f124f25f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f12524b3000)
[root@c ~]#

openmpiを絡めて

単一のマシンで計算するのでなく、複数の計算機を使って計算する際には mp を絡める必要がある
gromacsは openmpi のほかにも MPICH も対応しているが、ここでは openmpi で作ってみる。
まぁ単純に「yum install openmpi」の後に正しく環境をロードできていれば、gromacsが勝手に読み込んでくれる

[root@c ~]# yum install openmpi
 
[root@c ~]# module load mpi   (別のターミナルか、一度ログアウトして再ログインしてから)
[root@c ~]# cd /apps/src/gromacs-2019.4/b
[root@c b]# cmake .. -DCMAKE_INSTALL_PREFIX=/apps/gromacs-2019.4 -DGMX_MPI=on
 :
-- MPI is not compatible with thread-MPI. Disabling thread-MPI.
-- Found MPI_C: /usr/lib64/openmpi/lib/libmpi.so (found version "3.1")
-- Found MPI_CXX: /usr/lib64/openmpi/lib/libmpi_cxx.so (found version "3.1")
-- Found MPI: TRUE (found version "3.1")
 :
-- Using default binary suffix: "_mpi"
-- Using default library suffix: "_mpi"
 :
[root@c b]# make; make install

作ったバイナリーには「_mpi」が付与されている

[root@c ~]# ls -l /apps/gromacs-2019.4/bin/gmx_mpi
-rwxr-xr-x. 1 root root 81640 Oct 30 13:09 /apps/gromacs-2019.4/bin/gmx_mpi
 
[root@c ~]# ldd /apps/gromacs-2019.4/bin/gmx_mpi
        linux-vdso.so.1 (0x00007ffe349aa000)
        libgromacs_mpi.so.4 => /apps/gromacs-2019.4/bin/../lib64/libgromacs_mpi.so.4 (0x00007fa37fcff000)
        libmpi.so.40 => /usr/lib64/openmpi/lib/libmpi.so.40 (0x00007fa37f9f4000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fa37f65f000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fa37f2dd000)
        libgomp.so.1 => /lib64/libgomp.so.1 (0x00007fa37f0ad000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fa37ee95000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa37ec75000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fa37e8b1000)
        libhwloc.so.5 => /lib64/libhwloc.so.5 (0x00007fa37e672000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fa37e46e000)
        librt.so.1 => /lib64/librt.so.1 (0x00007fa37e265000)
        libfftw3f.so.3 => /lib64/libfftw3f.so.3 (0x00007fa37de4e000)
        libopen-rte.so.40 => /usr/lib64/openmpi/lib/libopen-rte.so.40 (0x00007fa37db95000)
        libopen-pal.so.40 => /usr/lib64/openmpi/lib/libopen-pal.so.40 (0x00007fa37d8eb000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007fa37d6e7000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fa37d4d0000)
        libevent-2.1.so.6 => /lib64/libevent-2.1.so.6 (0x00007fa37d277000)
        libevent_pthreads-2.1.so.6 => /lib64/libevent_pthreads-2.1.so.6 (0x00007fa37d074000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa380f78000)
        libnuma.so.1 => /lib64/libnuma.so.1 (0x00007fa37ce68000)
        libltdl.so.7 => /lib64/libltdl.so.7 (0x00007fa37cc5e000)
        libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fa37c786000)
[root@c ~]#

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2019-10-30 (水) 20:14:10 (46d)