COMSOL® バッチスイープによるハードウェア並列化の活用

2020年 6月 2日

COMSOL Multiphysics® の中核的な機能の一つに, バッチスイープがあります. これは, 同じモデルの複数のバリエーションを, 全く別のジョブとして, 同じコンピューター上で並行して解くものです. コア数の多いCPUや複数のCPUに対応したパソコンが普及している中, このバッチスイープ機能を使うことで大幅な高速化を図ることができます. その方法をご紹介しましょう.

バッチスイープの簡単な紹介

コンピューターのハードウェアを扱う人なら誰でも知っているように, プロセッサーの技術は世代が変わるごとに大きく進歩しています. 長い間, クロックスピードは年々向上していましたが, この傾向は停滞し, 現在ではメーカーは1つのCPUにますます多くのコアを搭載する傾向にあります.

COMSOL® ソフトウェアは, デフォルトでは利用可能なすべてのコアを使って各モデルを求解しますが, これは必ずしも有益な方法ではありません. 多くの COMSOL Multiphysics® モデルは部分的にしか並列化できないか, あるいは完全なシリアルモデルであるため, 特に必要なメモリ量が比較的少ないモデルの場合, 1つのモデルに多くのノードを割り当てること自体がスピードアップにつながらない可能性があります.

実際, 新世代のマルチコアCPU は, 比較的小規模な COMSOL Multiphysics® の 1 つのジョブを旧世代のCPUよりも高速に実行できるとは限りませんが, より多くのジョブを同時に実行できます. これにより, ジオメトリの寸法, 異なる動作条件, 動作周波数に渡ってスイープする場合など, 同じモデルの複数のバリエーションを解く場合に, 大幅な改善が見られます. バッチスイープ機能はそのような場合に使用します.

バッチスイープインターフェースの使い方をご説明する前に, その操作について理解していただくべき重要な点がいくつかあります. まず, バッチスイープは完全に独立した複数の COMSOL Multiphysics プロセス(ジョブ)を開始できます. これらのジョブは, 他のジョブが何をしているかを把握していません. 1つのケースが失敗しても, 他のケースには影響を与えませんが, ケース間で結果を受け渡すこともできません.

次に, 各ジョブは, そのジョブの結果を含むファイルをディスクに書き込みます. オプションとして, これらの結果のすべてを元のファイルに戻すことができます.

第三に, これらのジョブを実行している間, ソフトウェアは並列ジョブを利用可能な計算コアに自動的に分割します.

最後に, バッチスイープは COMSOL Multiphysics® のコア機能の一部です. これは 1 台のコンピューター(複数の CPU を搭載している場合もあり)で実行することを前提としており, どのライセンスタイプでもご利用いただけます. これはクラスタースイープ機能(フローティングネットワークライセンスでのみ利用可能)の補完機能であり, 同様の機能を提供しますが, さらにクラスターの異なる計算ノードにジョブを分割することができます.

バッチスイープの設定

バッチスイープ機能を使用するには, まずモデルビルダーのその他のオプションを表示ダイアログボックスでバッチとクラスターオプションを有効にします. このダイアログボックスを以下のスクリーンショットに示します.

COMSOL Multiphysics®のモデルビルダーで, その他のオプションを表示ダイアログボックスが表示されています.

モデルビルダー内のその他のオプションを表示ダイアログボックス.

この機能を有効にすると, スタディブランチにバッチスイープ機能を追加できるようになります. この機能は常にスタディの最上部にあり, スタディブランチ内でその下にある他のすべてのスタディステップを包み込むfor-loopと考えることができます.

バッチスイープ機能の設定画面.

関連するバッチスイープ機能の設定.

バッチスイープのユーザーインターフェースを上図に示し, 関連する機能をハイライトしています. まず, 一番上で, スイープするパラメータの名前と, 解析するパラメーターの異なる値の数を指定します. 次に, 解の同期化オプションを有効にすると,すべての結果が1つのファイルにまとめられます. これが有効にされていないと, バッチスイープは, スイープの各パラメータごとに異なるファイルのセットを書き込みます. (これは実は魅力的なオプションで, すぐに非常に大きなファイルになるので, 各ファイルに保存するデータ量を少なくしたい場合には検討しても良いかもしれません.) 最後の重要な設定は, ウィンドウの下部にある同時ジョブ数です. ここで, いくつのジョブを並行して実行するかを決定します.

また, バッチスイープは, パラメトリックスイープ, ファンクションスイープ, 材料スイープ, 補助スイープ, 周波数スイープなど, どんな種類のスイープでも組み込むことができます. つまり, 1つのバッチスイープジョブを使って任意のケースの組み合わせを求解することができるのです.

では, 実際にはいくつのジョブを並行して実行すればよいのでしょうか. それが次の課題です.

COMSOL Multiphysics® のバッチ並列処理能力はどのくらいか?

