Le persone qui hanno dato ottime risposte che rispondono direttamente alla tua domanda, ma vorrei dare una risposta complementare per spiegare più in profondità perché le GPU sono così potenti per questa e altre applicazioni.
Come alcuni hanno sottolineato, le GPU sono appositamente progettate per essere veloci con le operazioni matematiche poiché disegnare cose sullo schermo è tutta matematica (tracciare le posizioni dei vertici, manipolazioni di matrici, mescolare i valori RBG, leggere lo spazio delle texture ecc.). Tuttavia, questa non è davvero la principale forza trainante del miglioramento delle prestazioni. La forza trainante principale è il parallelismo. Una CPU di fascia alta potrebbe avere 12 core logici, dove una GPU di fascia alta potrebbe contenere qualcosa come 3072.
Per semplificare, il numero di core logici è uguale al numero totale di operazioni simultanee che possono essere eseguite su un dato set di dati. Diciamo ad esempio che voglio confrontare o ottenere la somma dei valori di due array. Diciamo che la lunghezza dell'array è 3072. Sulla CPU, potrei creare un nuovo array vuoto con la stessa lunghezza, quindi generare 12 thread che itererebbero attraverso i due array di input a un passo uguale al numero di thread (12) e contemporaneamente scaricando la somma dei valori nel terzo array di output. Ciò richiederebbe 256 iterazioni totali.
Con la GPU tuttavia, potrei dalla CPU caricare quegli stessi valori nella GPU quindi scrivere un kernel che potrebbe avere 3072 thread generati contro quello kernel contemporaneamente e completare l'intera operazione in una singola iterazione.
Questo è utile per lavorare su qualsiasi dato che, per sua natura, può supportare il "lavoro su" in modo parallelizzabile. Quello che sto cercando di dire è che questo non è limitato agli strumenti di hacking / malvagi. Questo è il motivo per cui GPGPU sta diventando sempre più popolare, cose come OpenCL, OpenMP e simili sono avvenute perché le persone si sono rese conto che noi programmatori stiamo impantanando le nostre povere piccole CPU con il lavoro quando c'è una potenza enorme pianta seduta nel PC a malapena utilizzata per contrasto. Non è solo per crackare software. Ad esempio, una volta ho scritto un elaborato programma CUDA che ha preso la storia del lotto negli ultimi 30 anni e ha calcolato le probabilità di vincita / vincita con biglietti di varie combinazioni di tutti i numeri possibili con un numero variabile di giocate per biglietto, perché pensavo che fosse un migliore l'idea di usare queste grandi capacità solo per trovare un lavoro (questo è per le risate, ma purtroppo è anche vero).
Anche se non sostengo necessariamente le persone che danno la presentazione, questa presentazione fornisce un'illustrazione molto semplice ma piuttosto accurata del motivo per cui la GPU è così eccezionale per tutto ciò che può essere parallelizzato, specialmente senza alcuna forma di blocco (che regge altri thread, riducendo notevolmente gli effetti positivi del parallelismo).