* [[developpement:activites:integration|Integration]]
====== Compilation de XHPL sous Debian ======
Pour utiliser xHPL, mieux vaut directement aller sur le projet de la forge du CBP dédiée : https://forge.cbp.ens-lyon.fr/redmine/projects/hpl4all
===== Introduction =====
Le logiciel [[http://www.netlib.org/benchmark/hpl/|hpl]] est une implémentation du fameux Linpack utilisé pour estimer la puissance des machines, notamment pour le [[www.top500.org|classement Top500]] des machines les plus puissantes de la planète.
La dernière version, la [[http://www.netlib.org/benchmark/hpl/hpl-2.0.tar.gz|2.0]] date du 10 septembre 2008 : wget http://www.netlib.org/benchmark/hpl/hpl-2.0.tar.gz
===== Installation des prérequis =====
Comme le veut la tradition, le système "souche" sera une Linux Debian, version Lenny (5.0.3).
Les librairies suivantes seront utilisées :
* ensemble Atlas pour les librairies d'algèbre linéaire
* ensemble OpenMPI pour la distribution des calculs sur les noeuds
sudo apt-get install gcc gfortran
sudo apt-get install openmpi-bin openmpi-common libopenmpi-dev
# Sur une architecture i386
sudo apt-get install libatlas-test libatlas3gf-base libatlas-headers libatlas-base-dev libatlas-sse2-dev libatlas3gf-sse2
# Sur une architecture amd64
sudo apt-get install libatlas-test libatlas3gf-base libatlas-headers libatlas-base-dev
===== Compilation =====
* Préparation de l'archive : (plutôt à la racine de l'utilisateur)
cd $HOME
wget http://www.netlib.org/benchmark/hpl/hpl-2.0.tar.gz
tar xzf hpl-2.0.tar.gz
ln -s hpl-2.0 hpl
cd hpl
* Compilation :
* la phase de compilation est assez hardue : elle consiste à créer son propre //MakeFile//, sous la forme d'un Make.MonMakefileAMoi
* étant donné que, en informatique, il faut savoir être fainéant, avant, vous pouviez récupérer les //Makefile// d'une [[http://pagesperso-orange.fr/klhpc/tutoriels/hpl/|parge perso de Orange]] maintenant disparue. Vous pouvez cependant en récupérer les sauvegardes :
wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/HPL/Make.Debian_BLAS_gm
wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/HPL/Make.Debian_CBLAS_gm
wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/HPL/Make.Debian_FBLAS_gm
* importer ces documents et les placer à la racine de HPL : mv Make.Debian_* $HOME/hpl
* compiler les différents //Makefile// :
make arch=Debian_BLAS_gm
make arch=Debian_CBLAS_gm
make arch=Debian_FBLAS_gm
===== Exécution des benchs =====
Les exécutables ainsi compilés se trouvent dans $HOME/hpl/bin
Pour les exécuter, trois opérations :
- se déplacer dans l'un des répertoires, au choix :
cd $HOME/hpl/bin/Debian_BLAS_gm
cd $HOME/hpl/bin/Debian_CBLAS_gm
cd $HOME/hpl/bin/Debian_FBLAS_gm
- paramétrer le fichier de configuration HPL.dat :
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
file device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
2560 Ns
1 # of NBs
256 NBs
0 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
1 Ps
2 Qs
-16.0 threshold
3 # of panel fact
0 1 2 PFACTs (0=left, 1=Crout, 2=Right)
2 # of recursive stopping criterium
2 4 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
3 # of recursive panel fact.
0 1 2 RFACTs (0=left, 1=Crout, 2=Right)
1 # of broadcast
0 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
0 DEPTHs (>=0)
2 SWAP (0=bin-exch,1=long,2=mix)
64 swapping threshold
0 L1 in (0=transposed,1=no-transposed) form
0 U in (0=transposed,1=no-transposed) form
1 Equilibration (0=no,1=yes)
16 memory alignment in double (> 0)
- Lancer le bench :orterun -np 2 ./xhpl
* en sortie, même si les résultats sont consignés dans un fichier HPL.out, on obtient :
================================================================================
HPLinpack 2.0 -- High-Performance Linpack benchmark -- September 10, 2008
Written by A. Petitet and R. Clint Whaley, Innovative Computing Laboratory, UTK
Modified by Piotr Luszczek, Innovative Computing Laboratory, UTK
Modified by Julien Langou, University of Colorado Denver
================================================================================
An explanation of the input/output parameters follows:
T/V : Wall time / encoded variant.
N : The order of the coefficient matrix A.
NB : The partitioning blocking factor.
P : The number of process rows.
Q : The number of process columns.
Time : Time in seconds to solve the linear system.
Gflops : Rate of execution for solving the linear system.
The following parameter values will be used:
N : 2560
NB : 256
PMAP : Row-major process mapping
P : 1
Q : 2
PFACT : Left Crout Right
NBMIN : 2 4
NDIV : 2
RFACT : Left Crout Right
BCAST : 1ring
DEPTH : 0
SWAP : Mix (threshold = 64)
L1 : transposed form
U : transposed form
EQUIL : yes
ALIGN : 16 double precision words
================================================================================
T/V N NB P Q Time Gflops
--------------------------------------------------------------------------------
WR00L2L2 2560 256 1 2 4.29 2.612e+00
WR00L2L4 2560 256 1 2 4.23 2.648e+00
WR00L2C2 2560 256 1 2 4.26 2.628e+00
WR00L2C4 2560 256 1 2 4.22 2.652e+00
WR00L2R2 2560 256 1 2 4.24 2.638e+00
WR00L2R4 2560 256 1 2 4.23 2.643e+00
WR00C2L2 2560 256 1 2 4.26 2.630e+00
WR00C2L4 2560 256 1 2 4.24 2.642e+00
WR00C2C2 2560 256 1 2 4.25 2.637e+00
WR00C2C4 2560 256 1 2 4.24 2.639e+00
WR00C2R2 2560 256 1 2 4.26 2.631e+00
WR00C2R4 2560 256 1 2 4.22 2.655e+00
WR00R2L2 2560 256 1 2 4.26 2.629e+00
WR00R2L4 2560 256 1 2 4.21 2.656e+00
WR00R2C2 2560 256 1 2 4.26 2.628e+00
WR00R2C4 2560 256 1 2 4.21 2.660e+00
WR00R2R2 2560 256 1 2 4.23 2.646e+00
WR00R2R4 2560 256 1 2 4.23 2.645e+00
================================================================================
Finished 18 tests with the following results:
18 tests completed without checking,
0 tests skipped because of illegal input values.
--------------------------------------------------------------------------------
End of Tests.
================================================================================
* on remarque que ce vieux Pentium 4 HT a une puissance de 2.6 GFps
* les résultats sont comparables en BLAS, CBLAS et FBLAS
===== Références =====
* http://wiki.generation-debian.org/doku.php/bench
* http://pagesperso-orange.fr/klhpc/tutoriels/hpl/