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.
source /usr/share/modules/init/csh module use /applis/PSMN/Modules module load Base/psmn module load intel/14.0.1
source /usr/share/modules/init/sh module use /applis/PSMN/Modules module load Base/psmn module load intel/14.0.1
ifort --version ifort (IFORT) 14.0.1 20131008
Compilation :
ifort -openmp -o ProgPAR_OpenMP.f90.exe ProgPAR_OpenMP.f90 (avec intel)
Le fichier binaire (exécutable) ProgPAR_OpenMP.f90.exe
est généré.
setenv OMP_NUM_THREADS "8" (pour tcsh) export OMP_NUM_THREADS=8 (pour bash) ./ProgPAR_OpenMP.f90.exe
Le résultat est affiché a l'écran :
Hello World from thread = 0 Number of threads = 8 Hello World from thread = 7 Hello World from thread = 6 Hello World from thread = 3 Hello World from thread = 2 Hello World from thread = 1 Hello World from thread = 4 Hello World from thread = 5
On utilise un script de soumission batch.csh (ou batch.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 → batch.csh → binaire
qsub batch.csh Your job 769504 ("ProgrammeOpenMP") has been submitted qstat job-ID prior name user state submit/start at queue slots ja-task-ID ----------------------------------------------------------------------------------------------------------------- 769504 0.00000 ProgrammeOpenMP cicaluga qw 06/12/2012 07:21:46
ProgOpenMP.o769504
ProgOpenMP.e769504
cat ProgOpenMP.o769504 Hello World from thread = 0 Number of threads = 8 Hello World from thread = 7 Hello World from thread = 6 Hello World from thread = 3 Hello World from thread = 2 Hello World from thread = 1 Hello World from thread = 4 Hello World from thread = 5