Slurm beendet die Verarbeitung von #SBATCH
Direktiven in der ersten Zeile des ausführbaren Codes in einem Skript. Für Benutzer, deren #SBATCH
Direktiven hängen nicht von dem Code ab, den sie über diesen Direktiven auszuführen versuchen, setzen Sie einfach die #SBATCH
Zeilen oben.
Sehen Sie sich die andere Antwort für eine Problemumgehung/Lösung an, wenn Ihre Sbatch-Optionen wie bei OP von den Befehlen abhängen, die Sie darüber platziert haben.
Das Stapelskript kann Optionen enthalten, denen "#SBATCH" vor allen ausführbaren Befehlen im Skript vorangestellt ist . sbatch stoppt die Verarbeitung weiterer #SBATCH-Anweisungen, sobald die erste Nicht-Kommentar-Nicht-Leerzeichen-Zeile im Skript erreicht wurde.
Aus den Sbatch-Dokumenten, meine Betonung.
Das wird nicht funktionieren. Was passiert, wenn Sie
ausführen
sbatch myscript.sh
ist, dass slurm das Skript nach diesen speziellen #SBATCH-Zeilen analysiert, einen Job-Datensatz generiert und das Batch-Skript irgendwo speichert. Das Batch-Skript wird erst später ausgeführt, wenn der Job ausgeführt wird.
Sie müssen Ihren Workflow also etwas anders strukturieren und zuerst die Anzahl der benötigten Prozesse berechnen, bevor Sie den Job absenden. Beachten Sie, dass Sie so etwas wie
verwenden können
sbatch -n $numProcs myscript.sh
, müssen Sie das Skript nicht automatisch generieren (außerdem sollte mpirun in der Lage sein, die Anzahl der Procs in Ihrer Zuweisung automatisch zu erhalten, ohne dass "-np" verwendet werden muss).