Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
documentation:tutorials:build:c [2021/06/04 12:35] cicalugadocumentation:tutorials:build:c [2023/01/13 09:36] (Version actuelle) – supprimée ccalugar
Ligne 1: Ligne 1:
-====== Compilation et d'exécution d'un programme (C) ======  
  
-===== Langage C, code séquentiel ===== 
- 
-Le programme [[documentation:examples:sommevecvecseq.c|SommeVecVecSEQ.c]] effectue la somme des deux vecteurs A et B. Le résultat est mis dans C. 
- 
-==== Compilation du programme ==== 
- 
- 
-**Définition de l'environnement** :  
- 
- 
-  * définition de l'environnement **pour bash**  
-<code bash> 
- 
-module load IntelComp/2017.4 
- 
-ou  
- 
-module load intel/2019.5   
-</code> 
- 
-  * vérification de la version du compilateur 
-<code> 
-icc --version 
-icc (ICC) 17.0.4 20170411 
-Copyright (C) 1985-2017 Intel Corporation.  All rights reserved. 
-</code> 
- 
-**Compilation** : 
- 
-<code> 
-icc -o SommeVecVecSEQ.exe SommeVecVecSEQ.c (avec intel) 
-</code> 
- 
- 
- 
-Le fichier binaire (exécutable) ''SommeVecVecSEQ.exe'' a été généré. 
- 
-==== Exécution sur le serveur de compilation : ==== 
- 
-<code> 
-./SommeVecVecSEQ.exe 
-</code> 
- 
-=> Le résultat s'affiche a l'écran : 
- 
-<code> 
- Les deux vecteurs : 
- 
-A =            1                                                                                          10 
-  
-B =            9                                                                                           0 
-  
-Le vecteur somme : 
-  
-C =           10          10          10          10          10          10          10          10          10          10 
-</code> 
- 
-==== Exécution sur les nœuds ==== 
- 
- 
-On utilise un script de soumission [[documentation:tutorials:submit:jobsequentielbash|batch.sh]] pour le shell bash (ou [[documentation:tutorials:submit:jobsequentieltcsh|batch.csh]], pour le shell tcsh) 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.sh -> binaire'' 
- 
-<code> 
-qsub batch.sh 
- 
-Your job 769504 ("batch.sh") has been submitted 
- 
-qstat 
-job-ID  prior   name             user         state submit/start at     queue                          slots ja-task-ID  
------------------------------------------------------------------------------------------------------------------ 
- 769504 0.00000 SommeVecVecSEQ   cicaluga     qw    06/12/2012 07:21:46 
-</code> 
- 
-  * La sortie de l'écran (sortie standard) est redirigée dans le fichier ''SommeVecVecSEQ.o769504'', 
-  * La sortie erreur (erreur standard) est redirigée dans le fichier ''SommeVecVecSEQ.e769504''. 
- 
-<code> 
-cat SommeVecVecSEQ.o769504 
- 
- Les deux vecteurs : 
- A =            1                                                                                          10 
- B =            9                                                                                           0 
- Le vecteur somme : 
- C =           10          10          10          10          10          10          10          10          10          10 
-</code> 
- 
- 
-===== Langage C, code parallèle ===== 
- 
-Le programme [[documentation:examples:sommevecvecpar.c|SommeVecVecPAR.c]] 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 sont effectivement utilises. 
- 
-==== Compilation du programme : ==== 
- 
-=== Définition de l'environnement : === 
-  
- 
-  * définition de l'environnement   
-<code bash> 
-module load IntelComp/2017.4 (ou module load intel/2019.5 )    
-module load IntelComp/2017.4/OpenMPI/3.0.0 (ou intel/2019.5/impi/2019.5.281) 
-</code> 
- 
- 
-  * Vérification 
-<code> 
-mpicc -showme 
- 
-icc -I/applis/PSMN/debian9/software/Compiler/IntelComp/2017.4/Core/OpenMPI/3.0.0/include -pthread -Wl,-rpath -Wl,/applis/PSMN/debian9/software/Compiler/IntelComp/2017.4/Core/OpenMPI/3.0.0/lib -Wl,--enable-new-dtags -L/applis/PSMN/debian9/software/Compiler/IntelComp/2017.4/Core/OpenMPI/3.0.0/lib -lmpi 
-</code> 
- 
-=== Compilation : === 
- 
- 
-<code> 
-mpicc -o SommeVecVecPAR.exe SommeVecVecPAR.c 
-</code> 
- 
- 
-Le fichier binaire (exécutable) ''SommeVecVecPAR.exe'' a été généré. 
- 
-==== Exécution sur le serveur de compilation ==== 
- 
-<code> 
-mpirun -np 2 ./SommeVecVecPAR.exe 
-</code> 
- 
-Le résultat s'affiche a l'écran : 
- 
-<code> 
- LES DEUX VECTEURS : 
- A =            1                                                                                          10 
- B =            9                                                                                           0 
- LES DEUX VECTEURS LOCAUX : 
- Je suis le proc            0 parmi            2  processus 
- A local ( proc            0  )  =            1                                         5 
- B local ( proc            0  )  =            9                                         5 
- Je suis le proc            1 parmi            2  processus 
- A local ( proc            1  )  =            6                                        10 
- B local ( proc            1  )  =            4                                         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 
-</code> 
- 
-==== Exécution sur les nœuds ==== 
- 
-On utilise un script de soumission [[documentation:tutorials:submit:accueil&#job_parallele|batch.sh]] pour le shell bash (ou [[documentation:tutorials:submit:jobparalleleshellcsh|batch.csh]] pour le shell tcsh) 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'' 
- 
-<code> 
-qsub batch.sh 
- 
-Your job 772030 ("batch.sh") has been submitted 
- 
-qstat 
- 
-job-ID  prior        name              user         state submit/start at     queue                          slots ja-task-ID  
----------------------------------------------------------------------------------------------------------------- 
- 772030 0.00000      SommeVecVecPAR    cicaluga     qw    06/18/2012 07:41:51                                    2  
- 
-qstat 
- 
-job-ID  prior   name             user         state submit/start at     queue                          slots ja-task-ID  
------------------------------------------------------------------------------------------------------------------ 
- 772030 0.05000 SommeVecVecPAR   cicaluga         06/18/2012 07:42:16 r410B_ib_test@r410lin57.ens-ly      
- 
-</code> 
- 
-  * La sortie de l'écran (sortie standard) est redirigée dans le fichier ''SommeVecVecPAR.o772030'', 
-  * La sortie erreur (erreur standard) est redirigée dans le fichier ''SommeVecVecPAR.e772030''. 
- 
-<code> 
-cat SommeVecVecPAR.o772030 
- 
-/home/cicaluga/Support/FormationPSMN/SommeVecVecPar 
- LES DEUX VECTEURS : 
- A =            1                                                                                          10 
- B =            9                                                                                           0 
- LES DEUX VECTEURS LOCAUX : 
- Je suis le proc            0 parmi            2  processus 
- A local ( proc            0  )  =            1                                         5 
- B local ( proc            0  )  =            9                                         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                                        10 
- B local ( proc            1  )  =            4                                         0 
- C local ( proc            1  )  =           10          10          10          10          10 
-</code>