数値流体力学ソルバーの計算速度の改善

事例の概要

Zenotech の zCFD は、定常状態または時間変化する流れのシミュレーションのための数値流体力学(CFD)ソルバーです。このソルバーは Python と C++ で書かれており、OpenMP と MPI で並列化されています。

NAG は、POP プロジェクト の一環として、ソルバーの改善点を特定するためにパフォーマンス調査を実施しました。この調査により、計算時間の多くがシリアル実行に費やされていること、そして、ある特定の OpenMP ループに負荷不均衡の問題があることが分かりました。また、POP チームは、最大のスレッド数(調査で使用したマシンでは 12 スレッド)で実行したときに CPU 周波数が低下することに注目しました。これら NAG の分析の結果、コードに変更が加えられ、次のような大幅な改善が見られました。

  • 12 スレッドで 1.65 倍速くなりました。
  • 100 倍大きいテストケースでは、12 スレッドで 3 倍速くなりました。
  • 平均サイクルタイムが 3,253ms から 1,185ms に減少しました。
    (これは、単一の Broadwell ソケットが、10.4 GFLOPS から 30.6 GFLOPS になることに相当します。)
  • 負荷分散が改善されました。

pop-zcfd.jpg

関連情報
MENU
Privacy Policy  /  Trademarks