Ceci est une ancienne révision du document !
Le programme SommeVecVecSEQ.c effectue la somme des deux vecteurs A et B. Le résultat est mis dans C.
Définition de l'environnement :
module load IntelComp/2017.4 ou module load intel/2019.5
icc --version icc (ICC) 17.0.4 20170411 Copyright (C) 1985-2017 Intel Corporation. All rights reserved.
Compilation :
icc -o SommeVecVecSEQ.exe SommeVecVecSEQ.c (avec intel)
Le fichier binaire (exécutable) SommeVecVecSEQ.exe
a été généré.
./SommeVecVecSEQ.exe
⇒ Le résultat s'affiche 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 Le vecteur somme : C = 10 10 10 10 10 10 10 10 10 10
On utilise un script de soumission batch.sh pour le shell bash (ou 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
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
SommeVecVecSEQ.o769504
,SommeVecVecSEQ.e769504
.cat SommeVecVecSEQ.o769504 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 Le vecteur somme : C = 10 10 10 10 10 10 10 10 10 10
Le programme 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.
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)
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
mpicc -o SommeVecVecPAR.exe SommeVecVecPAR.c
Le fichier binaire (exécutable) SommeVecVecPAR.exe
a été généré.
mpirun -np 2 ./SommeVecVecPAR.exe
Le résultat s'affiche 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
On utilise un script de soumission batch.sh pour le shell bash (ou 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
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 r 06/18/2012 07:42:16 r410B_ib_test@r410lin57.ens-ly 2
SommeVecVecPAR.o772030
,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