GPU対応Gromacs 2016のインストール on macOS Sierra (OpenCL)

Updated on October 12, 2017.

環境: macOS Sierra 10.12.6, 3.3 GHz Intel Core i5, メモリ8 GB,グラフィックス AMD Radeon R9 M395 2048 MB.

Gromacsでは,GPUにnonbonded forceを計算させることでシミュレーションを高速化することができます.MacBook ProなどではGPUはIntel HD Graphics でGPU計算には利用できませんでしたが,iMacはAMDのGPUを積んでいるので利用してみることにしました.必要なライブラリ等はHomebrewでインストールしました.FFTW library for Gromacs must be compiled “only with –enable-sse2 (regardless of precision) even if your processors can take advantage of AVX extensions“. So, use “bottled” Homebrew FFTW not “self-compiled” Homebrew FFTW. If you compile fftw like “brew install fftw –with-fortran”, it enables SSE2, AVX, and AVX2.

$ brew <span class="token function">install</span> gcc cmake open-mpi boost fftw
$ curl ftp://ftp.gromacs.org/pub/gromacs/gromacs-2016.4.tar.gz -o gromacs-2016.4.tar.gz
$ <span class="token function">tar</span> xvzf gromacs-2016.4.tar.gz
$ <span class="token function">cd</span> gromacs-2016.4
$ <span class="token function">mkdir</span> build
$ <span class="token function">cd</span> build
$ ccmake <span class="token punctuation">..</span> -DCMAKE_C_COMPILER<span class="token operator">=</span>gcc -DCMAKE_CXX_COMPILER<span class="token operator">=</span>g++
を押してconfigureを開始します.

まず,非GPU版のGromacsをインストールします.BUILD_SHARED_LIBSをOFFに,BUILD_TESTINGをOFFに,CMAKE_INSTALL_PREFIXは /opt/gromacs-2016.4 にしました. を押して再configureしてから,[g] を押してMakefileを生成します.

$ <span class="token function">make</span> -j 8
$ <span class="token function">sudo</span> <span class="token function">make</span> <span class="token function">install</span>

次にGPU版のmdrunバイナリと関連ライブラリのみをインストールします.同じbuildディレクトリ中で,

$ ccmake <span class="token punctuation">..</span> -DCMAKE_C_COMPILER<span class="token operator">=</span>gcc-7 -DCMAKE_CXX_COMPILER<span class="token operator">=</span>g++-7

を再び実行し,今回はGMX_GPU,GMX_USE_OPENCL,BUILD_MDRUN_ONLYをONにします. を押して再configureしてから,[g] を押してMakefileを生成します.

$ <span class="token function">make</span> -j 8
$ <span class="token function">sudo</span> <span class="token function">make</span> <span class="token function">install</span>

これで,GPU版のMD実行バイナリ (mdrun) 等がインストールされます.

GPUによってどの程度高速化されているか,CPUのみの場合と比較しました.

通常版は “gmx mdrun”,GPU版は単に “mdrun” コマンドで実行します.mdrunを実行すると以下のように表示され,GPUで計算が行われることが分かります.

Running on 1 node with total 4 logical cores, 1 compatible GPU
Hardware detected:
  CPU info:
    Vendor: GenuineIntel
    Brand:  Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz
    SIMD instructions most likely to fit this hardware: AVX2_256
    SIMD instructions selected at GROMACS compile time: AVX2_256
  GPU info:
    Number of GPUs detected: 1
    #0: name: AMD Radeon R9 M395 Compute Engine, vendor: AMD, device version: OpenCL 1.2 , stat: compatible

Reading file nvtem.tpr, VERSION 5.1.4 (single precision)
Using 1 MPI thread
Using 4 OpenMP threads 

1 compatible GPU is present, with ID 0
1 GPU auto-selected for this run.
Mapping of GPU ID to the 1 PP rank in this node: 0

Selecting kernel for AMD

原子数1万2千, 100 ps, cutoff 1.4 nm:

  • CPU (4 cores) のみ, 247秒
  • CPU (4 cores) + 1 GPU,166秒,GPU計算時間/CPU計算時間 = 3.005

高速化されていました.CPUのみでは4 coresがフル可動していましたが,GPU版ではGPUの計算が終わるのをCPUが待っているバランスのためCPUの稼働率は1/3ぐらいでした.AMBER力場はvdW相互作用のカットオフを1.0 nm (10 Å) としてフィッティングされていてGromacsのデフォルトも1.0 nmなので,cutoffを 1.0 nmに変更してみました.
原子数1万2千, 100 ps, cutoff 1.0 nm:

  • CPU (4 cores) のみ, 140秒
  • CPU (4 cores) + 1 GPU,123秒,GPU計算時間/CPU計算時間 = 1.785

GPU/CPU比は改善され1に近付きましたが,CPUのみとの計算時間の差が縮まりました.

原子数25万, 10 ps, cutoff 1.4 nm:

  • CPU (4 cores) のみ, 520秒
  • CPU (4 cores) + 1 GPU,285秒,GPU計算時間/CPU計算時間 = 2.686

1.8倍速でした.スピードは7.9 h/nsでした.スパコンのCPU 8 coresでは13.1 h/nsでした.

画面をスリープさせていれば,GPU計算の効率がさらに上がります.
(了)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください