Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
documentation:tools:compilo:pgi [2015/04/29 05:50] cicalugadocumentation:tools:compilo:pgi [2023/01/12 09:53] (Version actuelle) – supprimée ltaulell
Ligne 1: Ligne 1:
-====== Le Compilateur PGI ====== 
  
-[[documentation:tools:compilo:accueil|Les compilateurs]] 
- 
-===== Compilation séquentielle ===== 
- 
-Versions disponibles : 
-  * 15.1 
-  * 11.2 
-  * <del>11.0</del> (//obsolète//) 
-  * 10.9 
-  * <del>10.8</del> (//obsolète//) 
-  * <del>10.6</del> (//obsolète//) 
-  * <del>10.5</del> (//obsolète//) 
-  * <del>10.4</del> (//obsolète//) 
-  * <del>10.3</del> (//obsolète//) 
-  * <del>10.1</del> (//obsolète//) 
-  * 9.0-2 (//obsolète//) 
- 
- 
-Pour les clusters **debian 7**, il faut utiliser les modulefiles (consulter [[documentation:tools:modules|Environment Modules]]) pour charger l'environnement. 
- 
-Pour les clusters **centos 5.x**, il faut ajouter la ligne suivante dans le script d'appel : 
-<code bash>source /usr/local/modeles/pgi-No_de_version</code> 
-avec ''No_de_version'' = ''9.0-2'' à ''11.2''. 
- 
- 
-Tableau récapitulatif : 
-^ Compilateur ^ version ^ commande(s) ^ chemin d'accès ^ modèle de configuration ^ 
-| PGI | 15.1 | pgf77, pgf90, pgf95, pgcc, pgCC | /softs/pgi/linux86-64/15.1/bin/ | /usr/local/modeles/pgi-15.1 | 
-| **modulefile** : aucun  ||||| 
-| PGI | 11.2 | pgf77, pgf90, pgf95, pgcc, pgCC | /softs/pgi/linux86-64/11.2/bin/ | /usr/local/modeles/pgi-11.2 | 
-| **modulefile** : aucun  ||||| 
-| PGI | 10.9 | pgf77, pgf90, pgf95, pgcc, pgCC | /softs/pgi/linux86-64/10.9/bin/ | /usr/local/modeles/pgi-10.9 | 
-| **modulefile** : aucun  ||||| 
-| PGI | 9.0-2 | pgf77, pgf90, pgf95, pgcc, pgCC | /softs/pgi/linux86-64/9.0-2/bin/ | /usr/local/modeles/pgi-9.0-2 | 
-| **modulefile** : aucun  ||||| 
-===== Compilation parallèle (OpenMPI) ===== 
- 
-Toutes les versions d'openmpi n'ont pas été compilé avec les compilateurs PGI. Se référer au tableau pour les versions disponibles. 
- 
-Pour les clusters **debian 7**, il faut utiliser les modulefiles (consulter [[documentation:tools:modules|Environment Modules]]) pour charger l'environnement. 
- 
-Pour les clusters **centos 5.x**, il faut ajouter la ligne suivante dans le script d'appel : 
- 
-<code bash>source /usr/local/modeles/openmpi-No_de_version_openmpi-pgi-No_de_version</code> 
-avec ''No_de_version_openmpi'' et ''No_de_version'' à trouver dans le tableau ci-dessous. 
- 
-Tableau récapitulatif : 
-^ Compilateur ^ version ^ commande(s) ^ chemin d'accès ^ version d'openmpi ^ modèle de configuration ^ 
-| PGI | 11.2 | mpif77, mpif90, mpicc, mpiCC | /softs/openmpi-1.4.3-pgi-11.2/bin/ | 1.4.3 | /usr/local/modeles/openmpi-1.4.3-pgi-11.2 | 
-| **modulefile** : aucun  |||||| 
-| PGI | 10.9 | mpif77, mpif90, mpicc, mpiCC | /softs/openmpi-1.4.3-pgi-10.9/bin/ | 1.4.3 | /usr/local/modeles/openmpi-1.4.3-pgi-10.9 | 
-| **modulefile** : aucun  |||||| 
-| PGI | 9.0-2 | mpif77, mpif90, mpicc, mpiCC | /softs/openmpi-1.2.8-pgi-9.0-2/bin/ | 1.2.8 | /usr/local/modeles/openmpi-1.2.8-pgi-9.0-2 | 
-| **modulefile** : aucun  |||||| 
- 
-==== Tests de performance ==== 
- 
-Des exemples type de codes source pour évaluer les capacité du compilateur PGI sont disponibles dans le répertoire /softs/pgi/common/EXAMPLES (des nouveaux exemples n'ont pas été fournis avec la version PGI 2015) : 
- 
-<code bash>  
-e5-2670comp3:~> ls -l /softs/pgi/common/EXAMPLES 
-dr-xr-xr-x 3 root root 4096 mars    2012 fftpde 
-dr-xr-xr-x 4 root root 4096 mars    2012 linpack 
-dr-xr-xr-x 2 root root 4096 mars    2012 matmul 
-dr-xr-xr-x 8 root root 4096 mars    2012 MPI 
--r--r--r-- 1 root root  659 mars    2012 README 
-</code> 
- 
-Pour tester ces benchmarks, il faut copier ces répertoires sur le compte utilisateur. 
- 
-Exemplifions ici l'utilisation du benchmark matmul (multiplication de deux matrices) : 
- 
-<code bash>  
-e5-2670comp3:~> ls -l /softs/pgi/common/EXAMPLES/matmul 
--r-xr-xr-x 1 root root   54 mars    2012 buildf77 
--r-xr-xr-x 1 root root   51 mars    2012 buildf77mp 
--r-xr-xr-x 1 root root   62 mars    2012 buildf90 
--r-xr-xr-x 1 root root   59 mars    2012 buildf90mp 
--r-xr-xr-x 1 root root   64 mars    2012 buildhpf 
--r--r--r-- 1 root root 2556 mars    2012 matmul.F 
--r--r--r-- 1 root root 6464 mars    2012 README 
-</code> 
- 
-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/OpenMP). 
- 
-<code bash>  
-e5-2670comp3:~> cat /softs/pgi/common/EXAMPLES/matmul/buildf77 
-pgf77 -fast -Mconcur -Minfo matmul.F -o matmul_f77 -V 
-e5-2670comp3:~> cat /softs/pgi/common/EXAMPLES/matmul/buildf90 
-pgf90 -fast -Mconcur -Minfo -DPGF90 matmul.F -o matmul_f90 -V 
-e5-2670comp3:~> cat /softs/pgi/common/EXAMPLES/matmul/buildf90mp 
-pgf90 -fast -mp -Minfo -DPGF90 matmul.F -o matmul_f90mp -V 
-e5-2670comp3:~> cat /softs/pgi/common/EXAMPLES/matmul/buildf77mp 
-pgf77 -fast -mp -Minfo matmul.F -o matmul_f77mp -V 
-e5-2670comp3:~> cat /softs/pgi/common/EXAMPLES/matmul/buildhpf 
-pghpf -fast -Mautopar -Minfo -DPGF90  matmul.F -o matmul_hpf -V 
-</code> 
- 
-Le lancement de ces scripts génère les exécutables correspondants : matmul_f77, matmul_f77mp, matmul_f90, matmul_f90mp, matmul_hpf. 
- 
-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'auto-parallelisation (matmul_f77, matmul_f90) 
-<code bash>  
-setenv NCPUS 2 
-</code> 
- 
-- pour la parallelisation avec OpenMP (matmul_f77mp, matmul_f90mp) 
-<code bash>  
-setenv OMP_NUM_THREADS 2 
-</code> 
- 
-- pour HPF : rajouter -pghpf -np 2 au moment de l'exécution. 
- 
-Voici le résultat de ces exécutions pour 1 et 2 processeurs : 
- 
-<code bash>  
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_f77 
-   2.0000001E-03  0.0000000E+00  9.9999998E-03  9.9999998E-03 
- M =         200, N =         200, P =         200 
- MFLOPS =    7980.000     
- c(1,1) =    200.0000000000000      
-e5-2670comp3:~/Tests/tests_PGI/matmul> setenv NCPUS 2 
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_f77 
-   4.0000002E-03  0.0000000E+00  2.0000000E-02  2.0000000E-02 
- M =         200, N =         200, P =         200 
- MFLOPS =    3990.000     
- c(1,1) =    200.0000000000000      
- 
-e5-2670comp3:~/Tests/tests_PGI/matmul> setenv NCPUS 1 
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_f90 
-   2.0000001E-03    0.000000       9.9999998E-03   9.9999998E-03 
- M =          200 , N =          200 , P =          200 
- MFLOPS =     7980.000     
- c(1,1) =     200.0000000000000      
-e5-2670comp3:~/Tests/tests_PGI/matmul> setenv NCPUS 2 
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_f90 
-   4.0000002E-03    0.000000       2.0000000E-02   2.0000000E-02 
- M =          200 , N =          200 , P =          200 
- MFLOPS =     3990.000     
- c(1,1) =     200.0000000000000      
- 
-e5-2670comp3:~/Tests/tests_PGI/matmul> setenv NCPUS 1 
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_f77mp  
-   2.0000001E-03  0.0000000E+00  9.9999998E-03  9.9999998E-03 
- M =         200, N =         200, P =         200 
- MFLOPS =    7980.000     
- c(1,1) =    200.0000000000000      
-e5-2670comp3:~/Tests/tests_PGI/matmul> setenv OMP_NUM_THREADS 2 
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_f77mp 
-   4.0000002E-03  0.0000000E+00  2.0000000E-02  2.0000000E-02 
- M =         200, N =         200, P =         200 
- MFLOPS =    3990.000     
- c(1,1) =    200.0000000000000      
- 
-e5-2670comp3:~/Tests/tests_PGI/matmul> setenv OMP_NUM_THREADS 1 
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_f90mp 
-   2.0000001E-03    0.000000       9.9999998E-03   9.9999998E-03 
- M =          200 , N =          200 , P =          200 
- MFLOPS =     7980.000     
- c(1,1) =     200.0000000000000      
-e5-2670comp3:~/Tests/tests_PGI/matmul> setenv OMP_NUM_THREADS 2 
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_f90mp 
-   2.0000001E-03    0.000000       9.9999998E-03   9.9999998E-03 
- M =          200 , N =          200 , P =          200 
- MFLOPS =     7980.000     
- c(1,1) =     200.0000000000000      
- 
-e5-2670comp3:~/Tests/tests_PGI/matmul> setenv NCPUS 1 
-e5-2670comp3:~/Tests/tests_PGI/matmul> setenv OMP_NUM_THREADS 1 
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_hpf 
-   2.0000001E-03    0.000000       9.9999998E-03   9.9999998E-03 
- M =          200 , N =          200 , P =          200 
- MFLOPS =     7980.000     
- c(1,1) =     200.0000000000000      
-e5-2670comp3:~/Tests/tests_PGI/matmul> ./matmul_hpf -pghpf -np 2 
-   4.0000002E-03    0.000000       2.0000000E-02   2.0000000E-02 
- M =          200 , N =          200 , P =          200 
- MFLOPS =     3990.000     
- c(1,1) =     200.0000000000000        
-</code>