GNU/Linux >> Tutoriels Linux >  >> Linux

HPL (High Performance Linpack) :Benchmark des Raspberry PI

L'analyse comparative est le processus d'exécution de certains des programmes standard pour évaluer la vitesse atteinte par un système. Il existe un certain nombre de programmes de benchmarking standard et dans ce didacticiel, nous comparons le système Linux à l'aide d'un programme bien connu appelé HPL, également connu sous le nom de High Performance Linpack.

Introduction

Dans ce didacticiel, nous expliquons comment procéder à l'analyse comparative d'un système à processeur unique, le Raspberry Pi. Nous allons d'abord comparer un seul nœud, puis continuer à comparer plusieurs nœuds, chaque nœud représentant un Raspberry Pi. Il y a quelques choses à noter ici. Premièrement, l'analyse comparative d'un seul nœud ou de plusieurs nœuds a quelques dépendances à satisfaire qui seront couvertes dans ce tutoriel. MAIS, sur plusieurs nœuds, il y a encore plus de dépendances comme l'implémentation MPI (comme MPICH ou OpenMPI) doit être construite et exécutée pour que le HPL fonctionne. Donc, pour comparer plusieurs nœuds, je suppose que MPICH est installé et en cours d'exécution sur vos nœuds.

Qu'est-ce que HPL ?

HPL est un progiciel qui résout un système linéaire dense (aléatoire) en arithmétique double précision (64 bits) sur des ordinateurs à mémoire distribuée. Le package HPL fournit un programme de test et de chronométrage pour quantifier la précision de la solution obtenue ainsi que le temps qu'il a fallu pour la calculer. Les meilleures performances réalisables par ce logiciel sur votre système dépendent d'une grande variété de facteurs. Cette implémentation est évolutive dans le sens où leur efficacité parallèle est maintenue constante par rapport à l'utilisation de la mémoire par processeur. Ainsi, nous pouvons l'utiliser pour comparer un seul processeur ou une série de processeurs distribués en parallèle. Commençons donc l'installation de HPL.

1 Installation des dépendances

HPL a quelques dépendances logicielles qui doivent être satisfaites avant de pouvoir être installées. Ce sont :

  • gfortran - compilateur de programme fortran
  • MPICH2 :une implémentation de MPI
  • mpich2-dev - outils de développement
  • BLAS - Sous-programmes d'algèbre linéaire de base

Ici, nous supposons que MPICH2 est installé. Pour installer d'autres dépendances et packages, utilisez la commande suivante :

sudo apt-get install libatlas-base-dev libmpich2-dev gfortran

Seule cette étape est à répéter dans chacun des nœuds (Pis) présents dans le cluster.

2 Téléchargez HPL et configurez-le

Téléchargez le package HPL à partir d'ici. La prochaine chose à faire est d'extraire le fichier tar et de créer un makefile basé sur le modèle donné. Ouvrez le terminal et modifiez le répertoire dans lequel le fichier tar HPL téléchargé est stocké. Exécutez l'ensemble de commandes suivant l'une après l'autre.

tar xf hpl-2.1.tar.gz
cd hpl-2.1/setup
sh make_generic
cd ..
cp setup/Make.UNKNOWN Make.rpi

La dernière commande copie le contenu de Make.UNKNOWN dans Make.rpi . Nous le faisons parce que le fichier make contient tous les détails de configuration du système (le raspberry pi) ainsi que les détails de diverses bibliothèques telles que mpich2, les packages atlas/blas, le répertoire personnel, etc. À l'étape suivante, nous apportons des modifications au fichier Make.rpi.

3 Ajuster le fichier Make.rpi

Ceci est une étape importante. Les modifications présentées ci-dessous varient en fonction de votre système. Ici, je le montre par rapport à mon système. Veuillez noter que les modifications suivantes ont des paramètres affichés qui sont répartis dans le fichier Make.rpi. Je vous suggère donc de trouver chaque paramètre et de remplacer ou d'ajouter les modifications, puis de passer au paramètre suivant.

Ouvrez le fichier Make.rpi à l'aide d'un éditeur de texte en utilisant la commande :

nano Make.rpi

Apportez les modifications suivantes au fichier.

ARCH =rpiTOPdir =$(HOME)/hpl-2.1MPdir =/usr/local/mpich2MPinc =-I $(MPdir)/includeMPlib =$(MPdir)/lib/libmpich.aLAdir =/usr/lib/atlas -base/LAlib =$(LAdir)/libf77blas.a $(LAdir)/libatlas.a

