Stimare FLOPS in Linux?


13

Sto cercando un programma semplice e veloce per stimare FLOPS sul mio sistema Linux. Ho trovato HPL , ma ottenerlo compilato si sta rivelando irritante. Tutto ciò di cui ho bisogno è una stima del FLOPS, senza bisogno di passare una giornata a cercare pacchetti di benchmark e installare software dipendenti. Esiste un programma del genere? Sarebbe sufficiente scrivere un programma C che moltiplica due float in un ciclo?

Risposte:


5

La domanda è: cosa intendi per flop? Se tutto ciò che ti interessa è quante delle più semplici operazioni in virgola mobile per clock, probabilmente è 3 volte la velocità del tuo clock, ma è quasi insignificante come i bogomips. Alcune operazioni in virgola mobile richiedono molto tempo (dividere, per cominciare), aggiungere e moltiplicare sono in genere veloci (uno per unità fp per orologio). Il prossimo problema sono le prestazioni della memoria, c'è un motivo per cui l'ultimo CRAY classico aveva 31 banchi di memoria, in definitiva le prestazioni della CPU sono limitate da quanto velocemente puoi leggere e scrivere in memoria, quindi a quale livello di cache si adatta il tuo problema? Linpack è stato un vero punto di riferimento una volta, ora si inserisce nella cache (L2 se non L1) ed è più di un semplice benchmark teorico della CPU. E, naturalmente, anche le tue unità SSE (ecc.) Possono aggiungere prestazioni in virgola mobile.

Quale distro corri?

Sembrava un buon puntatore: 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/ potrebbe essere un modo più semplice per installare un benchmark flop.

Mi chiedo ancora perché ti interessi, per cosa lo stai usando? Se vuoi solo un numero insignificante, i tuoi sistemi bogomips sono ancora lì in Dmesg.


1
Phoronix sembra essere esattamente quello che stavo cercando - grazie! L'unica ragione per cui volevo questo era perché stavo compilando un sondaggio che mi chiedeva quante teraflop di potenza di calcolo ho. Il sondaggio non era tremendamente importante, quindi non ero preoccupato per l'accuratezza della risposta. Tuttavia, sarebbe in qualche modo pulito poter dire "Il nostro cluster può fare X teraflop". Anche se come hai sottolineato, quel numero non ha necessariamente molto significato nel mondo reale.
molecularbear,

7

apparentemente c'è un pacchetto di riferimento "sysbench" e comando:

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

eseguilo in questo modo:

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

output per confronti:

 total time:                          15.3047s

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


3
In che modo questo dà i FLOPS?
Martin Thoma,

Sembra più un generico "benchmark cpu" vedi anche bnikolic.co.uk/blog/hpc-howto-measure-flops.html
rogerdpack

3

Per le stime del ballpark:

Linpack

  1. Scaricalo ( link )
  2. Estrai
  3. cd benchmarks_2017/linux/mkl/benchmarks/linpack
  4. ./runme_xeon64
  5. Aspetta un bel po '(più di 1 ora)

Su un Thinkpad T460p ( CPU Intel i7-6700HQ ), offre:

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

1

Un benchmark che è stato tradizionalmente utilizzato per misurare FLOPS è Linpack. Un altro benchmark FLOPS comune è Whetstone.

Altre letture: la voce "FLOPS" di Wikipedia , voce Whetstone , voce Linpack


2
Apprezzo la tua risposta, tuttavia il mio obiettivo è ottenere una stima rapida e sporca dei flop. Whetstone e Linpack hanno lo stesso problema di HPL: inizio a leggerlo, poi mi perdo in un sito dopo l'altro che sembrano tutti 20 anni. Quando riesco a trovare il codice sorgente, non riesco a compilarlo senza installare un mucchio di librerie dipendenti - anche allora mi imbatto in errori. Potrei far funzionare tutte queste cose, ma non è abbastanza importante passare il tempo. Speriamo che esista un software relativamente moderno che funziona solo per i flop di ballparking.
molecularbear

1
Stima? Quindi è circa 4 * Hz: per CPU da 1 GHz è circa 4GFLOPS :))
kolypto


1

Come dici tu, abbiamo usato la suite HPCC . Ci vuole un po 'di sforzo per configurare e mettere a punto, ma nel nostro caso il punto non si vantava di per sé, faceva parte dei criteri di accettazione per il cluster; alcuni benchmark delle prestazioni sono fondamentali per garantire che l'hardware funzioni come pubblicizzato, che tutti i cavi siano collegati correttamente, ecc.

Ora, se vuoi solo un numero FLOPS di picco teorico, quello è facile. Basta consultare qualche articolo sulla CPU (diciamo, su realworldtech.com o su qualche altro) per ottenere informazioni su quanti FLOP DP può fare un core CPU per ciclo di clock (con le attuali CPU x86 che in genere sono 4). Quindi il picco totale FLOPS è giusto

numero di core * FLOPS / ciclo * frequenza

Quindi per un cluster con rete IB dovresti essere in grado di raggiungere circa l'80% dei FLOPS di picco su HPL (che BTW è uno dei parametri di riferimento in HPCC).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.