HPL (High-Performance Linpack)
Dernière modification : 20 May 2023Avertissement
Ce programme peut utiliser au maximum les capacités d'un processeur. Il est fortement recommandé de surveiller votre système pendant son utilisation (avec lm-sensors par exemple). Vous utilisez ce programme à vos risques et périls.
Présentation
HPL est utilisé pour établir un classement des supercalculateurs disponible sur le site www.top500.org. Les résultats sont exprimés en Gflops.
Il est très performant pour faire chauffer un procésseur. Parfait pour vérifer les températures atteintes après un overclock et s'assurer que le refroidissement du cpu est approprié.
Site officiel :
www.netlib.org/benchmark/hpl
Copyright et License
Prérequis
Installer les paquets nécessaires :
HPL a besoin d'une bibliothèque de fonctions BLAS (Basic Linear Algebra Subroutines) pour être compilé. Plusieurs sont disponibles dans les dépôts Debian (OpenBLAS, ATLAS). Nous utiliserons OpenBLAS.
# apt install gcc gfortran make openmpi-bin libopenmpi-dev
La bibliothèque BLAS
Les performances dépendent principalement de la bibliothèque BLAS utilisée. OpenBLAS est une solution libre qui est relativement performante.
# apt install libopenblas-base
Pour les processeurs AMD, la bibliothèque BLIS également opensource est plus performante.
$ cd ~
$ wget https://github.com/amd/blis/archive/refs/tags/4.0.tar.gz
$ tar -xzvf 4.0.tar.gz
$ cd blis-4.0
$ ./configure --prefix=/usr/local --enable-cblas --enable-threading=openmp auto
$ make -j [num_threads]
# make install
OpenMPI rerquiert un client SSH (optionnel si on se passe d'OpenMPI pour l'éxécution).
# apt install openssh-client
Télécharger et décompresser les sources :
$ cd ~ && wget http://www.netlib.org/benchmark/hpl/hpl-2.3.tar.gz
$ tar -xvzf hpl-2.3.tar.gz
Si vous décompressez dans un autre répertoire que ~/hpl-2.3 il faura éditer le fichier Make utilisé.
Compilation
Le fichier Make
Ceux fournis dans le répertoire setup ne sont pas directement utilisables. Vous pouvez éditer le votre en utilisant comme base le fichier setup/Make.UNKNOW.in ou bien utiliser ceux-ci :
Placer le fichier Make dans le répertoire hpl-2.3 puis :
// Ne pas utiliser l'option -j, la compilation échoue.
$ make arch=Debian_OpenBLAS
Si la compilation s'est bien déroulée deux fichiers ont été créé dans le répertoire bin/Debian_OpenBLAS.
$ ls bin/Debian_OpenBLAS
HPL.dat xhpl
Lorsqu'une compilation échoue il est nécessaire de nettoyer avant de recommencer :
$ make clean_arch_all arch=Debian_OpenBLAS
Exécution
Le fichier HPL.dat
Il sert à configurer les tests, la documentation officielle est disponible ici. Cette page permet d'en générer un automatiquement en fournissant quelques renseignements.
Pour démarrer rapidement, remplacer celui généré par défaut dans le répertoire bin/Debian_OpenBLAS par celui-ci HPL.dat.
Pour parvenir aux meilleures performances il faudra adapter la valeur de Ns (ligne 6) en fonction de la mémoire vive disponible sur votre système :
- 1024 Mo : ≈ 10000 Ns
- 2048 Mo : ≈ 14000 Ns
- 4096 Mo : ≈ 20000 Ns
- 8192 Mo : ≈ 29000 Ns
Calculer approximativement la valeur maximale de Ns :
√ ( 0.8 x ram_en_octets / 8 )
Exemple pour 1024 Mo :
1024 Mo = 1073741824 octets (1024 x 1024 x 1024)
√ ( 0.8 x 1073741824 / 8 ) ≈ 10362
Lancer les tests :
$ cd bin/Debian_OpenBLAS
$ ./xhpl
Les résultats sont exprimés sous la forme d'une puissance de 10 :
1.000e-01 = 1 x 10-1 = 0.1
1.000e+00 = 1 x 10 0 = 1
1.000e+01 = 1 x 10 1 = 10
etc...
Performances
La performance maximale théorique dépend de trois facteurs :
- la fréquence du processeur
- le nombre de coeur(s) du processeur
- le nombre d'opérations sur les flottants par cycle d'horloge
Processeur quatre coeurs/threads cadencé à 3.0GHz et supportant les instructions
SSE2 ou supérieures :
3 (GHz) x 4 (core) x 4 (flops) = 46 Gflops
Quelques résultats sur des machines un peu vieillotes d'un autre temps sont donnés
ici. Sur mon plus tout
jeune mais fidèle Q9650 @ 3.8 GHz (ram 8GB) j'obtiens 53 Gflops.