• 検索結果がありません。

タンパク質立体構造モデリングプログラム 実行速度の高速化

N/A
N/A
Protected

Academic year: 2021

シェア "タンパク質立体構造モデリングプログラム 実行速度の高速化"

Copied!
1
0
0

読み込み中.... (全文を見る)

全文

(1)

タンパク質立体構造モデリングプログラム 実行速度の高速化

研究代表者 岩舘 満雄 研究員

理工学研究所 共同研究第1類

タンパク質立体構造予測のモデリングソフトであるFAMS(Full Automatic Modeling System)は、大きく「データベース探索」と「シミュレーティッドアニーリン グ」の二段階に分かれており、昨年度は「データベース探索」の高速化について焦点を絞ってきた。本年度は、シュミレーテッドアニーリングにおいて、モン テカルロ計算に相当する処理をNVIDA 社が提供するGPGPU 開発環境CUDA を用いてGPU に移植し、並列プログラミングによる処理速度向上の実現 を目指した。

FAMS(Full Automaitc Modeling System)について説明する。FAMS は北里大学の梅山秀明らが立体構造構築の手法を完全自動化する目的のために開 発された ホモロジーモデリングソフトである。このソフトはデータベース探索とシュミレーテッドアニーリングを基本アルゴリズムとし、Cα 原子構築・主鎖原子 構築・側鎖の最適化と段階的に進め、側鎖を含めた精度の高い立体構造モデルを提供する。現在FAMS は300残基程度のアミノ酸からなるタンパク質 のモデリングの1 回の実行につき約5 分以上かかる。ゲノム規模で莫大なデータ数を解析しようとした場合、少しでも解析時間を短くするために処理を分 散している。そして、その分だけ計算資源が必要になっている。1 回あたりの実行時間を短縮できれば、同じ時間ではより多く実行できるようになり、精度の 高い立体構造のための試行錯誤を多くすることができるようになる。また分散する必要がなくなるので、場所的、電力的なコスト減にもつながる。これを GPGPU(General Purpose Computation on Graphics Processing Unit) で実現しようと考えた。GPGPUを容易に扱えるようにするため、2006 年にNVIDIA社か ら発表されている自由度の高い統合開発環境CUDA(クーダ)を用いた。CUDAの特徴である「C 言語を拡張した言語仕様」「画像処理技術への習熟を要し ない」「対応OS にLinuxが含まれる」とった点はFAMS開発と共通している。

NVIDIA製ビデオカード「GeForce GTX 560 Ti」はハイエンド製品であるTesla よりも性能は劣るものの、全体的なコストパフォーマンスとしては効率よく GPGPU 開発環境を整えられると考え採用した。

GPUへの移植

本研究はCPUはインテル社製Core i7 980X Extreme Edition BOX、GPUはNVIDIA製GeForce GTX 560 Tiを搭載したマシンを使った。ソースコードの移植 FAMSのシュミレーテッドアニーリングに相当するC言語(refine_nco2)を対象に行い実行時間の計測を行った(表1)。

表1 refine_nco2の実行時間計測結果

※測定には全体はtimeコマンド、関数はclock()で測定した。

monte_nco.c ファイルのperturb をGPU に移植が効果的だと認められる。グリッド・ブロック・スレッドの割り当てについては、1 要素につき、1スレッド与える

方針で設計した。(sample は168 要素あったので、168 スレッドを割り当てるようにした。)

移植するにあたって、CUDA 仕様上の問題点は大きく三つ。1つ目はFAMSのC言語ソースが長大であるためCプログラムとCUDAプログラムを混在した形 で組み込んでコンパイルする要件を満足すること。2つ目はデバイス側はUNIX系OSで使われるdrand48()という乱数パッケージが使えないため再現を確 認することが困難であること。また、CUDA自体にも疑似乱数生成パッケージがないこと。そのため、NVIDIA 社が提供している疑似乱数生成ライブラリ curand とGoogle が提供するライブラリThrustを検討し、今回は前者を使用した。3つ目は(二つ目と関連するが)GPU上では標準入出力関数(printf,scanf な ど)やファイル入出力関数(fopen,fprintf など)等、C言語で定義される関数の大部分が使用不可で代替の探索には労力を費やすこととになった。

