YASARA ver.23.12.24から、AutoDockGPUが利用できるようになりました。そこで、GPUを利用した場合とそうでない場合について、計算時間を測定して比較してみました。
YASARAでは、AutoDockまたはAutoDock Vina を利用できますが、今回GPUに対応したのはAutoDockで、VinaはGPU未対応なのでご注意ください。
AutoDockGPUの実行条件
AutoDockGPUを実行する際には、以下の条件を満たす必要があります。
- ドッキングメゾッドにAutoDockを指定する
マクロファイル中のパラメータを、domethod='AutoDockLGA' に変更します。
- GPU が有効になっている
メニューからOptions > Processors > Set compute GPUで設定、または、コマンド"Processors GPU=1"を実行して設定できます。
- リガンドと柔軟な側鎖の原子の合計が 257 未満であること
(非極性水素はカウントされない)
- 64 bit OSが実行されている
- グローバルドッキングが実行されている
(dock_run.mcr/ dock_runensemble.mcr/ dock_runscreening.mcrなど)
AutoDock計算時間の検証
δオピオイド受容体とナルトリンドールの共結晶構造(PDB:4N6H)を使用して、再ドッキングを行います。
マクロファイルは、dock_run.mcr, dock_runensemble.mcrの2つを利用して、それぞれ、GPUあり、なし(CPUのみ)の4通りでAutoDockのドッキングを実行し、計算時間を測定して結果を比較したいと思います。
マクロファイルは、dock_run.mcr, dock_runensemble.mcrの2つを利用して、それぞれ、GPUあり、なし(CPUのみ)の4通りでAutoDockのドッキングを実行し、計算時間を測定して結果を比較したいと思います。
実行条件
使用したハードウェア、YASARAのバージョン情報は以下の通りです。
[H/W]
CPU: AMD Ryzen 5 3600XT(6-Core)
RAM: 32.0 GB
GPU: NVIDIA GeForce RTX 2070 SUPER
OS : Windows 10 Pro(22H2,19045.4412)
[YASARA]
YASARA Structure ver.24.4.10
※CPUは6コア12スレッドで実行します。
実行方法
構造ファイルの準備
PDB ID: 4N6Hをダウンロードし、クリーニング処理(Clean処理、不要分子を削除)を行いました。
続いて、Splitコマンドでレセプターとリガンドをオブジェクト分割し、リガンドの周辺に5.0 Å(Shape:Cube)のSimCellを設定しました。
リガンドを.yobファイルとして保存後、リガンドオブジェクトを削除し、レセプターとSimCellを一緒に.sceファイルとして保存し、それぞれの構造ファイルを準備しました。
続いて、Splitコマンドでレセプターとリガンドをオブジェクト分割し、リガンドの周辺に5.0 Å(Shape:Cube)のSimCellを設定しました。
リガンドを.yobファイルとして保存後、リガンドオブジェクトを削除し、レセプターとSimCellを一緒に.sceファイルとして保存し、それぞれの構造ファイルを準備しました。
マクロファイルの編集
付属マクロdock_run.mcr、dock_runensemble.mcrを編集し、メゾッドパラメータをAutoDockに変更しました(method='AutoDockLGA')。
加えて、マクロ冒頭にコマンドを追記し、実行時のプロセッサーを指定しました(GPUを使用しない場合は「Processors GPU=0」、GUPを使用する場合は「Processors GPU=1」を追記。※CPUは事前に6コア12スレッドに設定しています)。
加えて、マクロ冒頭にコマンドを追記し、実行時のプロセッサーを指定しました(GPUを使用しない場合は「Processors GPU=0」、GUPを使用する場合は「Processors GPU=1」を追記。※CPUは事前に6コア12スレッドに設定しています)。
計算の実行
Windowsのコマンドプロンプトから、テキストモードでYASARAのドッキングマクロを実行しました。以下のコマンドを実行して計算の開始時刻と終了時刻を出力し、その差分を計算時間としました。(実行するマクロファイルは適宜変更しています)
cmd /v:on /c "echo !TIME! & YASARA.exe -txt dock_run_gpu.mcr "MacroTarget='4n6h'" & echo !TIME!"
実行すると以下のように計算開始時と終了時の時刻が出力されます。
(出力例)
※コマンドラインからマクロファイルを実行する方法の詳細については、弊社のYASARAチュートリアル資料、分子動力学計算の【手順3.2 コマンドラインからマクロを実行する方法】を参考にしてください。上記の例では、PATHを通してYASARA実行ファイルのパスを省略しています。
結果
測定した計算時間を以下にまとめます。
まとめ
AutoDockGPUを利用すると、CPUのみを利用した場合に比べて計算時間が大幅に短縮されることがわかりました。現時点ではVINAはGPU対応していませんが、AutoDockを実行する際、GPUを利用できる環境であれば、ぜひ活用してみてください。