HPL (High-Performance Linpack)

Dernière modification : 20 May 2023

Avertissement

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 :

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 :

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.

Haut de page