Ceci est une ancienne révision du document !
Le programme SommeVecVecSEQ.f90 effectue la somme des deux vecteurs A et B. Le résultat est mis dans C.
Définition de l'environnement :
source /usr/local/modeles/set_debian7-clean.csh source /usr/share/modules/init/csh module use /applis/PSMN/Modules module load Base/psmn module load intel/14.0.1
source /usr/local/modeles/intel-14.0.1.csh (avec intel)
source /usr/local/modeles/gnu-4.6.3 (avec gnu)
source /usr/local/modeles/set_debian7-clean.sh source /usr/share/modules/init/sh module use /applis/PSMN/Modules module load Base/psmn module load intel/14.0.1
source /usr/local/modeles/intel-14.0.1.sh (avec intel)
source /usr/local/modeles/gnu-4.6.3.sh
ifort --version ifort (IFORT) 14.0.1 20131008
Compilation :
ifort -o SommeVecVecSEQ.f90.exe SommeVecVecSEQ.f90 (avec intel)
gfortran -o SommeVecVecSEQ.f90.exe SommeVecVecSEQ.f90 (avec gnu)
Le fichier binaire (exécutable) SommeVecVecSEQ.f90.exe
a été généré.
./SommeVecVecSEQ.f90.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 Le vecteur somme : C = 10 10 10 10 10 10 10 10 10 10
On utilise un script de soumission batch.csh (ou batch.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.
batch.csh → binaire
./batch.csh Your job 769504 ("test") has been submitted qstat job-ID prior name user state submit/start at queue slots ja-task-ID ----------------------------------------------------------------------------------------------------------------- 769504 0.00000 test cicaluga qw 06/12/2012 07:21:46
batch.csh.o769504
batch.csh.e769504
cat batch.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.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.
Définition de l'environnement :
source /usr/share/modules/init/csh module use /applis/PSMN/Modules module load Base/psmn module load openmpi/1.6.4-intel-14.0.1
source /usr/share/modules/init/sh module use /applis/PSMN/Modules module load Base/psmn module load openmpi/1.6.4-intel-14.0.1
source /usr/local/modeles/openmpi-1.4.5-gnu-4.6.3 (avec gnu)
source /usr/local/modeles/openmpi-1.6.4-intel-14.0.1-debian7.csh (avec intel) //(méthode "modeles")//
source /usr/local/modeles/openmpi-1.4.5-gnu-4.6.3.sh
mpif90 -showme ifort -I/softs/openmpi-1.6.4-intel-14.0.1-debian7/include -I/softs/openmpi-1.6.4-intel-14.0.1-debian7/lib -L/softs/openmpi-1.6.4-intel-14.0.1-debian7/lib -lmpi_f90 -lmpi_f77 -lmpi -lrdmacm -libverbs -lrt -lnsl -lutil -ldl -lm -lnuma -lrt -lnsl -lutil
mpif90 -o SommeVecVecPAR.f90.exe SommeVecVecPAR.f90 (avec intel)
mpif90 -o SommeVecVecPAR.f90.exe SommeVecVecPAR.f90 (avec gnu)
Le fichier binaire (exécutable) SommeVecVecPAR.f90.exe
est généré.
Exécution sur le serveur de compilation :
mpirun -np 2 ./SommeVecVecPAR.f90.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 les nœuds
Il y a un script de soumission (batch.csh) et un script d'exécution (batchrun.csh).
C'est le script de soumission qui doit être lancé et c'est lui qui appelle le script d'exécution.
batch → batchrun → binaire
./batch Your job 772030 ("batchrun") has been submitted
qstat job-ID prior name user state submit/start at queue slots ja-task-ID ----------------------------------------------------------------------------------------------------------------- 772030 0.00000 batchrun Login 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 Login r 06/18/2012 07:42:16 r410B_ib_test@r410lin57.ens-ly 2
La sortie de l'écran (sortie standard) est redirigée dans le fichier batchrun.o772030
et la sortie erreur est redirigée dans le fichier batchrun.e772030
.
cat batchrun.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