技術者コラム

【流体解析入門】要素数の違いによる並列効率への影響と計算速度の最適化

掲載日時:

更新日時:

「並列計算でコア数を増やしたのに、思ったより計算速度が上がらない...」「1プロセスあたりの要素数ってどれくらい必要なの?」 そう思う方もいるかもしれません。 実は、並列計算で高い効率を得るには、1プロセスあたりの要素数が重要な鍵を握っています。適切な要素数を確保しないと、並列数を増やしても期待通りの速度向上は得られません。 この記事では、要素数と並列効率の関係について、実測データをもとにわかりやすく解説します。
これまで、解析領域の大きさやメッシュサイズによる計算結果への影響を主にお話をさせていただきました。今回は並列効率についてお話をさせていただきます。
並列効率とは、おおまかにいうと並列数を上げることによって期待する効果と実際に出る効果の比です。100%だと並列性能が高く、低ければ並列性能が出ていないと言えます。また、並列数を上げた結果、元よりも計算時間がかかってしまうということもありえます。 機能によっては並列処理できないものもありますし、計算処理時間より並列処理のための通信時間が多い場合もあり、必ずしも並列数を上げれば計算速度が上がるわけではありません。 ここでは、並列性能に大きく寄与する要素数との関係をお話させていただきます。

要素数の違いによる並列効率の
実測データ

図に示しましたのは、2つのモデルの並列数を上げていった場合の速度倍率をプロットしたものです。横軸が並列数(基準並列数からの倍率)、縦軸が基準並列数からの速度倍率です。 モデル1は並列数4までは速度倍率の期待値に近い効果が出ていますが、8以上は期待値よりも著しく低くなっています。一方、モデル2では並列数16まで期待値通りに速度倍率が出ていることがわかります。

1プロセスあたりの要素数と
並列効率の関係

図に、横軸は同様に並列数ですが、縦軸を1プロセスあたりの要素数をプロットしたものを示します。 並列数を上げると、当然ですが、1プロセスあたりの要素数は下がっていきます。基準並列数では、モデル1は約3万要素、モデル2は約50万要素あり、16並列ではモデル1は約2千要素、モデル2では約3万要素となっています。

並列効率を確保するための
要素数の目安

図は、横軸に速度倍率を倍率の期待値で除した値、縦軸に1プロセスあたりの要素数をプロットしました。1プロセスあたりの要素数が1万以上ある場合は期待値に近い速度倍率が出ていて、1万を切ると速度倍率は下がっていくことがわかります。 単相流の円柱モデルでは、要素数が1プロセスあたりに1万以上ないと計算速度は期待値通りに出ないことがわかります。 ただ、これはモデルや現象により異なり、並列効率が悪い機能もありますので、すべての解析で要素数を1プロセスあたり1万あれば速度倍率が確保できるわけではありません。 また、基準並列数では、モデル2はモデル1の50倍の計算時間がかかり、16並列でもモデル1のほうが計算時間が短いため、規模を大きくして並列数を上げればいいということでもないことはご留意されると良いでしょう。

まとめ

流体解析における並列計算では、単に並列数を増やせば計算速度が向上するわけではありません。1プロセスあたりの要素数が並列効率に大きく影響し、今回の例では1プロセスあたり1万要素以上が1つの目安となることが示されました。 ただし、この数値はモデルや現象によって異なるため、実際の解析では自分のケースに応じた最適な並列数を見極めることが重要です。また、規模を大きくすれば良いわけではなく、解析目的に応じた適切なバランスを取ることが、効率的な流体解析の計算速度最適化につながります。

この記事は参考になりましたか?

シミュレーションに関する
お悩みやご質問などお気軽にお問い合わせください

お問い合わせはこちらから