CUDAでAmberを高速化!

出典: トータル・ディスクロージャ・サイト(事実をありのままに)

コア数に応じてスピードアップを望めるMD系アプリでは、コア数の多いGPUを使うことで、今までのCPUと比較してさらに速度向上が見込めます。

MD系で日本では特にポピュラーなAmberで、GPU用パッチが公開されていますので、それを試してみます。以下作業ログとベンチマーク結果です。

目次

バイナリ作成まで

基本的に AMBER GPU ACCELERATION SUPPORT (NVIDIA CUDA)(以下、パッチ本家サイトと呼びます) を真似します。

1. CUDA Patch v0.1 をダウンロード

次の両方とも必要です。

2. Amber10のソースを展開

> mkdir amber10.new
> cd amber10.new
> tar -xjf /どこか/Amber10.tar.bz2
> tar -xjf /どこか/AmberTools-1.2.tar.bz2

ここまでで amber10 ディレクトリができています。

以降、パッチ本家サイトではバグフィックスを適用するように書かれていますが(もちろん本来適用するべきですが)、適用してしまうと、CUDA Patch v0.1 の適用に失敗してしまいます(Hunk FAILED が大量に出ます)。手でパッチを当てたりしましたが、(途中どこかで間違えてしまったのか)コンパイルできてもセグメンテーションフォールトで実行できなかったので、今回はバグフィックスを適用しないことにしました。

3. CUDA Patch v0.1 を適用

> cd amber10
> tar xvzf /どこか/amber10_nvidia_cuda_support_v0.1.tar.gz
> patch -p0 < /どこか/amber10_nvidia_cude_support_v0.1.patch
(中略)
Hunk #3 FAILED at 391.
1 out of 3 hunks FAILED
(中略)
Hunk #12 FAILED at 1225.
1 out of 12 hunks FAILED

バグフィックスを適用しないままでも2つ適用エラーになりましたが、注意深くpatchファイルを読んで、手で該当ファイルを修正しました。

4. configure と make

> cd src/pmemd/
> ./configure linux_em64t_cuda gfortran nopar pubfft
> make
> make install

ここは特に問題なし。AMBERHOME/exe の下に pmemd.cuda というバイナリが出来上がります。

5. CPU(MPI並列)版の作成

GPU版と全く異なるディレクトリの下で作業することをお勧めします。GPU版でバグフィックスを適用しなかったので、こちらもバグフィックスを適用しませんでした。

pmemdを作る際のコンパイルオプションには、今回は、sgi_altix 向けですが ifort と mpi を使うコンフィグが標準提供されていますので、それを真似しました。 CPPFLAGS に OpenMPI のヘッダディレクトリを参照するよう指定を追加し、F90=mpif90、CC=mpicc、LOAD=mpif90 に修正してmakeです。詳細は割愛します。

PMEMDベンチマーク結果

パッチ本家サイトに載っているサンプルを試しました。実行環境は次のとおりです。

ベンチマーク実行環境
項目 CPUでの測定で使用した CPU+GPUでの測定で使用した
CPU Quad-core Intel Xeon E5540 @ 2.53GHz x 2 (8コア全部を使用) Quad-core Intel Xeon E5540 @ 2.53GHz x 2 (8コアあるが、1コアのみを使用)
GPU 使用せず Tesla C1060 x 1(Multiprocessor 30個 で Core 240個)
ノード数 1
OS CentOS release 5.3 (Final)
コンパイラ Intel Fortran Compiler 10.1
Intel C++ Compiler 10.1
gfortran
gcc 4.1.2
数値演算ライブラリ Intel MKL 10.1 使用せず
MPI OpenMPI 1.2.9 使用せず
CUDA 使用せず CUDA release 2.2
ソースコードバージョン AMBER 10 Release AMBER 10 Release + CUDA Patch v0.1

1) TRPCage = 304 atoms

AMBERHOME/test/cuda/ 以下にテスト用サンプルが置いてあるのでそれを真似してインプットを作成しました。

> cd $AMBERHOME/test/cuda
> mkdir liketheweb
> cd liketheweb
> cp ../trpcage/* .
> vi Run_md_trpcage

(mdinに次が入るように修正し上書き保存)
&cntrl
  imin=0,irest=1,ntx=5,
  nstlim=100000,dt=0.002,ntb=0,
  ntf=2,ntc=2,tol=0.000001,
  ntpr=1000, ntwx=1000, ntwr=50000,
  cut=9999.0, rgbmax=15.0,
  igb=1,ntt=0,nscm=0,
/

測定結果は次となりました。

ベンチマーク実行環境
構成 Total CPU time [seconds] 速度向上率
CPU 8core 109.83 1.00
CPU 1core + GPU 65.06 1.69

2) Myoglobin = 2492 atoms

まだ測定していません。

3) Nucleosome = 25095 atoms

まだ測定していません。

まとめ

パッチ本家サイトで報告どおりの速度向上が見られました。今回GPU高速化対象となっているのは Amber の中でも PMEMD("Particle Mesh Ewald Molecular Dynamics") だけですが、それでも絶対的に高い性能が得られることは大きな魅力です。


この記事へのコメントをお寄せください

  • サイトへの書き込みに差し支えございましたら トータルディスクロージャーサイトサポート係へメールをお送りください
  • トータル・ディスクロージャ・サイトに投稿された文章と画像は、すべてその著作権がHPCシステムズ株式会社に帰属し、HPCシステムズ株式会社が著作権を所有することに同意してください。
  • あなたの文章が他人によって自由に編集、配布されることを望まない場合は、投稿を控えてください。
  • コメントを書き込む場合は名前にひらがなを織り交ぜてください。
  • あなたの投稿する文章と画像はあなた自身によって書かれたものであるか、パブリック・ドメインかそれに類する自由なリソースからの複製であることを約束してください。あなたが著作権を保持していない作品を許諾なしに投稿してはいけません!

<comments hideform="false" />


Comments

ノート:CUDAでAmberを高速化!

個人用ツール