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.
source /usr/local/modeles/gnu-4.6.3
gcc --version gcc (GCC) 4.6.3
gcc -o SommeVecVecSEQ.c.exe SommeVecVecSEQ.c
Le fichier binaire (exécutable) SommeVecVecSEQ.c.exe
a été généré.
./SommeVecVecSEQ.c.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
Il y a un script de soumission (batch.csh), et un script d'exécution (batchrun.csh) (ou batch.sh et batchrun.sh, pour le shell bash).
C'est le script de soumission qui doit être lance et c'est lui qui appelle le script d'exécution.
batch.csh → batchrun.csh → binaire
./batch.csh Your job 769504 ("batchrun.csh") has been submitted qstat job-ID prior name user state submit/start at queue slots ja-task-ID ----------------------------------------------------------------------------------------------------------------- 769504 0.00000 batchrun.csh cicaluga qw 06/12/2012 07:21:46
batchrun.csh.o769504
,batchrun.csh.e769504
.cat batchrun.csh.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.
source /usr/local/modeles/openmpi-1.4.5-gnu-4.6.3
mpicc -showme gcc -I/softs/openmpi-1.4.5-gcc-4.6.3/include -pthread -L/softs/openmpi-1.4.5-gcc-4.6.3/lib -lmpi -lopen-rte -lopen-pal -lrdmacm -libverbs -ldl -lnsl -lutil -lm
mpicc -o SommeVecVecPAR.c.exe SommeVecVecPAR.c
Le fichier binaire (exécutable) SommeVecVecPAR.c.exe
a été généré.
mpirun -np 2 ./SommeVecVecPAR.c.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
Il y a un script de soumission (batch.csh) et un script d'exécution (batchrun.csh), pour shell tcsh (ou batch.sh et batchrun.sh, pour le shell bash).
C'est le script de soumission qui doit être lance et c'est lui qui appelle le script d'exécution.
batch → batchrun → binaire
./batch.csh Your job 772030 ("batchrun.csh") has been submitted qstat job-ID prior name user state submit/start at queue slots ja-task-ID ----------------------------------------------------------------------------------------------------------------- 772030 0.00000 batchrun.csh 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 batchrun.csh cicaluga r 06/18/2012 07:42:16 r410B_ib_test@r410lin57.ens-ly 2
batchrun.csh.o772030
,batchrun.csh.e772030
.cat batchrun.csh.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