4 Compilation du HPL

Une fois le fichier Make prêt, nous pouvons commencer la compilation du HPL. Le fichier ".xhpl" sera présent dans le dossier "bin/rpi" du dossier HPL. Exécutez la commande suivante :

makeh arch=rpi

5 Création du fichier d'entrée HPL

Voici un exemple du fichier "HPL.dat". Il s'agit du fichier d'entrée pour HPL lors de son exécution. Les valeurs fournies dans ce fichier sont utilisées pour générer et calculer le problème. Vous pouvez utiliser ce fichier directement pour exécuter des tests pour un seul nœud. Créez un fichier dans le dossier "bin/rpi" et nommez-le "HPL.dat". copiez le contenu ci-dessous dans ce fichier.

HPLinpack benchmark input fileInnovative Computing Laboratory, University of TennesseeHPL.out nom du fichier de sortie (le cas échéant)6 device out (6=stdout,7=stderr,file)1 # de problèmes tailles (N)5040 Ns1 # de NBs128 NBs0 Cartographie des processus PMAP (0=Row-,1=Column-major)1 # de grilles de processus (P x Q)1 Ps1 Qs16.0 threshold1 # of panel fact2 PFACTs (0=left, 1=Crout, 2=Right)1 # de critères d'arrêt récursifs4 NBMINs (>=1)1 # de panneaux en récursion2 NDIVs1 # de panneaux récursifs fact.1 RFACTs (0=left, 1=Crout, 2=Right)1 # de broadcast1 BCASTs (0=1rg,1 =1rM,2=2rg,3=2rM,4=Lng,5=LnM)1 # de profondeur d'anticipation1 DEPTHs (>=0)2 SWAP (0=bin-exch,1=long,2=mix)64 seuil d'échange0 L1 en (0=transposé,1=non-transposé) forme0 U en (0=transposé d,1=non-transposé) forme1 Équilibration (0=non,1=oui)8 alignement mémoire en double (> 0)

Le contenu de ce fichier doit être modifié par une méthode d'essais et d'erreurs, jusqu'à ce que l'on obtienne une sortie satisfaisante. Pour connaître chacun des paramètres et comment le modifier, reportez-vous à un article ici. Pour passer au point principal, commencez à lire à partir de la page no. 6 dans ce document.

6 Exécuter HPL sur un seul nœud

Une fois le fichier HPL.dat prêt, nous pouvons exécuter le HPL. Le fichier HPL.dat ci-dessus est destiné à un seul nœud ou processeur. Le produit des valeurs P*Q dans le fichier ci-dessus donne le nombre de processeurs pour lesquels HPL est testé. Ainsi, à partir du fichier ci-dessus P=1 et Q=1 , 1*1=1, c'est donc pour un seul processeur. Maintenant, pour l'exécuter, utilisez les commandes :

cd bin/rpi
./xhpl

Le résultat ressemble à ce qui est illustré ci-dessous :

==============================================================================HPLinpack 2.1 -- Référence Linpack haute performance -- 26 octobre 2012Écrit par A Petitet et R. Clint Whaley, Innovative Computing Laboratory, UTKModifié par Piotr Luszczek, Innovative Computing Laboratory, UTKModifié par Julien Langou, Université du Colorado Denver===============================================================================Une explication des paramètres d'entrée/sortie suit :nombre de lignes de processus.Q :Le nombre de colonnes de processus.Time :Temps en secondes pour résoudre le système linéaire.Gflops :Taux d'exécution pour résoudre le système linéaire.Les valeurs de paramètres suivantes seront utilisées :N :5040 NB :128 PMAP :Cartographie des processus ligne-majeur P :1 Q :1 PFACT :Droit NBMIN :4 NDIV :2 RFACT :Crout BCAST :1ringM DEPTH :1 SWAP :Mix (seuil =64)L1 :forme transposéeU :forme transposéeEQUIL :yesALIGN :8 mots double précision------------------- -------------------------------------------------- ------------ La matrice A est générée aléatoirement pour chaque test.- Le contrôle résiduel mis à l'échelle suivant sera calculé :||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )- La précision relative de la machine (eps) est considérée comme étant de 1,110223e-16- Les tests informatiques réussissent si les résidus mis à l'échelle sont inférieurs à 16,0

