「並列計算でコア数を増やしたのに、思ったより計算速度が上がらない...」「1プロセスあたりの要素数ってどれくらい必要なの?」
そう思う方もいるかもしれません。
実は、並列計算で高い効率を得るには、1プロセスあたりの要素数が重要な鍵を握っています。適切な要素数を確保しないと、並列数を増やしても期待通りの速度向上は得られません。
この記事では、要素数と並列効率の関係について、実測データをもとにわかりやすく解説します。
これまで、解析領域の大きさやメッシュサイズによる計算結果への影響を主にお話をさせていただきました。今回は並列効率についてお話をさせていただきます。
並列効率とは、おおまかにいうと並列数を上げることによって期待する効果と実際に出る効果の比です。100%だと並列性能が高く、低ければ並列性能が出ていないと言えます。また、並列数を上げた結果、元よりも計算時間がかかってしまうということもありえます。 機能によっては並列処理できないものもありますし、計算処理時間より並列処理のための通信時間が多い場合もあり、必ずしも並列数を上げれば計算速度が上がるわけではありません。 ここでは、並列性能に大きく寄与する要素数との関係をお話させていただきます。
並列効率とは、おおまかにいうと並列数を上げることによって期待する効果と実際に出る効果の比です。100%だと並列性能が高く、低ければ並列性能が出ていないと言えます。また、並列数を上げた結果、元よりも計算時間がかかってしまうということもありえます。 機能によっては並列処理できないものもありますし、計算処理時間より並列処理のための通信時間が多い場合もあり、必ずしも並列数を上げれば計算速度が上がるわけではありません。 ここでは、並列性能に大きく寄与する要素数との関係をお話させていただきます。
要素数の違いによる並列効率の
実測データ
1プロセスあたりの要素数と
並列効率の関係
並列効率を確保するための
要素数の目安
図は、横軸に速度倍率を倍率の期待値で除した値、縦軸に1プロセスあたりの要素数をプロットしました。1プロセスあたりの要素数が1万以上ある場合は期待値に近い速度倍率が出ていて、1万を切ると速度倍率は下がっていくことがわかります。
単相流の円柱モデルでは、要素数が1プロセスあたりに1万以上ないと計算速度は期待値通りに出ないことがわかります。
ただ、これはモデルや現象により異なり、並列効率が悪い機能もありますので、すべての解析で要素数を1プロセスあたり1万あれば速度倍率が確保できるわけではありません。
また、基準並列数では、モデル2はモデル1の50倍の計算時間がかかり、16並列でもモデル1のほうが計算時間が短いため、規模を大きくして並列数を上げればいいということでもないことはご留意されると良いでしょう。
まとめ
流体解析における並列計算では、単に並列数を増やせば計算速度が向上するわけではありません。1プロセスあたりの要素数が並列効率に大きく影響し、今回の例では1プロセスあたり1万要素以上が1つの目安となることが示されました。
ただし、この数値はモデルや現象によって異なるため、実際の解析では自分のケースに応じた最適な並列数を見極めることが重要です。また、規模を大きくすれば良いわけではなく、解析目的に応じた適切なバランスを取ることが、効率的な流体解析の計算速度最適化につながります。