GNU/Linux >> Linux Esercitazione >  >> Linux

Usa la variabile Bash all'interno dello script sbatch SLURM

Slurm interrompe l'elaborazione di #SBATCH direttive sulla prima riga di codice eseguibile in uno script. Per gli utenti con #SBATCH le direttive non dipendono dal codice che stanno tentando di eseguire sopra quelle direttive, basta inserire #SBATCH righe in alto.

Vedi l'altra risposta per una soluzione alternativa se, come con OP, le tue opzioni sbatch dipendono dai comandi che hai posizionato sopra di esse.

Lo script batch può contenere opzioni precedute da "#SBATCH" prima di qualsiasi comando eseguibile nello script . sbatch interromperà l'elaborazione di ulteriori direttive #SBATCH una volta che nello script è stata raggiunta la prima riga non di spazio vuoto senza commento.

Dai documenti sbatch, la mia enfasi.


Questo non funzionerà. Cosa succede quando corri

sbatch myscript.sh

è che slurm analizza lo script per quelle speciali righe #SBATCH, genera un record di lavoro, memorizza lo script batch da qualche parte. Lo script batch viene eseguito solo successivamente quando viene eseguito il lavoro.

Quindi devi strutturare il tuo flusso di lavoro in un modo leggermente diverso e calcolare prima il numero di processi necessari prima di inviare il lavoro. Nota che puoi usare qualcosa come

sbatch -n $numProcs myscript.sh

, non è necessario generare automaticamente lo script (inoltre, mpirun dovrebbe essere in grado di ottenere automaticamente il numero di processi nella tua allocazione, non è necessario utilizzare "-np").


Linux
  1. Script Bash(I)

  2. La variabile Curl Outfile non funziona nello script Bash?

  3. Utilizzare l'estensione .sh o .bash per gli script Bash?

  4. Modi insoliti per utilizzare le variabili all'interno degli script Bash

  5. Esporta una variabile da bash e usala in Python

Usa questo utile script Bash quando osservi le stelle

Variabile di esportazione Bash

35 Esempi di script Bash

Come eseguire uno script Bash

Come utilizzare il comando source all'interno dello script della pipeline Jenkins

Esegui il comando bash sulla pipeline jenkins