Estimer les FLOPS sous Linux?

13

Je recherche un programme rapide et facile pour estimer les FLOPS sur mon système Linux. J'ai trouvé HPL , mais le faire compiler s'avère irritant. Tout ce dont j'ai besoin est une estimation approximative des FLOPS, sans avoir à passer une journée à rechercher des packages de référence et à installer des logiciels dépendants. Existe-t-il un tel programme? Serait-il suffisant d'écrire un programme C qui multiplie deux flottants dans une boucle?

ours moléculaire
la source

Réponses:

5

La question est: qu'entendez-vous par flops? Si vous ne vous souciez que du nombre d'opérations en virgule flottante les plus simples par horloge, c'est probablement 3 fois votre vitesse d'horloge, mais cela n'a presque pas de sens comme les bogomips. Certaines opérations en virgule flottante prennent beaucoup de temps (diviser, pour commencer), l'ajout et la multiplication sont généralement rapides (une par unité fp par horloge). Le problème suivant concerne les performances de la mémoire.Il y a une raison pour laquelle le dernier CRAY classique avait 31 banques de mémoire.En fin de compte, les performances du processeur sont limitées par la vitesse à laquelle vous pouvez lire et écrire en mémoire, alors à quel niveau de mise en cache votre problème s'intègre-t-il? Linpack était une vraie référence une fois, maintenant il tient dans le cache (L2 sinon L1) et est plus une référence théorique pure CPU. Et bien sûr, vos unités SSE (etc.) peuvent également ajouter des performances en virgule flottante.

Quelle distribution exécutez-vous?

Cela ressemblait à un bon pointeur: http://linuxtoolkit.blogspot.com/2009/04/intel-optimized-linpack-benchmark-for.html

http://onemansjourneyintolinux.blogspot.com/2008/12/show-us-yer-flops.html

http://www.phoronix-test-suite.com/ pourrait être un moyen plus facile d'installer un banc d'essai de flops.

Je me demande toujours pourquoi vous vous en souciez, pourquoi l'utilisez-vous? Si vous voulez juste un nombre sans signification, les bogomips de vos systèmes sont toujours là dans dmesg.

Ronald Pottol
la source
1
Phoronix semble être exactement ce que je cherchais - merci! La seule raison pour laquelle je voulais cela était parce que je remplissais une enquête qui demandait combien de téraflops de puissance de calcul j'avais. L'enquête n'était pas très importante, donc je ne m'inquiétais pas de l'exactitude de la réponse. Pourtant, ce serait plutôt bien de pouvoir dire: "Notre cluster peut faire X téraflops." Bien que, comme vous le faites remarquer, ce nombre n'ait pas nécessairement beaucoup de sens dans le monde réel.
moléculairebear
7

apparemment, il y a un package de référence et une commande "sysbench":

sudo apt-get install sysbench(ou brew install sysbenchOS X)

lancez-le comme ceci:

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run

sortie pour les comparaisons:

 total time:                          15.3047s

réf: http://www.midwesternmac.com/blogs/jeff-geerling/2013-vps-benchmarks-linode

rogerdpack
la source
3
Comment cela donne-t-il les FLOPS?
Martin Thoma
On dirait que c'est plus un "benchmark cpu" générique voir aussi bnikolic.co.uk/blog/hpc-howto-measure-flops.html
rogerdpack
3

Pour les estimations approximatives:

