
以前のブログでは, Linux® オペレーティングシステムのターミナルを操作せずに, COMSOL Desktop® 環境から直接クラスター上の COMSOL Multiphysics® ソフトウェアのジョブを実行する方法について説明しました. このターミナルは過度に尊重されることがあるため, グラフィカルユーザーインターフェースから直接クラスタージョブを開始できる機能は, COMSOL® ソフトウェアの最も便利な機能の1つです. さらに, 他にもさまざまな機能があります… クラスタースイープノードを使用します.
クラスタースイープノードとは?
パラメーターセットの計算を並列化する1つの方法は, パラメトリックスイープとクラスターコンピューティングノードを組み合わせることです. これを行うと, 多数のノードにまたがる1つの大きなクラスタージョブが作成されます. 追加するノードの数が増えるほど, 並列で計算されるパラメーター値が増えます (もちろん, パラメーターの数がノードの数より多い場合に限ります).
クラスターの例.
クラスタースイープノードを使用して計算を並列化することもできます. これは, パラメトリックスイープを複数のクラスターコンピューティングジョブに分割する場合に使用します. クラスタースイープノードでパラメーター値のリストを定義します. これらの値ごとに, 個別のバッチジョブがクラスターキューに送信されます. 計算が完了すると, COMSOL Multiphysics は結果をメインプロセスに組み込みます.
この方法でパラメトリックスイープをネストして, クラスタースイープを “通常の” パラメトリックスイープと組み合わせることもできます. どのパラメーターに対して別のジョブを開始するか, どのパラメーターをジョブの “内部” に保持するかを決定します.
つまり, クラスタースイープノードは, モデリングプロセスを完全に制御できるように COMSOL Multiphysics が提供する強力なツールです.
クラスタースイープを使用するには, フローティングネットワークライセンス (FNL) が必要であることに注意してください. また, こちらのブログで説明されている設定に精通しておくことをお勧めします: COMSOL Desktop® 環境からクラスターを実行する方法. ブログの手順に従って設定を保存すると, それらの設定は自動的にクラスタースイープノードで使用されます.
クラスタースイープノードを使用する場合
ここまでで, クラスタースイープノードが何であるかがわかりました. 次の2つの点について疑問に思うかもしれません.
- いつ使用すればよいか?
- クラスターコンピューティングノードよりも優れているのはどのような場合か?
最初に思い浮かぶケースは, パラメーターセットがあり, モデルが収束するか, すべてのパラメーターの組み合わせに対して有効かどうかわからない場合です. パラメーターセットによってジオメトリが制御される可能性があり, 値によっては, ジオメトリが原因で求解やメッシュ作成が失敗します. パラメトリックスイープを使用してモデルを計算すると, COMSOL Multiphysics は, 後続のジオメトリが終了する場合でも, 最初の失敗したジオメトリで計算をキャンセルします. この計算を個別のジョブに分割すると, 各パラメーター値に対して計算が開始されます.
もう1つの状況は, 関心のあるパラメーター値の量が多すぎて, 単一のクラスタージョブでは実現できない場合です. 周波数, 形状, 材料, 境界条件などを制御するパラメーターがある場合, すべての利用可能な組み合わせの結果が必要な場合は, 大量の計算が必要になります. これらの計算をすべて1つの大きなジョブにまとめてクラスターに送信すると, クラスター管理者の不満と多くの同僚の怒りを招くことになります (これについては後で詳しく説明します).
良いニュース: クラスタースイープノードを使用すると, 膨大なジョブを複数の小さなジョブに分割できます. これを行うには, クラスタースイープノードに加えて, パラメトリックスイープノードをモデルに追加します. このようにモデルを設定すると, ネストされたパラメトリックスイープ (プログラミングのネストされた for ループに似ています) が作成されます. これを行う方法については, 読み進めてください. このブログには, 短いチュートリアルが含まれています.
クラスタースイープノードについてもう1つ注意すべき点があります. これを使用すると, クラスター上のジョブのスループットを潜在的に向上させることができます.
クラスタースイープを使用してスケジューリングを最適化する
このブログの前半で, 不満を抱えたクラスター管理者について触れましたが, その理由が不思議に思われるかもしれません. 計算時間は, 高性能クラスターでは貴重なリソースです. このため, ほとんどのクラスターには, 何らかのキューまたはスケジューリングシステムが実装されています. 大規模なジョブの処理方法はクラスター管理者次第であり, 経験則として, 大規模なジョブは長い待機時間を意味します. なぜでしょうか. 大規模なジョブは多くの計算リソースを占有し, 完了するまでに長い時間がかかることがあります. したがって, 他のユーザーのジョブを遅らせないように, 大規模なジョブには低い優先度が割り当てられます. もちろん, これはすべて, クラスター管理者がスケジューラーをどのように構成したかによって異なります. つまり, 結果は異なる場合があります.
これは, クラスタースイープノードとどのような関係があるのでしょうか. 大規模なジョブをスケジュールするのは難しいが, 小規模なジョブはスケジューラーのギャップを埋めるため簡単にスケジュールできるクラスターにアクセスできるとします (未使用のクラスターノードは高価なクラスターノードです). クラスタースイープを使用すると, 大規模なジョブを小規模なジョブに分割できます.
例を使って見てみましょう. 8つのノードで1つの大きなジョブを開始して800個のパラメーター値を並列化する代わりに, それぞれ1つのノードを使用して独自の100個のパラメーター値セットを計算する8つのジョブを開始できます. その後, ジョブは個別にスケジュールされ, クラスターの設定方法によっては, 小さなジョブが大きなジョブよりも早く完了する可能性があります.
クラスタースイープとネストされたラメトリックスイープの設定
バッチスイープとクラスターコンピューティングノードの使用経験がある場合は, クラスタースイープノードの使用は簡単です. (バッチスイープの設定方法については, “バッチスイープの威力” および “バッチスイープにおけるタスク並列処理の付加価値” のブログをご覧ください.)
純粋なクラスタースイープとネスト化されたパラメトリックスイープの両方を設定する方法を示すために, 私のお気に入りのサンプルモデルであるパラメーター化された熱マイクロアクチュエーターを見てみましょう. (このモデルは COMSOL® ソフトウェアのマルチフィジックス機能を示すので, 私のお気に入りです.) パラメーター化されているため, モデルにパラメトリックスイープとクラスタースイープを追加するのは非常に簡単です.
マイクロアクチュエーターのジュール熱をモデル化します. 電流が2つのアームを流れ, アームが加熱されます. 次に, 熱膨張によりアクチュエーターが曲がります.
クラスタースイープの追加
まず, アクチュエーターの長さパラメーター (L) にクラスタースイープを追加します. これを行うには, まずスタディ1を右クリックし, クラスタースイープをクリックします. これにより, クラスター設定を設定できるノードが追加されます. これは, このCOMSOL Desktop® からクラスターを実行する方法に関するブログの手順に似ています (ブログ記事をまだ読んでいない場合は, 今がよいタイミングです).
次に, スタディ設定ウィンドウで, スイープするパラメーターを追加できます. プラス記号をクリックし, ドロップダウンリストからパラメーター L を選択します. 次に, パラメーター値リストフィールドに (たとえば) “100 170 240 310“ と入力します. パラメーター単位フィールドに “um“ (マイクロメートル) と入力します.
結果をメインモデルに戻す場合は, 解を同期チェックボックスをオンにしてください. こうすることで, すべての結果をさらに分析およびポスト処理に利用できるようになります.
モデルにクラスタースイープを追加します.
これで, マイクロアクチュエーターの長さをループするクラスタースイープが作成されました. クラスター設定が正しいと仮定すると, 計算をクリックするだけで, 個別のジョブがクラスターに送信されます.
ネスト化されたパラメトリックスイープの追加
次に, ネスト化されたパラメトリックスイープを作成して, 各クラスタージョブにパラメトリックスイープが含まれるようにします. これを行うには, DV と呼ばれる電圧パラメーターにパラメトリックスイープを追加します. これを行うには, 次の手順に従います.
- スタディ1を右クリックし, パラメトリックスイープをクリックします. これにより, パラメトリックスイープを設定できるノードが追加されます
- 設定ウィンドウでプラス記号をクリックし, ドロップダウンリストからパラメーター DV を選択
- パラメーター値リストフィールドに “1 2 3 4 5“ と入力
- パラメーター単位フィールドに “V“ と入力します
- 計算をクリックすると, COMSOL Multiphysics によってジョブがスケジュールされます
モデルにパラメトリックスイープを追加すると, ネスト化されたパラメトリックスイープが作成されます.
ジョブが完了するまで待つか (ジョブのステータスは外部プロセスウィンドウに表示されます), プロセスから切り離してモデルを保存し, COMSOL Multiphysics を閉じてジョブを自動的に実行することもできます. ワークステーションに戻ったら, 保存したモデルを開いて再度接続するだけで, 通常のクラスターコンピューティングノードを使用する場合と同じようにソフトウェアが結果を処理します. このワークフローは, 夜間のシミュレーションに最適です.
まとめ
このブログでは, クラスタースイープノードを使用して, クラスター上のパラメトリック計算の並列化を最適化する方法を学びました. また, 異なるアプローチを使用するのが有益な場合と, システム管理者の不満を避ける方法についても学びました.
一般的なクラスターコンピューティングと同様に, 計算するモデルに応じて使用するアプローチを決定する必要があります. クラスタースイープと分散パラメトリックスイープをいつ使用するかを知るには, モデルとクラスターで2つのアプローチを試す必要があります. いつものように, 何かをマスターするには, テストする必要があります.
前述のように, クラスタースイープはネットワークベースの技術であるため, クラスタースイープを使用するには FNL が必要です.
次のステップ
クラスタースイープノードについて詳しく知りたい場合は, 下のボタンをクリックしてお問い合わせください.
Linux は, 米国およびその他の国における Linus Torvalds の登録商標です.
コメント (0)