* [[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/