Jobs parallèles

Les jobs appelés “parallèles” sont des jobs exécutant des tâches en simultané réparties par l’ordonnanceur sur des serveurs de calcul différents. Ces tâches sont synchronisées en utilisant une interface MPI. Pour soumettre un tel job, vous devez donc d’abord compiler votre code avec une bibliothèque MPI. Les bibliothèques OpenMPI et MPICH sont supportées par UGE et fournies par le CC-IN2P3.

Avant de soumettre un tel job il est nécessaire de créer un fichier .mpd.conf avec les droits 600 (-rw-------) dans votre HOME contenant un mot de passe :

% touch $HOME/.mpd.conf
% echo "Secretword = XXXX" > $HOME/.mpd.conf
% chmod 600 $HOME/.mpd.conf

La soumission du job se fait ensuite en spécifiant l’environnement parallèle openmpi ou mpich2 ainsi que le nombre de cœurs utilisés :

% qsub -pe <openmpi|mpich2> <number_of_cores> -q <QueueName> <script>

Note

Les tâches MPI sont potentiellement réparties sur différents serveurs de calcul (jusqu’à une par serveur). Dans le cas où vous souhaitez contrôler cette répartition, les environnements parallèles openmpi_4, openmpi_8 et openmpi_16 permettent de forcer l’ordonnanceur à exécuter respectivement 4, 8 et 16 tâches par serveur.

Les queues disponibles pour les jobs parallèles sont “pa_medium”, “pa_long” et “pa_longlasting”, à accès restreint.

Note

Un job parallèle peut demander un nombre arbitraire de cœurs, sans dépasser 256.

La sortie d’un job parallèle est écrite directement à sa destination finale lors de l’exécution du job, et non pas localement sur le serveur de calcul puis transféré à la fin du job vers sa destination finale.

Job OpenMPI

Le script doit charger l’environnement OpenMPI souhaité, par exemple la version 2.1.1 :

% source /pbs/software/centos-7-x86_64/openmpi/ccenv.sh 2.1.1

Puis utiliser mpiexec pour exécuter les tâches correspondant au nombre de cœurs demandés :

% mpiexec -n $NSLOTS myprogram

Le script peut ensuite être exécuté, avec par exemple :

% qsub -pe openmpi 64 -q pa_long test.sh

Job MPICH

Le script doit charger l’environnement MPICH souhaité, par exemple la version 3.2 :

% source /pbs/software/centos-7-x86_64/mpich2/ccenv.sh 3.2

Puis utiliser mpiexec pour exécuter les tâches correspondant au nombre de cœurs demandés :

% mpiexec -iface ib0 -np $NSLOTS myprogram

Le script peut ensuite être exécuté, avec par exemple :

% qsub -pe mpich2 64 -q pa_long test.sh