De plus, nous devons nous concentrer sur le résultat final. La sortie finale qui arrive sur le terminal ressemblera à celle illustrée ci-dessous. La dernière valeur donne la vitesse et les valeurs précédentes montrent les différents paramètres fournis. Dans le contenu ci-dessous, la vitesse est indiquée en Gflops et sa valeur est d'environ 1,21e-01 Gflops, ce qui, une fois converti, donne 121 Mega FLOPS (MFLOPS).

==============================================================================T/V N NB P Q Temps Gflops---------- -------------------------------------------------- --------------------WR11C2R4 21400 128 3 11 537.10 1.210e-01HPL_pdgesv() start time Lun 23 juin 17:29:42 2014HPL_pdgesv() end time Lun 23 juin 17:55:19 2014----------------------------------------------------- -----------------------------------------||Ax-b||_oo/(eps*(| |A||_oo*||x||_oo+||b||_oo)*N)=0,0020152 ...... RÉUSSI===============================================================================

Veuillez noter qu'en fonction de votre Raspberry Pi, la vitesse et le temps pris peuvent être très différents. Veuillez donc ne pas utiliser ces résultats comme comparaison avec votre nœud ou votre cluster.

7 Exécuter HPL sur plusieurs nœuds

Lorsque nous voulons exécuter HPL pour plusieurs nœuds, nous devrons modifier le fichier HPL.dat. Ici, supposons que nous avons 32 nœuds. Donc le produit de P*Q devrait être 32. J'ai choisi P=4 , Q=8 donc 4*8=32. Donc, en dehors de ce changement, nous devrons changer la valeur de N, à partir d'essais et d'erreurs, nous avons obtenu la vitesse maximale pour N =17400. Le contenu final du fichier est présenté ci-dessous. apportez ces modifications en conséquence dans votre fichier "HPL.dat".

HPLinpack benchmark input fileInnovative Computing Laboratory, University of TennesseeHPL.out nom du fichier de sortie (le cas échéant)6 device out (6=stdout,7=stderr,file)1 # de tailles de problèmes (N)17400 Ns1 # de NBs128 NBs0 Cartographie des processus PMAP (0=Row-,1=Column-major)1 # de grilles de processus (P x Q)4 Ps8 Qs16.0 threshold1 # of panel fact2 PFACTs (0=left, 1=Crout, 2=Right)1 # de critères d'arrêt récursifs4 NBMINs (>=1)1 # de panneaux en récursion2 NDIVs1 # de panneaux récursifs fact.1 RFACTs (0=left, 1=Crout, 2=Right)1 # de broadcast1 BCASTs (0=1rg,1 =1rM,2=2rg,3=2rM,4=Lng,5=LnM)1 # de profondeur d'anticipation1 DEPTHs (>=0)2 SWAP (0=bin-exch,1=long,2=mix)64 seuil d'échange0 L1 en (0=transposé,1=non-transposé) forme0 U en (0=transpos ed,1=non-transposé) form1 Equilibration (0=non,1=oui)8 alignement mémoire en double (> 0)

Une fois cela fait, nous devrons exécuter à nouveau le HPL. Utilisez la commande suivante. N'oubliez pas de modifier le chemin dans la commande ci-dessous pour représenter le chemin du fichier machine dans votre système.

cd bin/rpi
mpiexec -f ~/mpi_testing/machinefile -n 32 ./xhpl

Le résultat sera similaire à celui indiqué ci-dessus pour un nœud, mais il aura certainement une vitesse plus élevée.

Ce type de modifications peut être effectué en fonction du nombre de nœuds ou de processeurs dans le système et les résultats de référence peuvent être découverts. Et comme je l'ai mentionné plus tôt, pour en savoir plus sur la façon de définir les valeurs dans le fichier HPL.dat, rendez-vous sur le document ici et lisez-le.


Linux
  1. Réduire les E/S de disque pour augmenter les performances

  2. Ordre des redirections ?

  3. Linux - Détermination du fichier spécifique responsable des E/S élevées ?

  4. Inconvénient lors de l'utilisation d'un chroot dans le calcul haute performance ?

  5. JumpFm - Un gestionnaire de fichiers basé sur Electron axé sur les performances

Éditeur VIM

Cluster de calcul haute performance dans un environnement cloud

Impossible de définir un mot de passe GRUB sur un système Raspberry Pi 3

Mono sur Raspberry Pi

Amélioration des performances en utilisant un serveur de fichiers statique supplémentaire

Quelles sont les implications en termes de performances pour des millions de fichiers dans un système de fichiers moderne ?