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édenteDernière révisionLes deux révisions suivantes | ||
documentation:tools:testspgi [2015/04/28 14:31] – [Options de compilation] cicaluga | documentation:tools:testspgi [2020/08/25 15:58] – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Tests de fonctionnement et performance PGI et CUDA fortran | + | ====== Tests de fonctionnement et performance PGI et CUDA Fortran |
- | {{INLINETOC}} | ||
===== PGI 15.1 sur les systèmes Debian ===== | ===== PGI 15.1 sur les systèmes Debian ===== | ||
Ligne 14: | Ligne 14: | ||
</ | </ | ||
- | Cette commande redéfinit les variables d' | + | Cette commande redéfinit les variables d' |
Pour vérifier que cette étape s'est bien effectuée, on peut par exemple chercher si la commande pgfortran est reconnue et voir si elle concerne bien la version 15.1 : | Pour vérifier que cette étape s'est bien effectuée, on peut par exemple chercher si la commande pgfortran est reconnue et voir si elle concerne bien la version 15.1 : | ||
Ligne 83: | Ligne 83: | ||
| -c | Generate intermediate object file but does not attempt to link | | | -c | Generate intermediate object file but does not attempt to link | | ||
| -g | Adds information for debugging to the object file and/or executable | | | -g | Adds information for debugging to the object file and/or executable | | ||
- | | -I< | + | | -I < |
- | | -L< | + | | -L < |
| -r8 | Promotes REALs from the default size of 4 bytes to 8 bytes | | | -r8 | Promotes REALs from the default size of 4 bytes to 8 bytes | | ||
| -i8 | Promotes INTEGERs from the default size of 4 bytes to 8 bytes | | | -i8 | Promotes INTEGERs from the default size of 4 bytes to 8 bytes | | ||
Ligne 94: | Ligne 94: | ||
| -Mneginfo | Instructs the compiler to report optimizations that are not made | | | -Mneginfo | Instructs the compiler to report optimizations that are not made | | ||
| -mp | Enables parallelization via OpenMP directives | | | -mp | Enables parallelization via OpenMP directives | | ||
+ | |||
+ | |||
+ | ==== 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 | ||
+ | | ||
+ | | ||
+ | </ |