Le persone hanno dato grandi risposte qui che rispondono direttamente alla tua domanda, ma mi piacerebbe dare una risposta complementare per spiegare in modo più approfondito perché le GPU sono così potenti per questo e altre applicazioni.
Come alcuni hanno sottolineato, le GPU sono progettate appositamente per essere veloci con operazioni matematiche poiché disegnare oggetti sullo schermo è tutto matematico (tracciare posizioni di vertici, manipolazioni di matrici, miscelazione di valori RBG, lettura dello spazio texture ecc.). Tuttavia, questa non è la principale forza trainante dietro il guadagno in termini di prestazioni. La principale forza trainante è il parallelismo. Una CPU di fascia alta potrebbe avere 12 core logici, dove un high end GPU riempirebbe qualcosa come 3072.
Per semplificare, il numero di core logici è uguale al numero totale di operazioni simultanee che possono essere eseguite su un determinato set di dati. Ad esempio, 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 verrebbero ripetuti sui due array di input ad un passo uguale al numero di thread (12) e contemporaneamente si sta scaricando la somma dei valori nella terza matrice di output. Ciò richiederebbe 256 iterazioni totali.
Con la GPU, tuttavia, potrei caricare dalla CPU gli stessi valori nella GPU e scrivere un kernel che potrebbe generare contemporaneamente 3072 thread su quel kernel e completare l'intera operazione in un'unica iterazione.
Questo è utile per lavorare contro qualsiasi dato che, per sua natura, possa supportare il "lavoro" in modo parallelizzabile. Quello che sto cercando di dire è che questo non è limitato agli strumenti di hacking / evil. Questo è il motivo per cui GPGPU sta diventando sempre più popolare, cose come OpenCL, OpenMP e simili sono avvenute perché le persone hanno ci siamo resi conto che noi programmatori stiamo impantanando le nostre povere piccole CPU con il lavoro quando c'è una massiccia centrale elettrica nel PC a malapena utilizzata al contrario. Non è solo per software di cracking. Ad esempio, una volta che ho scritto un elaborato programma CUDA che ha preso la storia del lotto negli ultimi 30 anni e calcolato probabilità di vincita / vincita con biglietti di varie combinazioni di tutti i possibili numeri con numero variabile di giochi per biglietto, perché pensavo che fosse meglio idea di usare queste grandi capacità per ottenere un lavoro (questo è per le risate, ma purtroppo è anche vero).
Anche se non approvo necessariamente le persone che partecipano alla presentazione, questa presentazione offre una descrizione molto semplice, ma piuttosto illustrazione accurata del perché la GPU è così grande per tutto ciò che può essere parallelizzato, specialmente senza alcuna forma di blocco (che trattiene altri thread, diminuendo notevolmente gli effetti positivi del parallelismo).