Compilation et d'exécution d'un programme (Fortran)

Langage Fortran 90, code parallèle OpenMP

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.

Compilation du programme :

Définition de l'environnement :

  • définition de l'environnement
module avail
module load GCC/7.2.0
  • vérification de la version du compilateur
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é.

Exécution du programme :

Exécution sur le serveur de compilation :

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

Exécution sur le cluster :

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
  • La sortie de l'écran (sortie standard) est redirigée dans le fichier ProgrammeOpenMP.o341093
  • La sortie erreur (erreur standard) est redirigée dans le fichier 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
documentation/tutorials/build/fortran_paralleleopemmp.txt · Dernière modification: 2018/02/15 09:27 par cicaluga