Je travaille sur un projet qui exécute des programmes sur deux partitions différentes d'un grand cluster de calcul. Je voudrais exécuter cela en utilisant un script batch, mais après la recherche, il n'est pas encore clair si/comment je peux allouer et exécuter des programmes sur deux partitions différentes à partir d'un seul script batch. Voici le genre de chose que je voudrais faireScript batch pour un travail multi-partition?
#!/bin/bash
#SBATCH --partition=<WHAT GOES HERE? I want to perform 100 processes on partition "batch" and 1 process on partition "gpu". I will alternate between the 2 during my jobs execution>
#SBATCH --ntasks=<100 on batch, 1 on gpu>
#SBATCH --mem-per-cpu=2G
#SBATCH --time=4-00:00:00
#SBATCH --exclude=nodeynode[003,016,019,020-023,026-030,004-015,017-018,020,024,031]
#SBATCH --job-name="lorem_ipsum"
filenames=("name1" "name2" "name3")
srun -p gpu python gpu_init.py
wait
for i in {0..100}
do
for name in "${filenames[@]}"
do
srun -p batch pythonexecutable &
done
srun -p gpu python gpu_iter.py
wait
done
Toutes mes excuses pour les erreurs de bash, je le script habituellement en python, mais je ne peux pas ici que je suis modules de commutation de python (versions différentes) dans mon script bash (pas montré). J'ai vu que vous pouvez réellement mettre une liste de partitions dans l'en-tête d'un script batch, mais d'après ce que j'ai lu, il suffit de dire au planificateur d'allouer toutes les partitions disponibles dans la liste, pas plusieurs partitions.
Merci!