cuda programming - Fattibilità della GPU come CPU?[chiuso]




download what (8)

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?


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.


Penso che sia la strada giusta da percorrere.

Considerando che le GPU sono state sfruttate per creare supercomputer economici , sembra essere la naturale evoluzione delle cose. Con così tanta potenza di calcolo e R & S già fatto per te, perché non sfruttare la tecnologia disponibile?

Quindi vai avanti e fallo. Farà una ricerca interessante, oltre che un motivo legittimo per acquistare quella scheda grafica di fascia alta in modo da poter giocare a Crysis e Assassin's Creed su tutti i dettagli grafici;)


Prima di tutto non penso che queste domande appartengano veramente a SO.

A mio parere, la GPU è un'alternativa molto interessante ogni volta che esegui la matematica mobile basata su vettori. Tuttavia questo si traduce in: Non diventerà mainstream. La maggior parte delle applicazioni mainstream (desktop) esegue pochissimi calcoli in virgola mobile.

Ha già guadagnato trazione nei giochi (fisica-motori) e nei calcoli scientifici. Se consideri qualcuno di questi due come "mainstream", allora sì, la GPU diventerà mainstream.

Non considererei questi due mainstream e quindi penso che la GPU genererà la prossima moda passeggera nell'industria mainstream.

Se tu, come studente, hai qualche interesse nei calcoli scientifici basati sulla fisica pesante, dovresti assolutamente dedicare del tempo ad esso (le GPU sono comunque pezzi di hardware molto interessanti).


Con così tanto potere non sfruttato, non riesco a vedere come sarebbe rimasto inutilizzato per troppo tempo. La domanda è, però, come verrà utilizzata la GPU per questo. CUDA sembra essere una buona ipotesi per ora, ma altre tecnologie stanno emergendo all'orizzonte che potrebbero renderlo più accessibile dallo sviluppatore medio.

Apple ha recentemente annunciato OpenCL che affermano che è molto più di CUDA, ma piuttosto semplice. Non sono sicuro di cosa farne esattamente, ma il gruppo khronos (I ragazzi che lavorano sullo standard OpenGL) stanno lavorando sullo standard OpenCL e sta cercando di renderlo altamente interoperabile con OpenGL. Ciò potrebbe portare a una tecnologia che è più adatta per il normale sviluppo del software.

È un argomento interessante e, per inciso, sto per iniziare la mia tesi di master sul tema del modo migliore per rendere la potenza della GPU disponibile agli sviluppatori medi (se possibile) con CUDA come obiettivo principale.


A lungo termine, penso che la GPU cesserà di esistere, poiché i processori di uso generale si evolvono per assumere il controllo di tali funzioni. Il Larrabee di Intel è il primo passo. La storia ha dimostrato che scommettere contro x86 è una cattiva idea.

Sarà ancora utile studiare le architetture parallele massicce e l'elaborazione vettoriale.


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.


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.


glTranslate, glRotate e glScale cambiano la matrice di trasformazione attiva corrente. Questa è ovviamente un'operazione della CPU. La vista del modello e le matrici di proiezione descrivono solo come la GPU dovrebbe trasformare i vertici quando si emette un comando di rendering.

Ad esempio, chiamando glTranslate non è ancora stato tradotto nulla. Prima di rendere la proiezione corrente e le matrici della vista del modello sono moltiplicate (MVP = proiezione * modelview), allora questa singola matrice viene copiata sulla GPU e quindi la GPU esegue le moltiplicazioni del vertice della matrice * ("T & L") per ciascun vertice. Quindi la traduzione / ridimensionamento / proiezione dei vertici viene eseguita dalla GPU.

Inoltre non dovresti preoccuparti delle prestazioni se non usi queste funzioni in un loop interno da qualche parte. glTranslate risulta in tre aggiunte. glScale e glRotate sono un po 'più complessi.

Il mio consiglio è che dovresti imparare un po 'di più sull'algebra lineare. Questo è essenziale per lavorare con le API 3D.





cuda cpu gpu gpgpu