Soit
le programme fortran 77 :
test.f
Ce programme fait appel à
quatre sous-programmes ddot.f,
dgemv.f,
xerbla.f
et lsame.f
et
utilise un fichier de données test.dat.
Ce
programme ouvre le fichier de données, effectue quelques
opérations et crée un fichier
(test.out) contenant
les impressions.
Configuration
: ajouter à la fin du fichier « .bash_profile »
(racine du compte) les lignes suivantes :
.
/opt/intel_cc_81/bin/iccvars.sh
.
/opt/intel_fc_81/bin/ifortvars.sh
Compilation
sans utiliser de librairie mathématique:
ifort
test.f ddot.f dgemv.f xerbla.f lsame.f -o test_seq
Utilisation
de la librairie mathématique MKL
Intel (BLAS, LAPACK, FFT, ...)
:
Définition d'une variable d'environnement dans le
fichier .bash_profile (racine
du compte) :
export
MKLPATH=/opt/intel/mkl70/lib/32
Intérêt
: lors de mises à jour
ultérieures un seul fichier à modifier.
Compilation
du même programme avec utilisation de la librairie BLAS
d'INTEL :
ifort test.f
$MKLPATH/libmkl_lapack.a $MKLPATH/libmkl_ia32.a
-lguide
-lpthread -o test_seq
Compilation
du même programme avec utilisation de la librairie BLAS
d'INTEL
et des options d'optimisation (-tpp7
Intel Xeon, -xW pour activer la
vectorisation) :
ifort -O3
-tpp7 -xW test.f $MKLPATH/libmkl_lapack.a
$MKLPATH/libmkl_ia32.a -lguide
-lpthread -o test_seq
Attention
: si vous avez des erreurs à
l'édition de liens avec la librairie MKL,
consulter
Intel® Math Kernel Library 7.0 pour Linux User
Notes
et
vérifier qu'il ne faut pas ajouter d'autres options.
Pour
les codes vectoriels, utiliser les options suivantes : -tpp7
-O3 -r8 -xW -ip -ipo -align -pad
ATTENTION
: Vérifier
toujours la cohérence et la précision des résultats
obtenues suite à l'utilisation d'options d'optimisation.
Exemple de Makefile pour code en Fortran.
Si
votre code utilise des librairies non standards (vos librairies,
ATLAS,...),
vous devez créer votre code en faisant
l'édition des liens de manière statique
(utiliser
l'option -static du
compilateur).
Inventaire
non exhaustif des
options pour vectoriser, paralléliser, optimiser les codes
à l'aide des compilateurs Intel.
Les compilateurs Intel disposent de quelques outils pour analyser vos codes : « profiling ».
Ajouter
l'option -p
lors de la compilation :
ifort
-p test.f ddot.f dgemv.f xerbla.f lsame.f -o test_seq
Exécuter
votre code normalement : qsub
run_test_home.sh
À
la fin de l'exécution un fichier nommé gmon.out
est créé, il contient les informations
relatives
au comportement de votre code.
Rmq : si vous utilisez
l'espace /scratch sur les
noeuds, ne pas oublier de rapatrier
le fichier gmon.out
dans votre /home.
Taper
alors la commande : gprof test_seq
gmon.out > profile.dat
Le
fichier profile.dat
contiendra les différentes informations sur le code et
notamment
les sous-programmes les plus gourmands en temps de
calcul
version html du fichier : profile.dat
Les compilateurs Intel disposent d'un débogueur : idb.
Configuration
: ajouter à la fin du fichier « .bash_profile »
(racine du compte) la ligne suivante
:
. /opt/intel_idb_81/bin/idbvars.sh
Manuel d'utilisation : Debugger Manual.
Release Notes : Debugger Release Notes
Page maintenue par Jean-Michel CROS (enseignant-chercheur).