220 likes | 351 Views
PSC2001 成果発表. 東京大学大学院理学系研究科 情報科学専攻修士 2 年 医科学研究所ヒトゲノム解析センター DNA 情報解析分野所属 蓬来祐一郎. 産総研生命情報科学研究センター (CBRC) で実習. PSC2001 問題. カットオフのある分子動力学計算 粒子数最大40000 初期値を受け取って、与えられたステップ数後の粒子の位置と速度を返す カットオフ判定にもっとも時間がかかる ( すべてまじめに計算すると O(N^2) かかる ) → カットオフ判定の回数を減らす. カットオフアルゴリズム. 固定セルを用いる方法
E N D
PSC2001成果発表 東京大学大学院理学系研究科 情報科学専攻修士2年 医科学研究所ヒトゲノム解析センター DNA情報解析分野所属 蓬来祐一郎 産総研生命情報科学研究センター(CBRC)で実習
PSC2001問題 • カットオフのある分子動力学計算 • 粒子数最大40000 • 初期値を受け取って、与えられたステップ数後の粒子の位置と速度を返す • カットオフ判定にもっとも時間がかかる (すべてまじめに計算するとO(N^2)かかる) →カットオフ判定の回数を減らす
カットオフアルゴリズム • 固定セルを用いる方法 (参考:チューニング技法虎の巻[青山:IBM]) • 木構造を用いた方法 (参考:Barnes-HatのTree-code)
カットオフ半径内 固定セルを用いる方法(セルインデックス法) X軸方向 カットオフ半径内にある可能性がある粒子を すべてかつ高速に集めたい
セルの 用意 カットオフ半径 ×N≡カットオフ半径+ε とすると、粒子を含むセル2N+1個の 範囲に存在する粒子のみ考慮すればよい。 (3次元ならば(2N+1)^3個のセル) 固定セルを用いる方法2(セルインデックス法) 1次元方向で全粒子が存在する範囲 なるべく多くの粒子がセル配列 に正しく納まるようにする
セルインデックス法の問題点 • セル配列の大きさがあまり多く取れない。 (今回はセルサイズを(カットオフ半径/3)とし、 最大128x128x128個(選択ミス)のセルを用意した。 • 粒子の分散が大きいと、距離の遠く離れた粒子が多数同じセルに入れられてしまう。 →カットオフ判定に最悪、O(N^2)かかってしまう。
木構造を利用したカットオフ 木構造の作成
木構造を利用したカットオフ2 ご近所リストの作成
セルインデックス法 もしくは ツリーコード プログラム構造 for each step begin make a cell structure for each particle i begin make a list containing all particles which can be inside of the cut-off radius of particle i. for eachj in the list begin if distance(i, j)< cut-off radius calculate force endif end end calculate next position and velocity end
並列化 • セル構造を作る部分は、並列化を行わなかった。 • 粒子をそれぞれのCPUに割り当て、それぞれのCPUが行う力計算が均等になるように粒子の再分散を行った。
コンテスト後の実験 • Scoreクラスタ 1 node CPU :Dual PentiumⅢ 933MHz RAM:1Gbytes Network: Myrinet2000 x 最大16 node使用して実験
本選問題実行時間 506.8秒 127.5秒
提出プログラムの欠陥 • セルインデックス法で最大のセルの個数を128x128x128としたため、この配列のクリア等の処理にかかる時間が、力計算よりも圧倒的に時間がかかってしまった → セル構造を作成する部分を高速化 (最大セルサイズを40x40x40 int → unsigned short 必要な部分だけセルのデータを作成するよう に変更) したものと比較
本選問題実行時間2 45.7秒
木構造が有利なデータ • 非常に広い粒子分布を持つデータ →セルサイズ固定だと多くの粒子を同じセル(端のセル)にいれてしまい,行わなければならないカットオフ判定が増える。 • 粒子分布が非常に密な場合 →より精確なカットオフ処理を行えるため
木構造が有利なデータ2 • 40000粒子がx方向に幅1で直線的に分布するデータで50ステップの実験を行った。 • 以下がその結果
プラットホームごとの違い • Score 通信が速いため並列化部分を少し増やした。 C言語+MPI版を提出。(CPU数-16x2) • SGI OpenMPの場合、共有メモリのアクセスが遅いためかMPIの方が高速だった。 Fortran+MPI版を提出。(CPU数-32) • SUN 少ない粒子の場合、MPIの方が速かったが、 予選問題の場合、OpenMPの方が速そうだったので Fortran+OpenMP版を提出。(CPU数-40)
反省点 • 実験データの作成を怠った。 • いやらしい問題を予想しすぎた。 • 使用言語を絞らなかった。(Fortran,C,OpenMP,MPI) • セル構造の更新を毎ステップ行ったが、数ステップに1回というふうに行えば、セル構造作成のオーバーヘッドが削減できたのではないか?