Slur が #SBATCH
の処理を停止します スクリプト内の実行可能コードの最初の行のディレクティブ。 #SBATCH
のユーザー向け ディレクティブは、それらのディレクティブの上で実行しようとしているコードに依存しません。 #SBATCH
を配置するだけです
OP と同様に、sbatch オプションがその上に配置したコマンドに依存している場合は、回避策/解決策について他の回答を参照してください。
<ブロック引用>バッチ スクリプトには、「#SBATCH」スクリプト内の実行可能なコマンドの前で始まるオプションが含まれる場合があります . sbatch は、スクリプト内の最初の非コメント非空白行に達すると、それ以降の #SBATCH ディレクティブの処理を停止します。
sbatch ドキュメントから、強調します。
これはうまくいきません。
を実行するとどうなるか
sbatch myscript.sh
slurm はこれらの特別な #SBATCH 行のスクリプトを解析し、ジョブ レコードを生成し、バッチ スクリプトをどこかに保存します。バッチ スクリプトは、後でジョブが実行されたときにのみ実行されます。
そのため、ワークフローを少し異なる方法で構築し、ジョブを送信する前にまず必要なプロシージャの数を計算する必要があります。次のようなものを使用できることに注意してください
sbatch -n $numProcs myscript.sh
、スクリプトを自動生成する必要はありません (また、mpirun は割り当て内の proc の数を自動的に取得できるはずです。「-np」を使用する必要はありません)。