# FLOPS

FLOPS (acronimo di FLoating point Operations Per Second), in informatica, indica il numero di operazioni in virgola mobile eseguite in un secondo dalla CPU.

## Storia

* Nel 1961 il supercomputer IBM 7030 Stretch supera la soglia del megaFLOPS.
* Nel 1984 il supercomputer M-13 supera la soglia di un gigaFLOPS.
* Nel 1997 il supercomputer ASCI Red supera la soglia di un teraFLOPS.
* Nel 2008 il supercomputer IBM Roadrunner supera la soglia di un petaFLOPS
* Nel 2011 (è entrato in servizio nel novembre 2012) il supercomputer Fujitsu K arriva a 10,5 petaFLOPS
* Nel 2012 il supercomputer IBM Sequoia arriva 16,32 petaFLOPS
* Nel 2012, a fine ottobre, il supercomputer XK7 della Cray Inc. soprannominato Titan raggiunge il record di 20 petaFLOPS Archiviato il 13 giugno 2018 in Internet Archive.
* Nel 2013 il computer più potente è cinese, si chiama Tianhe 2 ed ha una capacità di calcolo di circa 34 petaFLOPS.
* Nel 2014 viene presentata l'AMD Radeon R9 295x2 con una potenza di 11,5 teraFLOPS ed era la scheda video più veloce al mondo.
* Nel 2016, a giugno, viene presentato il nuovo supercomputer più veloce al mondo: è il cinese Sunway TaihuLight con potenza di calcolo di 93 petaFLOPS .
* Nel 2018, a giugno, viene presentato Summit, un supercomputer che raggiunge la velocità di 200 petaFLOPS.
* Nel marzo 2020, la rete di calcolo distribuito Folding@home supera per la prima volta la potenza di calcolo di un exaFLOPS
* Nell'aprile 2020, la rete di calcolo distribuito Folding@home raggiunge i 2,4 exaFLOPS, una potenza di calcolo superiore a tutti i 500 super computer della classifica TOP 500 messi insieme.
* Nel 2021 Aurora, supercomputer presso un laboratorio governativo in Illinois, sarà il primo a superare la soglia degli exaflops.
* Nel 2024 viene presentata l'AMD Instinct MI325X con una potenza di 1,2 petaFLOPS (in singola precisione) ed è la scheda video più performante al mondo. Per un confronto, è circa 110 volte più veloce della R9 295x2 del 2014.

## Descrizione

    ${\text{FLOPS}}={\text{cores}}\times {\text{clock}}\times {\frac {\text{FLOPs}}{\text{cycle}}}$
La maggior parte dei microprocessori moderni può eseguire 4 FLOPs per ciclo di clock. Pertanto teoricamente un processore single-core con un clock a 2,5 GHz ha una capacità di 10 miliardi di FLOPS, ovvero 10 GFLOPS. Questa equazione, tuttavia, si applica in modo piuttosto generico ad una determinata architettura hardware ed ovviamente non tiene conto dei limiti imposti dalla larghezza di banda della memoria o di altri vincoli architetturali. In genere, quindi, il valore di FLOPS di un dato sistema non viene determinato su calcoli teorici come questo.
I moderni processori includono una floating point unit (FPU), componente specializzata nel calcolo delle operazioni in virgola mobile. Quindi il FLOPS è un'unità di misura delle prestazioni della FPU. La valutazione dell'effettiva potenza di calcolo della FPU deve essere effettuata in relazione ad un riferimento standard, che consenta di comparare i valori ottenuti con quelli di altri elaboratori. Un riferimento in questo senso sono il LINPACK e il LAPACK.
Lo studio delle prestazioni di un calcolatore attraverso la misura dei FLOPS non fornisce indicazioni dettagliate sulle reali capacità di elaborazione della CPU poiché non sono considerati fattori quali il carico del microprocessore e il tipo di operazione in virgola mobile. Per questo motivo è stata creata la SPEC (Standard Performance Evaluation Corporation), il cui compito è fornire dei riferimenti più dettagliati e precisi.
La lista TOP500, che periodicamente stila una classifica dei più potenti supercomputer al mondo, è basata sui FLOPS.

### Operazioni a virgola mobile e operazioni con interi

Il FLOPS misura la capacità computazionale di un computer. Un esempio di operazione a virgola mobile è il calcolo di equazioni matematiche; in quanto tale, il FLOPS è un'utile misura delle prestazioni di un supercomputer. Il MIPS è usato per misurare le performance di un computer a livello di operazioni intere. Esempi di operazioni intere includono il movimento di dati (da A a B) o il confronto di valori (se A = B, allora C). Il MIPS è sufficiente come benchmark per le prestazioni quando è usato nelle database query, per la videoscrittura, fogli elettronici, o per l'avvio di sistemi operativi virtuali multipli. Frank H. McMahon, della Lawrence Livermore National Laboratory, inventò i termini FLOPS e MFLOPS (megaFLOPS) per comparare i cosiddetti supercomputer dell'epoca, dal numero di calcoli in virgola mobile che essi erano in grado di compiere al secondo. Questo fu una scelta migliore rispetto ad usare il diffuso MIPS per il confronto tra computer poiché queste statistiche di solito hanno poca attinenza con le capacità aritmetiche della macchina.

### Mezza precisione, singola e doppia precisione

Esistono diversi tipi di FLOPS in base alla precisione matematica che viene calcolata. I calcoli a doppia precisione sono quelli con maggior carattere di precisione ma sono anche quelli computazionalmente più impegnativi e corrispondono alla rappresentazione a 64bit dei dati. Recentemente hanno preso molto piede sia il calcolo half-precision (a 16 bit) che il calcolo 8 bit (molto utile nel settore AI), molto performanti all'interno delle librerie grafiche e di calcolo gpgpu.