[Cuda] Fattibilità della GPU come CPU?


Answers

Impegnati se sei interessato al calcolo scientifico e parallelo. Non pensare a CUDA e fare apparire una GPU come CPU. Permette solo un metodo più diretto di programmazione delle GPU rispetto alle vecchie tecniche di programmazione GPGPU.

Le CPU generiche derivano la loro capacità di lavorare bene su una vasta gamma di compiti da tutto il lavoro che è andato nella previsione delle branche, pipelining, superscaler, ecc. Ciò consente loro di ottenere buone prestazioni su un'ampia varietà di carichi di lavoro, mentre facendoli succhiare in operazioni in virgola mobile ad alta velocità di memoria ad alto throughput.

Le GPU sono state originariamente progettate per fare una cosa, e farlo molto, molto bene. Le operazioni grafiche sono intrinsecamente parallele. È possibile calcolare contemporaneamente il colore di tutti i pixel sullo schermo, poiché non vi sono dipendenze tra i risultati. Inoltre, gli algoritmi necessari non avevano a che fare con le filiali, dal momento che quasi tutti i rami che sarebbero necessari potevano essere raggiunti impostando un coefficiente di efficienza pari a zero o uno. L'hardware potrebbe quindi essere molto semplice. Non è necessario preoccuparsi della previsione dei branch, e invece di fare un processore superscaler, è sufficiente aggiungere quante più ALU si possono stipare sul chip.

Con texture programmabili e vertex shader, le GPU hanno acquisito un percorso verso la programmabilità generale, ma sono ancora limitate dall'hardware, che è ancora progettato per operazioni in virgola mobile ad alto throughput. Alcuni circuiti aggiuntivi verranno probabilmente aggiunti per consentire calcoli più generici, ma solo fino a un certo punto. Tutto ciò che compromette la capacità di una GPU di fare grafica non lo farà entrare. Dopo tutto, le aziende di GPU sono ancora nel settore della grafica e il mercato di riferimento sono ancora giocatori e persone che necessitano di visualizzazione di fascia alta.

Il mercato GPGPU è ancora una goccia nel secchio, e in una certa misura rimarrà tale. Dopotutto, "sembra carino" è uno standard molto più basso da soddisfare rispetto a "risultati garantiti e riproducibili al 100%, ogni volta".

Quindi, in breve, le GPU non saranno mai realizzabili come quelle della CPU. Sono semplicemente progettati per diversi tipi di carichi di lavoro. Prevedo che le GPU acquisiranno funzionalità che li rendono utili per risolvere rapidamente una più ampia varietà di problemi, ma saranno sempre prima di tutto le unità di elaborazione grafica .

Sarà sempre importante abbinare sempre il problema che hai con lo strumento più appropriato per risolverlo.

Question

Cosa pensi che sia il futuro della GPU come una CPU come CUDA? Pensi che diventeranno mainstream e saranno la prossima moda adottata nel settore? Apple sta costruendo un nuovo framework per l'utilizzo della GPU per svolgere compiti CPU e ci sono stati molti successi nel progetto Nvidias CUDA nelle scienze. Consiglieresti a uno studente di impegnarsi in questo campo?




Le GPU non sostituiranno mai le CPU. Una CPU esegue una serie di istruzioni sequenziali e una GPU esegue un tipo di calcolo molto specifico in parallelo. Queste GPU hanno una grande utilità nel calcolo numerico e nella grafica; tuttavia, la maggior parte dei programmi non può in alcun modo utilizzare questo aspetto dell'informatica.

Presto inizierai a vedere nuovi processori Intel e AMD che includono calcoli vettoriali in virgola mobile GPU e calcoli CPU standard.




È una di quelle cose che vedete per 1 o 2 applicazioni, ma abbastanza presto qualcuno troverà una "killer app" che capisce come fare qualcosa di più generalmente utile con esso, a velocità superveloce.

I pixel shader per applicare le routine a grandi matrici di valori float, forse vedremo alcune applicazioni di copertura GIS o bene, non lo so. Se non dedichi più tempo a questo, allora avrai lo stesso livello di conoscenza di me - cioè piccolo!

Ho la sensazione che potrebbe essere davvero una grande cosa, come Intel e S3, forse basta un piccolo aggiustamento all'hardware o qualcuno con una lampadina sopra la testa.




Molto tempo fa, era davvero difficile eseguire calcoli in virgola mobile (migliaia / milioni di cicli di emulazione per istruzione su CPU con prestazioni terribili (per gli standard odierni) come 80386). Le persone che avevano bisogno di prestazioni in virgola mobile potevano ottenere una FPU (ad esempio, la 80387. Le vecchie FPU erano abbastanza strettamente integrate nel funzionamento della CPU, ma erano esterne.) Più tardi si integrarono, con 80486 con un FPU integrato.

La FPU dei vecchi tempi è analoga al calcolo della GPU. Possiamo già averlo con le APU di AMD. Una APU è una CPU con una GPU integrata.

Quindi, penso che la vera risposta alla tua domanda sia che le GPU non diventeranno CPU, invece la CPU avrà una GPU integrata.