MRI.COM
目次
MRI.COM OpenACC
使い方
コーディングのメモ
検討
MRI.COM OpenACC
試験的に OpenACC 指示行の導入を行っている。
使い方
OpenACC指示行の基本
ループ並列化
メモリ管理
PGI OpenACC ディレクティブによるプログラミング
コーディングのメモ
東大Wisteriaで、ある程度の大きさのモデルを使ってテスト
やはりGPU-CPUメモリコピーが非常に遅い
単に acc kernels を入れていくと、どんどん遅くなった。最後は計算が落ちるようになる。
GPU-CPUメモリコピーを抑えるように明示すれば、明らかに改善する (遅くなるのがマシになる)
メモリ管理が必須。
メモリを使い回すためには処理の流れを意識する必要がある。コードを処理毎に独立に書けない。
Wisteria/Aquarius ではOpenMPだけで相当に速い。
OpenMP の併用は必須。
やはりifdefか…
2次元並列では OpenMPをOpenACCに書き換えても速くならない気がする。
事前にコードのリファクタリングが必要か
3次元並列でも難しい。メモリをCPUにコピーせず、ほぼGPUで計算できるようになれば速いのか?
部分的にOpenMPをOpenACCに移行しても遅くなる。
漸近的な開発が難しい…
方針はどうする?
検討
CPU-GPUメモリー転送はこれから速くなるらしい