Ce deuxième exercise a pour but d'illustrer l'utilisation des communications bloquantes point à point. Dans ce code, le processus MPI de rang 1 envoie un message au processus de rang 2.
Warning
n'oubliez pas de charger miniforge avant de commencer cet exercice.
source /gpfs/workdir/labotm/Installations/miniforges3/m2dfe_env.sh- Prenez le temps de regarder le code dans sa globalité.
La récupération des rangs rank permet d'effectuer des actions différenciées pour
chaque processus par l'intermédiaire d'une simple condition if.
Ici, l'envoi est effectué par le rang 1 et la réception par le rang 2 grâce à la condition if.
- Complétez la fonction qui permet au rang 1 d'envoyer la variable
messagede type entier (integer) au rang 2.
comm.send(...)- Complétez maintenant la fonction qui permet de réceptionner le message venant du rang 1.
message = comm.recv(...)- Exécuter le code avec au moins 3 processus sur la frontale ou sur un noeud de calcul :
mpirun -np 4 python main.pyVous pouvez utiliser l'exemple de script SLURM suivant pour exécuter votre code sur un noeud de Ruche :
#!/bin/bash
#SBATCH --job-name=master_dfe
#SBATCH --output=output
#SBATCH --error=error # fichier qui réceptionne la sortie standard
#SBATCH --ntasks=1 # Nombre d'unité de calcul ou de processus MPI
#SBATCH --time=00:10:00 # Temps souhaité pour la réservation
#SBATCH --partition=cpu_short # Partition des jobs rapides
source /gpfs/workdir/labotm/Installations/miniforges3/m2dfe_env.sh
mpirun -np 1 python3 main.pyPour rappel, on exécute le script avec la commande sbatch :
sbatch launch.slurmVous pouvez modifier le paramètre --ntasks pour exécuter votre code avec plusieurs processus MPI.