CPU vs GPU
GPU: tante unità aritmetiche semplici, bandwidth esagerato
CPU: branch prediction, superscalare, unità aritmetica complessa, ottima gestione della cache.
Round 1:
GPU
Test:"Cambia la luminosità di una immagine da 10 Mps"
"Fatto!"
CPU:
Test:"Cambia la luminosità di una immagine da 10 Mps"
"Cambio al pixel 1
Cambio al pixel 2
Cambio al pixel 3
....
Cambio al pixel 1.032.312
...
uff uff
...
Cambio al pixel ...."
etc
Nonostante i clock molto più alti della CPU, la GPU può processare tutto in parallelo.
Round 2:
GPU:
Test:"Se a è diverso da b, vai a c altrimenti prosegui"
"Emm.. scusa dov'è esattamente che devo andare?"
"A c, se a è diverso da b"
"Sicuro, si?"
"Si, altrimenti prosegui"
"Altrimenti che?... dai non farla difficile!"
...
...
"Senti, se ti ricambiassi la luminosità all'immagine di prima?"
CPU:
Test:"Se a..."
"Fatto!"
"Ehi!, ma devo ancora finire la domanda!"
"Potenza del branch prediction, cocco!"
Sulle "decisioni" la GPU entra in crisi e possono rallentare completamente le sue operazioni. Le CPU sono anni che vengono ottimizzate per far quello.
Verdetto:
calcoli e algoritmi complessi su un "ristretto" insieme di dati->CPU
calcoli e algoritmi "semplici" su un grande insieme di dati->GPU.
Nota di colore:
Processore ARM
Test:"Se a..."
"Vado a c."
"Ehi!, ma devo ancora finire la domanda!"
"Zi, ma il compilatore mi ha fatto la soffiata di andare a c"