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:testspgi [2015/04/29 05:44] – [Tests de performance] cicaluga | documentation:tools:testspgi [2023/01/12 09:40] (Version actuelle) – supprimée ltaulell | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Tests de fonctionnement et performance PGI et CUDA fortran ====== | ||
| - | {{INLINETOC}} | ||
| - | ===== PGI 15.1 sur les systèmes Debian ===== | ||
| - | |||
| - | La version de PGI à utiliser sur les systèmes Debian est la 15.1. | ||
| - | |||
| - | ==== Environnement de travail ==== | ||
| - | |||
| - | Pour pouvoir utiliser PGI 15.1, il faut d' | ||
| - | |||
| - | <code bash> | ||
| - | e5-2670comp3: | ||
| - | </ | ||
| - | |||
| - | 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 : | ||
| - | |||
| - | <code bash> | ||
| - | e5-2670comp3: | ||
| - | / | ||
| - | |||
| - | e5-2670comp3: | ||
| - | pgfortran 15.1-0 64-bit target on x86-64 Linux -tp sandybridge | ||
| - | The Portland Group - PGI Compilers and Tools | ||
| - | Copyright (c) 2015, NVIDIA CORPORATION. | ||
| - | </ | ||
| - | |||
| - | ==== Compilateurs et autres outils ==== | ||
| - | |||
| - | Les compilateurs et les autres binaires fournis par SGI se trouvent dans le répertoire bin de l' | ||
| - | |||
| - | <code bash> | ||
| - | e5-2670comp3: | ||
| - | acc1rc | ||
| - | acclin8664rc | ||
| - | CcffReader.jar | ||
| - | ccrc | ||
| - | change-pgi-hostid | ||
| - | cppcurc | ||
| - | cpprc | ||
| - | c++rc | ||
| - | fnativerc | ||
| - | ganymed-ssh2-build251.jar | ||
| - | iparc | ||
| - | jide-common.jar | ||
| - | jide-dock.jar | ||
| - | jpgdbg.jar | ||
| - | Jpgprof.jar | ||
| - | libamdocl64.so | ||
| - | lin8664rc | ||
| - | lin86rc | ||
| - | llvm-as | ||
| - | llvm-link | ||
| - | lmborrow | ||
| - | lmgrd | ||
| - | lmgrd.rc | ||
| - | lmutil | ||
| - | localrc | ||
| - | makelocalrc | ||
| - | mpirun_dbg.pgdbg | ||
| - | nativerc | ||
| - | optopgprof | ||
| - | pgaccelerror | ||
| - | pgaccelinfo | ||
| - | </ | ||
| - | |||
| - | Notons les binaires suivants : | ||
| - | |||
| - | ^ Binaire ^ Description ^ | ||
| - | | pgfortran | compilateur Fortran 2003 capable OpenMP et auto-parallélisation | | ||
| - | | pgcc | compilateur ANSI C capable OpenMP et auto-parallélisation | | ||
| - | | pgc++ | compilateur ANSI C++ capable OpenMP et auto-parallélisation | | ||
| - | | pgprof | profileur graphique MPI, OpenMP et multi-thread | | ||
| - | | pgdbg | débogueur graphique MPI, OpenMP et multi-thread | | ||
| - | |||
| - | ==== Options de compilation ==== | ||
| - | |||
| - | Parmi les options des compilateurs, | ||
| - | |||
| - | ^ Option ^ Description ^ | ||
| - | | -c | Generate intermediate object file but does not attempt to link | | ||
| - | | -g | Adds information for debugging to the object file and/or executable | | ||
| - | | -I < | ||
| - | | -L < | ||
| - | | -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 | | ||
| - | | -O3 | Higher level of optimization than -O2 (the default optimization level) | | ||
| - | | -fast | Higher optimization level than -O3 | | ||
| - | | -Mipa | Tells the compiler to perform interprocedural analysis. Can be very time consuming toperform. This flag should also be used in both compilation and linking steps | | ||
| - | | -Mconcur | Enables autoparallelization. Additional options can be used with -Mconcur to provide morefine-grained control of autoparallelization | | ||
| - | | -Minfo | Instructs the compiler to report optimizations that are made | | ||
| - | | -Mneginfo | Instructs the compiler to report optimizations that are not made | | ||
| - | | -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 donné 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 NCPUS 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 | ||
| - | | ||
| - | | ||
| - | </ | ||