技術者コラム

要素数の違いによる並列効率への影響

掲載日時:

更新日時:

これまで、解析領域の大きさやメッシュサイズによる計算結果への影響を主にお話をさせていただきました。 今回は並列効率についてお話をさせていただきます。 並列効率とは、おおまかにいうと並列数を上げることによって期待する効果と実際に出る効果の比です。100%だと並列性能が高く、低ければ並列性能が出ていないと言えます。また、並列数を上げた結果、もとよりも計算時間がかかってしまうということもありえます。 機能によっては並列処理できないものもありますし、計算処理時間より並列処理のための通信時間が多い場合もあり、必ずしも並列数を上げれば計算速度が上がるわけではありません。 ここでは、並列数性能に大きく寄与する要素数との関係をお話させていただきます。

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

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

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

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

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

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