結果

FAMS のアルゴリズムを変更せず移植した結果、実行速度は大幅に遅くなった(表2)。また、perturbの実行時間の増加は全体の時間に大きな影響を与え る結果となっている。

表2 移植後の計測結果 問題点と解決策

このような結果になってしまった原因は現時点で2 点考えられる。一つは「ウォープダイバージェント」と呼ばれる現象で本来実行されない処理も実行されて しまうため、CPU と比べて、約2倍の処理時間がかかることになる。perturb 内ではこのようなif 文が数多く記述されており、その分だけ時間を消費してし まっている。これを改善するには、処理を行う前に要素を並び替え、同一ウォープ内の全スレッドが、if 文で同じ判定になるようにするか、コード全体を書き 直す必要がある。二つ目は複数のスレッドがスレッド間で共有するメモリに同時に更新する挙動である。他のスレッドが共有メモリの読み書きをさせないよ うにするための制御法いわゆる排他制御に不具合があることがわかり、よりGPUに親和性の高いソースコードの構築が必要性が明白となった。

参考資料

[1]CUDA プログラミング,丸山直也,(http://gpu-computing.gsic.titech.ac.jp/sites/default/files/cuda-programming_1.pdf),第10 回GPU コンピューティング 講習会,2011

[2]化学フロンティア12,ゲノム創薬-合理的創薬からテーラーメイド医療実現へ-,田沼靖一,化学同人,p.39-50(2003)

[3]Disclosure,(http://topsecret.hpc.co.jp/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8)

[4]FAMS:配列からの蛋白質立体構造ホモロジーモデリング,岩舘満雄・梅山秀明,生物物理42(6),p.282-284(2002)

[5]CUDA ZONE (http://developer.nvidia.com/category/zone/cuda-zone)

[6]マルチコアCPU のための並列プログラミング-並列処理&マルチスレッド入門-,安田絹子・小林林広,飯塚博道・阿部貴之・青柳信吾,秀和システム,

2006

[7]CUDA プログラミング入門,青山幸也,(http://accc.riken.jp/assets/files/cuda/cuda_all_2011-04-01.pdf), 理化学研究所 情報基盤センター,2011 回数 全体[s] monte_nco[s] perturb[s] ttl_poten[s]

1回目 2.869 2.820 1.940 0.900

2回目 2.860 2.800 1.960 0.880

3回目 2.858 2.810 2.010 0.830

平均 2.862 2.810 1.970 0.870

Perturb 移植前[s] 移植後[s]

1回目 1.940 7.670

2回目 1.950 7.570

3回目 1.900 7.590

平均 1.930 7.610

参照

関連したドキュメント

c加振振動数を変化させた実験 地震動の振動数の変化が,ろ過水濁度上昇に与え る影響を明らかにするため,入力加速度 150gal,継 続時間

(実被害,構造物最大応答)との検討に用いられている。一般に地震動の破壊力を示す指標として,入

実行時の安全を保証するための例外機構は一方で速度低下の原因となるため,部分冗長性除去(Par- tial Redundancy

実際, クラス C の多様体については, ここでは 詳細には述べないが, 代数 reduction をはじめ類似のいくつかの方法を 組み合わせてその構造を組織的に研究することができる

・HSE 活動を推進するには、ステークホルダーへの説明責任を果たすため、造船所で働く全 ての者及び来訪者を HSE 活動の対象とし、HSE

光を完全に吸収する理論上の黒が 明度0,光を完全に反射する理論上の 白を 10

年間約5万人の子ども達が訪れる埋立処分場 見学会を、温暖化問題などについて総合的に

添付資料-4-2 燃料取り出し用カバーの構造強度及び耐震性に関する説明書 ※3 添付資料-4-3