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
Dernière révisionLes deux révisions suivantes
documentation:tools:testspgi [2015/04/29 04:21] – [Environnement de travail] cicalugadocumentation: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 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 /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>