CAEにおいては、大規模な計算タスクや高負荷のシミュレーションタスクを実行するために、並列計算が使用されます。
ANSYS Fluentにも、並列処理機能が備わっています。
並列数の設定

Parallel (Local Machine)のSolver Processesの数字を大きくするほど、並列化処理が行われ効率が良くなります。

4並列で計算している状態で、タスクマネージャーのCPUを見ると、8個のグラフのうち4つのみが猛烈に稼働していることが分かります。

並列の分割方法は、手法によって異なりますが、デフォルトのMetisでは、すべての要素を4エリアに分けて、それぞれを各プロセスで計算します。
上の絵は、分割した領域を可視化したもので、各プロセスは各色の範囲の計算を担当します。

自身のCPUのコア数は分からない場合は、CPU infoを確認してください。

CPU (Central Processing Unit) の Socket、Core、HT (Hyper-Threading) は以下の意味を持つ用語です。
- Socket: CPUがマザーボードに接続される際に使用するインターフェイスのことです。複数のCPUを同時に使用することも可能ですが、その場合は各CPUを別々のソケットに接続する必要があります。
- Core: CPU内に内蔵されている処理ユニットのことです。複数のコアを持つCPUは、同時に複数のタスクを処理することができます。
- HT (Hyper-Threading): Intelによるマルチスレッド技術です。1つのコアを複数のスレッドで処理することができます。このことにより、同時に複数のタスクを効率よく処理することができますが、実際にはコア数に比べて大きなパフォーマンス向上は見込めません。
並列効率:要素数1-2万

小さめのモデルで並列計算します。要素数1万と2万のモデルを作成し、それぞれ並列数を変えて計算してみました。

4並列までの変遷です。1万要素では、並列する価値がない。
要素数2万では、1→2並列で計算時間が約半分になりますが、3、4と並列数を増やしてもあまり変わりません。
一般的に、要素数が少ないモデルでは並列計算による効果が薄くなります。次に、より要素数の多いモデルで計算してみます。
並列効率:要素数40万

タケコプターのような構造物に必要以上に細かく要素分割したモデルを用います。要素数40万。

40万要素では見事に並列効率が上がり、計算時間が短くなりますが、並列数2→3→4にかけて効果が減少します。
今回用いた端末が4コアの端末です。4コア上限の端末で4コア計算すると、最後の1コアは並列効率に寄与しない、といった都市伝説もささやかれています。本当かどうかは分かりませんが、今回の結果は都市伝説通りです。
memo メモリ8GBのノートPCで、40万要素の計算を流すのは少し苦しいかもしれません。タスクマネージャーのメモリ欄を見ると、頭打ちしてしまっています。 ノートPCでの計算は数万要素くらいの計算に留めようかと思います。
ちなみに、ANSYS student版では、並列化ライセンスの上限が4に制限されています。
5並列以上でソフトウェアを起動すると、以下のようなエラーで起動できません。
Unable to spawn node: license not available.
ANSYS LICENSE MANAGER ERROR:Not enough HPC Parallel licenses 5/4.
並列化の手法

並列化手法の変更は、Parallelタブの「Partition/Load balance…」というボタンから変更できます。
ほとんどの場合、デフォルトのMetisで問題ありませんが、並列数を多くすると計算の収束性が悪くなる場合、座標指定で分割することもあります。

並列数の変更と、手法(Method)の変更が可能です。
並列の可視化

4並列は、領域を4つに分割して計算します。
どのように分割しているかは「Active Cell Partition」のコンター図を作成することで可視化できます。

Ansys Fluentにおいて、active cell partitionとstored cell partitionは、分割手法によって選択するものが変わります。
- Active cell partition: デフォルトはコレです。計算空間を分割して、各ノードが独立して計算を行います。計算空間内のデータが分散して保存され、各ノードは必要なデータを他のノードから取得して処理を行います。この方法は、計算空間が大規模な場合に適していますが、通信コストが高くなることがあります。
- Stored cell partition: 計算空間を分割して、各ノードが独立して計算を行いますが、計算空間内のデータを各ノードにコピーすることで、通信コストを最小限に抑えます。この方法は、計算空間が小規模な場合に適していますが、メモリ使用量が大きくなることがあります。
以上、参考になりましたら幸いです。
Images used courtesy of ANSYS, Inc.
コメント