• トップ
  • G-DEPについて
  • ご購入ガイド
  • サポート
  • お問い合わせ

G-DEPトップ  >  G-DEPの高速演算記  >  高速演算記 第14回 分子科学研究所 丸山 豊博士

高速演算記 第14回 分子科学研究所 丸山 豊博士

今回の高速演算記第14回は前回に引き続き、私共G-DEPのユーザーであり、先日行われたNVIDIA GTC Workshop Japan 2011テクニカルセッションのプログラムでもご登壇された分子科学研究所 丸山豊博士に、「multi-GPUへの実装と3D-RISM理論の創薬への適用」に関して寄稿頂きました。 

multi-GPUへの実装と3D-RISM理論の創薬への適用

4 multi-GPUへの実装

 single-GPUで実用的な3D-RISMプログラムを実装することができた。しかし、GPUに搭載されているメモリ量による制約のために計算対象が制限されてしまう。例えば水の計算では水の酸素と水素の2成分の計算であるが、NaCl水溶液ではさらにNaイオンとClイオンの成分が加わるために必要なメモリは2倍となる。さらに創薬への適用を考えた場合、薬効分子の構造が複雑になればなるほど必要なメモリが増加する。通常のワークステーションクラスタで使用メモリを増やすには、計算ノードを増加させればいい。それと同じように使用可能なメモリを増やす目的でmulti-GPU化を行った。

 まず、multi-GPU化の方針を説明する。cudaは4.0を使用し、シングルスレッドでmulti-GPU化を行った。図1に3D-RISMプログラムのフローチャートを示す。繰返し計算の中でKHクロージャ及び3D-RISM方程式(KH closure equation、3D-RISM equation)の計算は完全に各GPUで独立に計算できる。例えばsingle-GPU用のコードでカーネルを呼びだす部分
            kh <<< g, b >>> (dtr, dt, du);
cuda4.0でmulti-GPU用に変更するには、pをGPUの数として
      for (int i = 0; i < p; ++i) {
        cudaSetDevice(i);
        kh <<< gr, b >>> (dtr[i], dt[i], du[i]);
      }

とするだけで良い。この部分のカーネルコードは全く変更していない。(注: 簡単のためにcudaSetDeviceの引数をiとしたが、計算に使用するGPUの割り当てが0からp-1でないと正しく動かない。計算機の構成によっては、配列等による管理が必要である。) また、収束判定(Convergence?)は各GPUでReductionを行い、最終的にCPUで・・・

続きを読むには...

この記事は会員限定のため、G-DEP会員登録(無料)が必要となります。
未登録の方は「登録」ボタンをクリックしG-DEP会員登録を行ってください。
※会員登録をされますと記事の閲覧の他、コメント投稿も可能になります。

新規登録  ログイン