Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
documentation:tools:compilo:pgi [2015/04/29 05:50] – cicaluga | documentation:tools:compilo:pgi [2023/01/12 09:53] (Version actuelle) – supprimée ltaulell | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Le Compilateur PGI ====== | ||
- | [[documentation: | ||
- | |||
- | ===== Compilation séquentielle ===== | ||
- | |||
- | Versions disponibles : | ||
- | * 15.1 | ||
- | * 11.2 | ||
- | * < | ||
- | * 10.9 | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | * 9.0-2 (// | ||
- | |||
- | |||
- | Pour les clusters **debian 7**, il faut utiliser les modulefiles (consulter [[documentation: | ||
- | |||
- | Pour les clusters **centos 5.x**, il faut ajouter la ligne suivante dans le script d' | ||
- | <code bash> | ||
- | avec '' | ||
- | |||
- | |||
- | Tableau récapitulatif : | ||
- | ^ Compilateur ^ version ^ commande(s) ^ chemin d' | ||
- | | PGI | 15.1 | pgf77, pgf90, pgf95, pgcc, pgCC | / | ||
- | | **modulefile** : aucun ||||| | ||
- | | PGI | 11.2 | pgf77, pgf90, pgf95, pgcc, pgCC | / | ||
- | | **modulefile** : aucun ||||| | ||
- | | PGI | 10.9 | pgf77, pgf90, pgf95, pgcc, pgCC | / | ||
- | | **modulefile** : aucun ||||| | ||
- | | PGI | 9.0-2 | pgf77, pgf90, pgf95, pgcc, pgCC | / | ||
- | | **modulefile** : aucun ||||| | ||
- | ===== Compilation parallèle (OpenMPI) ===== | ||
- | |||
- | Toutes les versions d' | ||
- | |||
- | Pour les clusters **debian 7**, il faut utiliser les modulefiles (consulter [[documentation: | ||
- | |||
- | Pour les clusters **centos 5.x**, il faut ajouter la ligne suivante dans le script d' | ||
- | |||
- | <code bash> | ||
- | avec '' | ||
- | |||
- | Tableau récapitulatif : | ||
- | ^ Compilateur ^ version ^ commande(s) ^ chemin d' | ||
- | | PGI | 11.2 | mpif77, mpif90, mpicc, mpiCC | / | ||
- | | **modulefile** : aucun |||||| | ||
- | | PGI | 10.9 | mpif77, mpif90, mpicc, mpiCC | / | ||
- | | **modulefile** : aucun |||||| | ||
- | | PGI | 9.0-2 | mpif77, mpif90, mpicc, mpiCC | / | ||
- | | **modulefile** : aucun |||||| | ||
- | |||
- | ==== Tests de performance ==== | ||
- | |||
- | Des exemples type de codes source pour évaluer les capacité du compilateur PGI sont disponibles dans le répertoire / | ||
- | |||
- | <code bash> | ||
- | e5-2670comp3: | ||
- | dr-xr-xr-x 3 root root 4096 mars | ||
- | dr-xr-xr-x 4 root root 4096 mars | ||
- | dr-xr-xr-x 2 root root 4096 mars | ||
- | dr-xr-xr-x 8 root root 4096 mars | ||
- | -r--r--r-- 1 root root 659 mars | ||
- | </ | ||
- | |||
- | Pour tester ces benchmarks, il faut copier ces répertoires sur le compte utilisateur. | ||
- | |||
- | Exemplifions ici l' | ||
- | |||
- | <code bash> | ||
- | e5-2670comp3: | ||
- | -r-xr-xr-x 1 root root 54 mars | ||
- | -r-xr-xr-x 1 root root 51 mars | ||
- | -r-xr-xr-x 1 root root 62 mars | ||
- | -r-xr-xr-x 1 root root 59 mars | ||
- | -r-xr-xr-x 1 root root 64 mars | ||
- | -r--r--r-- 1 root root 2556 mars | ||
- | -r--r--r-- 1 root root 6464 mars | ||
- | </ | ||
- | |||
- | Le code source Fortran est contenu dans le fichier matmul.F, alors que les scripts build* contiennent la commande de compilation pour plusieurs modes (compilateurs pgf77, pgf90, pghpf avec ou sans auto-parallélisation/ | ||
- | |||
- | <code bash> | ||
- | e5-2670comp3: | ||
- | pgf77 -fast -Mconcur -Minfo matmul.F -o matmul_f77 -V | ||
- | e5-2670comp3: | ||
- | pgf90 -fast -Mconcur -Minfo -DPGF90 matmul.F -o matmul_f90 -V | ||
- | e5-2670comp3: | ||
- | pgf90 -fast -mp -Minfo -DPGF90 matmul.F -o matmul_f90mp -V | ||
- | e5-2670comp3: | ||
- | pgf77 -fast -mp -Minfo matmul.F -o matmul_f77mp -V | ||
- | e5-2670comp3: | ||
- | pghpf -fast -Mautopar -Minfo -DPGF90 | ||
- | </ | ||
- | |||
- | Le lancement de ces scripts génère les exécutables correspondants : matmul_f77, matmul_f77mp, | ||
- | |||
- | Leur exécution peut alors être faite. Par défaut, on utilise un seul processeur. Le nombre de processeurs utilisés peut être modifié par : | ||
- | |||
- | - pour l' | ||
- | <code bash> | ||
- | setenv NCPUS 2 | ||
- | </ | ||
- | |||
- | - pour la parallelisation avec OpenMP (matmul_f77mp, | ||
- | <code bash> | ||
- | setenv OMP_NUM_THREADS 2 | ||
- | </ | ||
- | |||
- | - pour HPF : rajouter -pghpf -np 2 au moment de l' | ||
- | |||
- | Voici le résultat de ces exécutions pour 1 et 2 processeurs : | ||
- | |||
- | <code bash> | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200, N = 200, P = 200 | ||
- | | ||
- | | ||
- | e5-2670comp3: | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200, N = 200, P = 200 | ||
- | | ||
- | | ||
- | |||
- | e5-2670comp3: | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200 , N = 200 , P = 200 | ||
- | | ||
- | | ||
- | e5-2670comp3: | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200 , N = 200 , P = 200 | ||
- | | ||
- | | ||
- | |||
- | e5-2670comp3: | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200, N = 200, P = 200 | ||
- | | ||
- | | ||
- | e5-2670comp3: | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200, N = 200, P = 200 | ||
- | | ||
- | | ||
- | |||
- | e5-2670comp3: | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200 , N = 200 , P = 200 | ||
- | | ||
- | | ||
- | e5-2670comp3: | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200 , N = 200 , P = 200 | ||
- | | ||
- | | ||
- | |||
- | e5-2670comp3: | ||
- | e5-2670comp3: | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200 , N = 200 , P = 200 | ||
- | | ||
- | | ||
- | e5-2670comp3: | ||
- | | ||
- | M = 200 , N = 200 , P = 200 | ||
- | | ||
- | | ||
- | </ |