Ceci est une ancienne révision du document !
Soit le programme écrit en C et parallèle hybrid OpenMP&MPI ProgPAR_OpenMP_MPI.c. On a deux proc MPI + 8 treads OpenMP par proc MPI.
module avail module load GCC/7.2.0/OpenMPI/3.0.0
Compilation :
mpicc -fopenmp ProgPAR_OpenMP_MPI.c -o ProgPAR_OpenMP_MPI.c.exe
Le fichier binaire (exécutable) ProgPAR_OpenMP_MPI.c.exe
est généré.
export OMP_NUM_THREADS=8 (pour bash) setenv OMP_NUM_THREADS "8" (pour tcsh) mpirun -np 2 -bind-to socket -npersocket 1 ./ProgPAR_OpenMP_MPI.c.exe
Le résultat est affiché a l'écran :
Bonjour, je suis le thread 1 parmi 8 threads du process 0 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 3 parmi 8 threads du process 0 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 2 parmi 8 threads du process 0 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 0 parmi 8 threads du process 0 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 6 parmi 8 threads du process 0 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 7 parmi 8 threads du process 0 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 5 parmi 8 threads du process 0 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 4 parmi 8 threads du process 0 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 7 parmi 8 threads du process 1 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 1 parmi 8 threads du process 1 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 0 parmi 8 threads du process 1 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 2 parmi 8 threads du process 1 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 5 parmi 8 threads du process 1 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 6 parmi 8 threads du process 1 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 3 parmi 8 threads du process 1 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr Bonjour, je suis le thread 4 parmi 8 threads du process 1 parmi 2 processes sur le noeud e5-2670comp1.psmn.ens-lyon.fr
On utilise un script de soumission script_OpenMP_MPI.sh (ou script_OpenMP_MPI.csh, pour le shell bash) pour soumettre le job sur les clusters de calcul.
C'est le script de soumission qui configure l'environnement, puis appelle votre binaire (avec ses options, s'il en a) sur le noeud d'execution.
SGE → script_OpenMP_MPI → binaire
qsub script_OpenMP_MPI Your job 341093 ("ProgrammeOpenMP_MPI") has been submitted qstat job-ID prior name user state submit/start at queue slots ja-task-ID ----------------------------------------------------------------------------------------------------------------- 341093 0.00000 ProgrammeOpenMP_MPI ccalugar qw 02/14/2018 14:55:55 16 qstat job-ID prior name user state submit/start at queue slots ja-task-ID ----------------------------------------------------------------------------------------------------------------- 341093 0.07300 ProgrammeOpenMP_MPI ccalugar r 02/14/2018 14:57:55 E5-2667v2h6deb128@c8220node213 16
ProgrammeOpenMP_MPI.o341093
ProgrammeOpenMP_MPI.e341093
cat ProgrammeOpenMP_MPI.o341093 ....