この質問に対する答えは, すでにお察しの通りハードウェアとモデルに依存しています.

モデルの種類については, バッチスイープの理想的なケースは, 必要なメモリ量は少ないが, 解くのに比較的長い時間がかかるモデルです. このようなモデルの良い例として, シリコンウェーハのレーザー加熱の例があります. このモデルでは, 回転するウェハ上を移動するレーザー熱源の時間経過に伴う温度変化を解きます. 自由度は2000程度しかありませんが, 一般的なデスクトップコンピュータであれば1分程度で解くことができます. このモデルでは様々なパラメーターを設定することができますが, 最新のデスクトップコンピューターでジョブの並列化を行った場合に, このモデルのパフォーマンスがどのように変化するかを見てみましょう.

ここで紹介する結果は, Intel® Xeon® W-2145 8-コアプロセッサーと32GBのRAM を使用して得られたもので, これは COMSOL のハードウェア推奨事項で推奨されている典型的な中程度のコンピューターです. このハードウェアでは, テストケースモデルを解くのに約1分かかります. このモデルの 16 種類のバリエーションに対してパラメトリックスイープを行うと, 解くケースの数に比例して求解時間が長くなります. バッチスイープを使用すれば, 下のスクリーンショットのように, 各バッチスイープジョブに逐次パラメトリックスイープを含ませて, このハードウェア上で2, 4, 8, さらには16のジョブを並行して実行し, 解析することができます.

COMSOL Multiphysics® でネストしたバッチスイープを実行するための設定のスクリーンショット.

ネストスイープを示すスクリーンショット. この例では, 外側のバッチスイープがN=0,4,8,12をスイープし, 内側のバッチスイープが全部で16件のケースを求解しています.

以下の結果は, 16ケースを解くのにかかった時間と, 相対的なスピードアップで示されています.

パラメトリックスイープ

バッチスイープ + パラメトリックスイープ

16 逐次ケース

2 並列ジョブ

(ジョブ当たり8 逐次ケース)

4 ジョブ

(ジョブ当たり4 ケース)

8 ジョブ

(ジョブ当たり2 ケース)

16 ジョブ

(ジョブ当たり1 ケース)

時間 (秒)

1010

620

416

305

267

スピードアップ

1

1.6x

2.4x

3.3x

3.8x

このデータから, 同時に実行するジョブの数が増えるほど, スピードアップすることがわかります. 最も興味深いのは, 8コアのマシンで16のジョブを並行して実行してもスピードアップが見られることです. 言い換えれば, このCPUの各コアは, 少なくともこの特定のモデルを解くときには, 実際には2つの COMSOL® ジョブを同時に処理することができるのです. このマシンではハイパースレッディングが有効になっており, 解そのもののスピードアップにはつながりませんが, ファイルの開閉やその他のOSプロセスにはハイパースレッディングが有効であることのメリットがあります. これだけ多くのケースを並行して実行すると, 1つ1つのケースを解くのにかかる時間は遅くなりますが, 16個のケースすべてにかかる全体の時間は短くなります.

また, さらに多くのジョブを並行して実行しようとした場合にどうなるかを, メモリの観点から見てみるのも興味深いです. このモデルでは, バッチジョブごとに約1GB のメモリを必要としますが, 今回のテスト用コンピューターには32GBのRAMが搭載されているので, 16件の並列処理であれば問題ありません. しかし, 32並列ケースになると, 利用可能なRAMを超えてしまう可能性があり, コア数にかかわらず速度低下につながります. もちろん, より多くのRAM, より多くのコア, そして複数のCPUを備えたコンピューターでは, さらに相対的なスピードアップが可能です. さらに, COMSOL Multiphysics は, 1 台のコンピューターでアドレス指定できるコア数(CPU 数)を制限していません.

さて, これらのデータは非常に素晴らしいものですが, この時点で「いつもこのような良い結果が得られるのか」と尋ねたくなることでしょう. 残念ながら, いつもではありません. 解くモデルが大きくなればなるほど, スピードアップは見込めません. 非常に大きなモデルでは, ジョブを並列に実行すると全体的に速度が低下してしまいます. しかし, 多くのモデル, 特にほとんどの2Dモデルや小さな3Dモデルでは, マルチコア, マルチCPUのコンピュータでバッチスイープを使用しても, 同様の改善が期待できます. つまり, バッチスイープの機能は, そのようなハードウェアへの投資を強く促すものなのです. また, 1つ前のブログで紹介したように, バッチスイープ機能には, 他にもたくさんのメリットがあります. この機能はCOMSOL Multiphysics のコア機能であり, すべてのライセンスタイプで利用できることをお忘れなく.

 

Intel および Xeon は Intel Corporation またはその子会社の商標です.

コメント (0)

コメントを残す
ログイン | 登録
Loading...
COMSOL ブログを探索