Ceci est une ancienne révision du document !


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

Langage Fortran 90, code parallèle

Le programme SommeVecVecPAR.f90 effectue la somme des deux vecteurs A et B. Le résultat est mis dans C. Chaque étape est effectuée sur 2 processus. Si le programme est exécuté sur plusieurs cœurs, seuls deux cœurs seront réellement utilisés.

Compilation du programme :

Définition de l'environnement :

  • définition de l'environnement
module avail
module load GCC/7.2.0/OpenMPI/3.0.0 
  • Vérification
mpifort -showme

gfortran .....

Compilation :

mpifort -o SommeVecVecPAR.exe SommeVecVecPAR.f90 

Le fichier binaire (exécutable) SommeVecVecPAR.exe est généré.

Exécution du programme :

Exécution sur le serveur de compilation :

mpirun -np 2 ./SommeVecVecPAR.exe

Le résultat est affiché a l'écran :

LES DEUX VECTEURS :
A =            1           2           3           4           5           6           7           8           9          10
B =            9           8           7           6           5           4           3           2           1           0

LES DEUX VECTEURS LOCAUX :
Je suis le proc            0 parmi            2  processus
A local ( proc            0  )  =            1           2           3           4           5
B local ( proc            0  )  =            9           8           7           6           5
Je suis le proc            1 parmi            2  processus
A local ( proc            1  )  =            6           7           8           9          10
B local ( proc            1  )  =            4           3           2           1           0
LE VECTEUR SOMME LOCAL : 
C local ( proc            1  )  =           10          10          10          10          10
C local ( proc            0  )  =           10          10          10          10          10
LE VECTEUR SOMME :
C =           10          10          10          10          10          10          10          10          10          10

Exécution sur le cluster :

On utilise un script de soumission batch.sh pour le shell bash (ou batch.csh ) 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 les noeuds d'execution.

SGE → batch.sh → binaire

qsub batch.sh
Your job 772030 ("SommeVecVecPAR") has been submitted
qstat

job-ID  prior   name             user         state submit/start at     queue                          slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------
336000 0.00000 SommeVecVecPAR   Login     qw    02/14/2018 10:53:51                                    2        

qstat

job-ID  prior   name             user         state submit/start at     queue                          slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------
336000 0.05000 SommeVecVecPAR   Login     r     02/14/2018 10:54:16 r410B_ib_test@r410lin57.ens-ly     2 

La sortie de l'écran (sortie standard) est redirigée dans le fichier SommeVecVecPAR.o772030 et la sortie erreur est redirigée dans le fichier SommeVecVecPAR.e772030.

cat SommeVecVecPAR.o772030

/home/cicaluga/Support/FormationPSMN/SommeVecVecPar
 LES DEUX VECTEURS :
 A =            1           2           3           4           5           6           7           8           9          10
 B =            9           8           7           6           5           4           3           2           1           0
 LES DEUX VECTEURS LOCAUX :
 Je suis le proc            0 parmi            2  processus
 A local ( proc            0  )  =            1           2           3           4           5
 B local ( proc            0  )  =            9           8           7           6           5
 LE VECTEUR SOMME LOCAL : 
 C local ( proc            0  )  =           10          10          10          10          10
LE VECTEUR SOMME :
 C =           10          10          10          10          10          10          10          10          10          10
 Je suis le proc            1 parmi            2  processus
 A local ( proc            1  )  =            6           7           8           9          10
 B local ( proc            1  )  =            4           3           2           1           0
 C local ( proc            1  )  =           10          10          10          10          10
documentation/tutorials/build/fortran_parallele.1518682758.txt.gz · Dernière modification: 2018/02/15 09:19 par cicaluga