お客様事例
事例の概要
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 になることに相当します。) - 負荷分散が改善されました。