Come determinare la quantità di FLOP di cui è capace il mio computer


15

Vorrei determinare il numero teorico di FLOP (Floating Point Operations) che il mio computer può fare. Qualcuno può aiutarmi per favore con questo. (Vorrei confrontare il mio computer con alcuni supercomputer solo per avere un'idea della differenza tra loro)

Risposte:


9

Il / i picco / i teorico di picco è dato da: Il numero di core è semplice. In teoria, la frequenza media dovrebbe tener conto di una certa quantità di Turbo Boost (Intel) o Turbo Core (AMD), ma la frequenza operativa ha un buon limite inferiore. Le operazioni per ciclo dipendono dall'architettura e possono essere difficili da trovare (8 per SandyBridge e IvyBridge, vedere la diapositiva 26 ). È l'oggetto di questa domanda di overflow dello stack , che include i numeri per un gruppo di architetture moderne.

Numero di core*Frequenza media*Operazioni per ciclo

1
Ok, ho 2 core, Frequenza operativa: 1,8 GHz, Tecnologia Intel Turbo Boost: 3,00 Ghz, non riesco a trovare le operazioni per ciclo, ecco il sito web: ark.intel.com/products/75460/… grazie
Ol "Affidabile il

Haswell può eseguire 16 DP / ciclo. Ho appena aggiunto un link nel corpo della risposta a una risposta SO.
Max Hutchinson,

Questo significa che il mio computer può fare: 2 x 3.000.000.000 Hz x 16 = 96 Giga FLOPs?
Ol 'Affidabile,

Significa che potrebbe fare tra 2 * 1,8 GHz * 16 DP = 57,6 GFLOP / se 96 GFLOP / s, a seconda della frequenza media effettiva. Se devi usare un solo numero, 57.6 è il più giusto, IMO.
Max Hutchinson,

2
I tassi di FLOP sono generalmente una scarsa misura della "bontà" di un processore. Vedi scicomp.stackexchange.com/questions/114/… per esempio. Potresti voler pensare ai costi limitanti del tuo compito (es. Limite di calcolo vs limite di memoria vs limite di disco) e concentrarti sull'hardware pertinente (sistema di calcolo, sistema di memoria, I / O).
Max Hutchinson,

4

Dovrai conoscere il modello e il fornitore delle CPU nella tua macchina. Una volta che lo hai, puoi cercare sul sito Web del fornitore (o forse su Wikipedia) la frequenza di clock, il numero di chip / socket, il numero di core per chip, il numero di operazioni in virgola mobile per ciclo e la larghezza vettoriale di tali operazioni . Quindi, semplicemente si moltiplica.

Prendi, ad esempio, i processori Intel Xeon E5-2680 "Sandy Bridge" di Stampede, dove lavoro. Le specifiche sono:

  • 2.7GHz
  • 2 chip / nodo, 8 core / chip
  • 2 istruzioni vettoriali / ciclo
  • Istruzioni AVX con larghezza di 256 bit (4 operandi simultanei a doppia precisione)

Moltiplicando quelli si ottiene 345,6 GF / nodo o 2,2 PF per la parte non accelerata del sistema.

Di solito pensiamo in termini di operazioni a doppia precisione (64 bit), perché questa è la precisione richiesta per la stragrande maggioranza dei nostri utenti, ma se lo desideri puoi ripetere il calcolo in termini di precisione singola. Questo di solito cambia solo l'ultimo fattore, diciamo 8 flop / istruzioni SP invece di 4 flop / inst DP, ma può essere molto diverso da quello. Le GPU più vecchie, ad esempio, hanno fatto DP solo a circa 1/8 della velocità di SP. Se mai citi un numero per il tuo sistema, dovresti essere esplicito su quale hai usato se non è doppia precisione perché la gente supporrà che lo fosse, altrimenti.

Inoltre, se il tuo chip supporta istruzioni FMA (Fly) moltiplicate e può eseguirle alla massima velocità, la maggior parte delle persone lo considera come 2 operazioni in virgola mobile sebbene un contatore delle prestazioni hardware possa considerarlo come una sola istruzione.

Infine, puoi anche farlo per tutti gli acceleratori che potrebbero esistere nel tuo sistema (come una GPU o Xeon Phi) e aggiungere quelle prestazioni alle prestazioni della CPU per ottenere un totale teorico.


Non è sufficiente conoscere il modello di CPU, è necessario scoprire le frequenze operative effettive
Aksakal

@Aksakal, per un'analisi teorica, è probabilmente OK scegliere la frequenza nominale. È difficile sapere con quale frequenza funzioneranno i tuoi chip poiché ciò può dipendere dal carico di lavoro e dalla qualità del tuo climatizzatore.
Bill Barth,

2

Comprendo che hai chiesto il valore teorico, ma poiché questo è quasi sempre inaccessibile da qualsiasi codice reale, anche LINPACK, potresti voler eseguire (ottimizzato) DGEMM per matrici molto grandi. Il motivo per cui preferisco questo metodo è che espone alcune delle carenze di alcuni processori che impediscono loro di raggiungere il loro valore di picco del flop teorico.

Ad esempio, le GPU NVIDIA attualmente eseguono operazioni a numero intero e in virgola mobile sulla stessa pipeline. Ciò significa che puoi ottenere il / i flop / s di picco teorico solo se non esegui alcun calcolo intero . Poiché l'indicizzazione dell'array e qualsiasi altra forma di accesso ai dati richiedono l'aritmetica intera da qualche parte, nessun codice può raggiungere il / i flop / i di picco teorico su una GPU NVIDIA. Nella maggior parte dei casi, si vede ~ 80% come limite superiore. Per le CPU che emettono operazioni in numero intero e in virgola mobile contemporaneamente, questo non è un problema.

Su alcuni processori multicore simili a GPU come Intel Knights Corner e Blue Gene / Q, è più difficile raggiungere il / i picco / i di picco rispetto alle CPU tradizionali per problemi di pipeline simili (sebbene entrambi possano raggiungere almeno il 90% del picco in DGEMM di grandi dimensioni almeno ).


Perché nessun codice può raggiungere il / i flop / s di picco teorico su una GPU NVIDIA?
skytree

Vedi paragrafo 2. Tuttavia, tutto ciò era rilevante per le architetture più vecchie. Le architetture NVIDIA più recenti possono eseguire numeri interi e virgola mobile contemporaneamente e raggiungere> 90% del picco in DGEMM di grandi dimensioni.
Jeff
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.