まず第一に、SGE がインストールされている場合でも、クラスターは確実に SGE によって管理されません。SGE は#PBS
ジョブ ファイル内のセンチネルを認識せず、PBS_NODEFILE
環境変数をエクスポートしません (SGE がエクスポートするほとんどの環境変数は で始まりますSGE_
)。nodes=2:ppn=24
また、割り当てられたノード間のスロットの配分は、指定された並列環境によって制御されるため、リソース要求も受け入れません。あなたが持っているのは、PBS Pro または Torque のいずれかです。しかし、SGE はコマンド ライン ユーティリティに同じ名前を付け、qsub
多かれ少なかれ同じ引数を取ります。
あなたが説明した問題は通常、Open MPI が環境からノード リストを適切に取得できない場合に発生します。たとえば、PBS Pro/Torque をサポートするようにコンパイルされていない場合などです。その場合、mpirun
実行されたノードですべての MPI プロセスが開始されます。次のコマンドを実行して、適切な RAS モジュールがコンパイルされたことを確認します。
ompi_info | grep ras
さまざまな RAS モジュールが一覧表示され、その中に次のような名前が含まれている必要がありますtm
。
...
MCA ras: tm (MCA v2.0, API v2.0, Component v1.6.5)
...
モジュールがリストされていない場合、tm
Open MPI はノード リストを自動的に取得せず、ホスト ファイルを明示的に指定する必要があります。
mpiexec ... -machinefile $PBS_NODEFILE ...
PBS Pro/Torque では、Open MPI にもtm
PLM モジュールが必要です。このモジュールがないと、Open MPI は TM API を使用して 2 番目のノードでプロセスをリモートで起動できなくなり、SSH の使用にフォールバックします。このような場合、パスワードなしの SSH ログイン (公開鍵認証を使用するログインなど) が、各クラスター ノードから他の各ノードに可能であることを確認する必要があります。
問題を解決するための最初のステップは、上記のように正しいモジュールが存在するかどうかを確認することです。モジュールが存在する場合は、次のように起動hostname
しmpiexec
て動作するかどうかを確認する必要があります。
#PBS -l nodes=2:ppn=24
echo "Allocated nodes:"
cat $PBS_NODEFILE
echo "MPI nodes:"
mpiexec --mca ras_base_display_alloc 1 hostname
次に、2 つのリストを比較し、ブロックも調べALLOCATED NODES
ます。リストはほぼ同じである必要があり、ノードごとに 24 スロットの割り当てられたノード テーブルに両方のノードが表示される必要があります ( を参照Num slots
)。2 番目のリストにホスト名が 1 つしか含まれていない場合、Open MPI はホストファイルを適切に取得できません。これは、モジュールが存在しているにもかかわらず、何かがtm
モジュールの初期化または選択を妨げているためです。これは、システム全体の Open MPI 構成か、優先度の高い他の RAS モジュールのいずれかです。に渡すと、そうであるかどうかを判断するの--mca ras_base_verbose 10
にmpiexec
役立ちます。