TSUBAME3.0計算サービスのWebページはこちら

TSUBAME2.5からTSUBAME3.0へのデータ移行方法の資料はこちら

ジョブ投入時のメモリ使用量の指定方法と注意点を教えてください。 (2015/3/20更新)

t2subによるジョブ投入時には、mem=XXgb のようにメモリ使用量の指定を行います。
Thinノードの実装メモリは54GBですが、t2subでのメモリ指定には以下のメモリ量が考慮されないため、
1ノードジョブの実行時には50GB以下のメモリ量を指定してください。

 - システムによって利用されるメモリ (3GB程度)
 - MPI実行時にInfiniBandドライバによって利用されるメモリ (ジョブサイズに依存、1~5GB)
 - SSHで計算ノードに直接ログインして実行したプログラムが利用するメモリ
 - MPIで先頭ノード以外に配置されたプロセスが利用するメモリ
 ※SP3では、システムの使用するメモリが増加しています。

実際に計算ノードが使用したメモリ量の履歴は、TSUBAME 2.5 Cloud Service Utilizationより、キューおよび計算ノードを選択することで確認することができます。使用メモリ量が実装メモリ量を超えると、ノードがクラッシュする可能性が高いため、メモリ使用量には余裕をもってお使いください。

MPIジョブの場合、InfiniBandによる通信にもメモリが利用される点と、先頭ノード以外のメモリ使用量が監視されない点を考慮して、以下のようにメモリ使用量に余裕を見てジョブを投入してください。

実行する並列数を16、各プロセスが要求するメモリを3GBと仮定します。
通信相手が数十プロセスの場合で、+1G程度のメモリをプロセスがバッファとして使用しますので、動作には4GB必要になります。
この他に、MPIを動作させるためにシステム的なバッファが別に確保されます。
この時のサイズは挙動により異なるようですが、最大で5GBとのことですので、
チャンクが使用するメモリとしては45GB以下であれば安全な動作が確保されます。
(チャンクとはselect=x:以下に記述される ":ncpus=4:mpiprocs=4:mem=16gb" の部分を指します。)

上記例に従うと、ノード内で使用するメモリはプロセスあたり4GBです。
総量で45GB以下なら11プロセスまでがノード内で動作可能となりますので、16並列の場合は2ノードが必要になります。
この場合、ノードの利用は均等にしたほうが処理が安定しますので、投入時の資源指定は

-l select=2:ncpus=8:mpiprocs=8:mem=32gb -l place=scatter 

となります。利用の手引、5章も参照ください。
この例のように、メモリとプロセス数のバランスを考慮して資源指定をご検討ください。
また、ランクごとに使用するメモリ量が変わってくるプログラムでは、先頭ノード以外でメモリ使用量がt2subによる指定値を超えてもシステム側で自動的に終了されないため、ノードのクラッシュに直結する可能性が高くなります。TSUBAMEのジョブ管理システムだけに頼らずに、実際のメモリ使用量が物理メモリ実装量を超えないよう適切に管理してください。