Exemple de script parallele qui va lancer 3programmes en meme temps et accomplir une tache pour rassembler les resultats une fois que les 3 programmes sont terminés (merci à Jean-François pour son aide)

#!/bin/bash                                                                                                                                                       
#SBATCH -J  nom_de_mon_job                                                                                                             
#SBATCH -o messortiesecran.out                                                                                                
#SBATCH -e meserreurs.out                                                                                              
#                                                                                                                                    
#SBATCH --ntasks=3   # 3 taches                                                                                                                 
#SBATCH --cpus-per-task= 2 # on peut éventuellement reserver des CPU pour les programmmes ici 2 processeurs par tache

#SBATCH --mail-type=ALL

#SBATCH --mail-user=jean-francois.rey@inrae.fr                                                                                       

# On supprime la configuration d'environnement précédent (plus de programme par défaut)

module purge

#on charge par exemple le module   R3
module load R/3.5.2

# on  Lance les 3 taches

srun --exclusive --ntask=1 --mem=500MB monprog.sh "0" &
srun --exclusive --ntask=1 --mem=500MB   monprog.sh "1" &

srun --exclusive ---ntask=1 --mem=500MB  monprog.sh "2" &

# on attend la fin des 3 taches"
wait
# les 3 programmes sont terminées on lance le programme final

srun programmefinal.sh


Il faut noter la présence du & a la fin du lancement de chaque instance . le & permet de lancer en tache de fond sans attendre la fin.

le deuxième aspect important et le wait qui par opposition au & va attendre que les 3 taches soient terminées pour procéder à l'assemblage des resultats des 3 taches.

! Et enfin le --mem=xxxMB dans le SRUN qui permet d'allouer la mémoire à chacun des jobs sinon les jobs se lanceront séquentiellement en utilisant la mémoire par defaut du SBATCH

attention aux espaces