Slurm přestane zpracovávat #SBATCH
direktivy na prvním řádku spustitelného kódu ve skriptu. Pro uživatele, jejichž #SBATCH
direktivy nejsou závislé na kódu, který se snaží spustit nad těmito direktivami, stačí zadat #SBATCH
řádky nahoře.
Pokud, jako u OP, jsou vaše možnosti dávek závislé na příkazech, které jste umístili nad ně, viz další odpověď.
Dávkový skript může obsahovat volby, kterým předchází "#SBATCH" před všemi spustitelnými příkazy ve skriptu . sbatch přestane zpracovávat další direktivy #SBATCH, jakmile bude ve skriptu dosaženo první řádky bez komentáře.
Z dávkových dokumentů, můj důraz.
Tohle nebude fungovat. Co se stane, když spustíte
sbatch myscript.sh
je, že slurm analyzuje skript pro tyto speciální řádky #SBATCH, vygeneruje záznam úlohy a někde uloží dávkový skript. Dávkový skript se provede až později, když se úloha spustí.
Musíte tedy strukturovat svůj pracovní postup trochu jiným způsobem a před odesláním úlohy nejprve vypočítat počet procesů, které potřebujete. Všimněte si, že můžete použít něco jako
sbatch -n $numProcs myscript.sh
, nemusíte skript generovat automaticky (také mpirun by měl být schopen získat počet procesů ve vaší alokaci automaticky, není třeba používat "-np").