FLOPS unter Linux schätzen?

13

Ich suche ein schnelles und einfaches Programm, um FLOPS auf meinem Linux-System abzuschätzen. Ich habe HPL gefunden , aber es ist ärgerlich , es zusammenzustellen. Alles, was ich brauche, ist eine Schätzung des Baseballstadions der FLOPS, ohne einen Tag damit zu verbringen, Benchmark-Pakete zu recherchieren und abhängige Software zu installieren. Gibt es ein solches Programm? Wäre es ausreichend, ein C-Programm zu schreiben, das zwei Floats in einer Schleife multipliziert?

Molekularbär
quelle

Antworten:

5

Die Frage ist, was meinst du mit Flops? Wenn Sie sich nur darum kümmern, wie viele der einfachsten Gleitkommaoperationen pro Takt ausgeführt werden, ist dies wahrscheinlich das Dreifache Ihrer Taktrate, aber das ist ungefähr so ​​bedeutungslos wie Bogomips. Einige Gleitkommaoperationen benötigen viel Zeit (für den Anfang: Teilen), Addieren und Multiplizieren sind in der Regel schnell (eine pro fp-Einheit pro Takt). Das nächste Problem ist die Speicherleistung. Es gibt einen Grund, warum der letzte klassische CRAY 31 Speicherbänke hatte. Letztendlich ist die CPU-Leistung davon abhängig, wie schnell Sie lesen und in den Speicher schreiben können. In welchen Cache-Level passt Ihr Problem? Linpack war einst ein echter Benchmark, jetzt passt es in den Cache (L2, wenn nicht L1) und ist eher ein rein theoretischer CPU-Benchmark. Und natürlich können Ihre SSE-Einheiten (usw.) auch die Gleitkomma-Leistung verbessern.

Welche Distribution läufst du?

Dies sah nach einem guten Hinweis aus: 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/ ist möglicherweise eine einfachere Möglichkeit, einen Flops-Benchmark zu installieren.

Trotzdem frage ich mich, warum es dich interessiert, wofür du es verwendest? Wenn Sie nur eine bedeutungslose Zahl haben möchten, ist Ihr Systembogomip in dmesg immer noch genau richtig.

Ronald Pottol
quelle
1
Phoronix scheint genau das zu sein, wonach ich gesucht habe - danke! Der einzige Grund, warum ich das wollte, war, dass ich eine Umfrage ausfüllte, in der gefragt wurde, wie viele Teraflops an Rechenleistung ich habe. Die Umfrage war nicht sonderlich wichtig, daher machte mir die Richtigkeit der Antwort keine Sorgen. Trotzdem wäre es nett zu sagen: "Unser Cluster kann X-Teraflops ausführen." Obwohl Sie darauf hinweisen, hat diese Zahl nicht unbedingt eine große Bedeutung für die reale Welt.
Molecularbear
7

anscheinend gibt es ein "sysbench" -Benchmark-Paket und einen Befehl:

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

führe es so aus:

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

Ausgabe für Vergleiche:

 total time:                          15.3047s

Ref: http://www.midwesternmac.com/blogs/jeff-geerling/2013-vps-benchmarks-linode

Rogerdpack
quelle
3
Wie gibt das den FLOPS?
Martin Thoma
Es scheint
Rogerdpack
3

Für Parkschätzungen:

Linpack

  1. Laden Sie es herunter ( Link )
  2. Extrahiere es
  3. cd benchmarks_2017/linux/mkl/benchmarks/linpack
  4. ./runme_xeon64
  5. Warten Sie eine Weile (mehr als 1 Stunde)

Auf einem Thinkpad T460p ( Intel i7-6700HQ CPU ) gibt es:

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
quelle
1

Ein Benchmark, der traditionell zur Messung von FLOPS verwendet wurde, ist Linpack. Ein weiterer gängiger FLOPS-Benchmark ist Whetstone.

Lesen Sie weiter: Der Wikipedia-Eintrag "FLOPS" , Whetstone-Eintrag , Linpack-Eintrag

kolypto
quelle
2
Ich weiß Ihre Antwort zu schätzen, aber mein Ziel ist es, eine schnelle Schätzung der Flops zu erhalten. Whetstone und Linpack haben das gleiche Problem wie HPL - ich beginne, darüber zu lesen, und verliere mich dann auf der Baustelle nach der anderen, die alle 20 Jahre alt aussehen. Wenn es mir gelingt, Quellcode zu finden, kann ich ihn scheinbar nicht kompilieren, ohne eine Reihe abhängiger Bibliotheken zu installieren - selbst dann treten Fehler auf. Ich könnte all dieses Zeug zum Laufen bringen, aber es ist nicht wichtig genug, um die Zeit zu verbringen. Hoffentlich gibt es eine relativ moderne Software, die nur für Ballpark-Flops geeignet ist.
Molecularbear
1
Schätzen? Dann ist es ungefähr 4 * Hz: für 1 GHz CPU ist es ungefähr 4 GFLOPS :))
kolypto
1

Wie Sie bereits erwähnt haben, haben wir die HPCC-Suite verwendet . Das Einrichten und Einstellen ist etwas aufwändig, aber in unserem Fall war der Punkt nicht per se prahlerisch, sondern Teil der Akzeptanzkriterien für den Cluster. Einige Leistungsvergleiche sind meiner Meinung nach unerlässlich, um sicherzustellen, dass die Hardware wie angekündigt funktioniert, alles richtig verkabelt ist usw.

Wenn Sie nur eine theoretische Spitzen-FLOPS-Zahl wünschen, ist diese einfach. Lesen Sie einfach einen Artikel über die CPU (z. B. auf realworldtech.com oder ähnlichem), um Informationen darüber zu erhalten, wie viele DP-FLOPS ein CPU-Kern pro Taktzyklus ausführen kann (bei aktuellen x86-CPUs sind das in der Regel 4). Dann ist der Gesamtpeak FLOPS gerade

Anzahl der Kerne * FLOPS / Zyklus * Frequenz

Dann sollten Sie für einen Cluster mit IB-Netzwerk in der Lage sein, ungefähr 80% der Spitzen-FLOPS auf HPL zu erreichen (was übrigens einer der Benchmarks in HPCC ist).

janneb
quelle