Ceci est une ancienne révision du document !
Soit le programme écrit en OpenMP ProgPAR_OpenMP.f90 qui affiche Hello World pour chaque thread et en plus, le thread maître affiche le nombre de threads.
module avail
module load GCC/7.2.0
gfortran --version GNU Fortran (GCC) 7.2.0 Copyright (C) 2017 Free Software Foundation, Inc.
Compilation :
gfortran -fopenmp -o ProgPAR_OpenMP.f90.exe ProgPAR_OpenMP.f90
Le fichier binaire (exécutable) ProgPAR_OpenMP.f90.exe
est généré.
setenv OMP_NUM_THREADS "16" (pour tcsh) export OMP_NUM_THREADS=16 (pour bash) ./ProgPAR_OpenMP.f90.exe
Le résultat est affiché a l'écran :
Hello World from thread = 0 Number of threads = 16 Hello World from thread = 3 Hello World from thread = 14 Hello World from thread = 13 Hello World from thread = 12 Hello World from thread = 15 Hello World from thread = 4 Hello World from thread = 1 Hello World from thread = 6 Hello World from thread = 11 Hello World from thread = 2 Hello World from thread = 10 Hello World from thread = 7 Hello World from thread = 9 Hello World from thread = 8 Hello World from thread = 5
On utilise un script de soumission script_OpenMP.csh (ou script_OpenMP.sh, 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 → binaire
qsub script_OpenMP Your job 341093 ("ProgrammeOpenMP") has been submitted qstat job-ID prior name user state submit/start at queue slots ja-task-ID ----------------------------------------------------------------------------------------------------------------- 341093 0.00000 ProgrammeOpenMP 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 ccalugar r 02/14/2018 14:57:55 E5-2667v2h6deb128@c8220node213 16
ProgrammeOpenMP.o341093
ProgrammeOpenMP.e341093
cat ProgrammeOpenMP.o341093 Hello World from thread = 0 Number of threads = 16 Hello World from thread = 3 Hello World from thread = 14 Hello World from thread = 13 Hello World from thread = 12 Hello World from thread = 15 Hello World from thread = 4 Hello World from thread = 1 Hello World from thread = 6 Hello World from thread = 11 Hello World from thread = 2 Hello World from thread = 10 Hello World from thread = 7 Hello World from thread = 9 Hello World from thread = 8 Hello World from thread = 5