Linpack

  1. Téléchargez-le ( lien )
  2. Extraire
  3. cd benchmarks_2017/linux/mkl/benchmarks/linpack
  4. ./runme_xeon64
  5. Attendez un bon moment (plus d'une heure)

Sur un Thinkpad T460p ( CPU Intel i7-6700HQ ), cela donne:

This is a SAMPLE run script for SMP LINPACK. Change it to reflect
the correct number of CPUs/threads, problem input files, etc..
./runme_xeon64: 33: [: -gt: unexpected operator
Mi 21. Dez 11:50:29 CET 2016
Intel(R) Optimized LINPACK Benchmark data

Current date/time: Wed Dec 21 11:50:29 2016

CPU frequency:    3.491 GHz
Number of CPUs: 1
Number of cores: 4
Number of threads: 4

Parameters are set to:

Number of tests: 15
Number of equations to solve (problem size) : 1000  2000  5000  10000 15000 18000 20000 22000 25000 26000 27000 30000 35000 40000 45000
Leading dimension of array                  : 1000  2000  5008  10000 15000 18008 20016 22008 25000 26000 27000 30000 35000 40000 45000
Number of trials to run                     : 4     2     2     2     2     2     2     2     2     2     1     1     1     1     1    
Data alignment value (in Kbytes)            : 4     4     4     4     4     4     4     4     4     4     4     1     1     1     1    

Maximum memory requested that can be used=9800701024, at the size=35000

=================== Timing linear equation system solver ===================

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
1000   1000   4      0.014      46.5838  1.165068e-12 3.973181e-02   pass
1000   1000   4      0.010      64.7319  1.165068e-12 3.973181e-02   pass
1000   1000   4      0.009      77.3583  1.165068e-12 3.973181e-02   pass
1000   1000   4      0.010      67.0096  1.165068e-12 3.973181e-02   pass
2000   2000   4      0.064      83.6177  5.001027e-12 4.350281e-02   pass
2000   2000   4      0.063      84.5568  5.001027e-12 4.350281e-02   pass
5000   5008   4      0.709      117.6800 2.474679e-11 3.450740e-02   pass
5000   5008   4      0.699      119.2350 2.474679e-11 3.450740e-02   pass
10000  10000  4      4.895      136.2439 9.069137e-11 3.197870e-02   pass
10000  10000  4      4.904      135.9888 9.069137e-11 3.197870e-02   pass
15000  15000  4      17.260     130.3870 2.052533e-10 3.232773e-02   pass
15000  15000  4      18.159     123.9303 2.052533e-10 3.232773e-02   pass
18000  18008  4      31.091     125.0738 2.611497e-10 2.859910e-02   pass
18000  18008  4      31.869     122.0215 2.611497e-10 2.859910e-02   pass
20000  20016  4      44.877     118.8622 3.442628e-10 3.047480e-02   pass
20000  20016  4      44.646     119.4762 3.442628e-10 3.047480e-02   pass
22000  22008  4      57.918     122.5811 4.714135e-10 3.452918e-02   pass
22000  22008  4      57.171     124.1816 4.714135e-10 3.452918e-02   pass
25000  25000  4      86.259     120.7747 5.797896e-10 3.297056e-02   pass
25000  25000  4      83.721     124.4356 5.797896e-10 3.297056e-02   pass
26000  26000  4      97.420     120.2906 5.615238e-10 2.952660e-02   pass
26000  26000  4      96.061     121.9924 5.615238e-10 2.952660e-02   pass
27000  27000  4      109.479    119.8722 5.956148e-10 2.904520e-02   pass
30000  30000  1      315.697    57.0225  8.015488e-10 3.159714e-02   pass
35000  35000  1      2421.281   11.8061  1.161127e-09 3.370575e-02   pass

Performance Summary (GFlops)

Size   LDA    Align.  Average  Maximal
1000   1000   4       63.9209  77.3583 
2000   2000   4       84.0872  84.5568 
5000   5008   4       118.4575 119.2350
10000  10000  4       136.1164 136.2439
15000  15000  4       127.1586 130.3870
18000  18008  4       123.5477 125.0738
20000  20016  4       119.1692 119.4762
22000  22008  4       123.3813 124.1816
25000  25000  4       122.6052 124.4356
26000  26000  4       121.1415 121.9924
27000  27000  4       119.8722 119.8722
30000  30000  1       57.0225  57.0225 
35000  35000  1       11.8061  11.8061 

Residual checks PASSED

End of tests

Done: Mi 21. Dez 12:58:23 CET 2016
Martin Thoma
la source
1

Un repère qui a été traditionnellement utilisé pour mesurer les FLOPS est Linpack. Un autre point de repère FLOPS commun est Whetstone.

More reading: Wikipedia "FLOPS" entrée , entrée Whetstone , entrée Linpack

kolypto
la source
2
J'apprécie votre réponse, mais mon objectif est d'obtenir une estimation rapide et sans faille des flops. Whetstone et Linpack ont ​​le même problème que HPL - je commence à lire à ce sujet, puis je me perds site après site qui ont tous 20 ans. Lorsque je parviens à trouver le code source, je n'arrive pas à le compiler sans installer un tas de bibliothèques dépendantes - même alors je rencontre des erreurs. Je pourrais faire fonctionner tout ça, mais ce n'est pas assez important pour passer du temps. Espérons qu'il existe des logiciels relativement modernes qui fonctionnent pour les flops de ballparking.
moléculairebear
1
Estimation? Ensuite, il s'agit d'environ 4 * Hz: pour le processeur 1 GHz, il s'agit de 4GFLOPS :))
kolypto
1

Comme vous le mentionnez, nous avons utilisé la suite HPCC . Il faut un peu d'effort pour configurer et régler, mais dans notre cas, le point ne se vantait pas en soi, il faisait partie des critères d'acceptation pour le cluster; une analyse comparative des performances est à mon humble avis vitale pour garantir que le matériel fonctionne comme annoncé, tout est correctement câblé, etc.

Maintenant, si vous voulez juste un nombre de FLOPS de pointe théorique, celui-ci est facile. Consultez simplement un article sur le processeur (par exemple, sur realworldtech.com ou somesuch) pour obtenir des informations sur le nombre de FLOPS DP qu'un noyau de processeur peut faire par cycle d'horloge (avec les processeurs x86 actuels, c'est généralement 4). Ensuite, le pic total FLOPS est juste

nombre de coeurs * FLOPS / cycle * fréquence

Ensuite, pour un cluster avec un réseau IB, vous devriez être en mesure d'atteindre environ 80% des FLOPS de pointe sur HPL (dont BTW est l'une des références dans HPCC).

janneb
la source