Quali sono i vantaggi e gli svantaggi dello sviluppo GPGPU (GPU generico)?


5

Mi chiedo quale sia l'elemento chiave che ti aiuta nello sviluppo GPGPU e, naturalmente, quali sono i limiti che trovi inaccettabili.

viene in mente per me:

  • vantaggio fondamentale: la potenza pura di queste cose
  • vincolo di chiave: il modello di memoria

Qual è il tuo punto di vista?

  0
2

Ho trovato questo articolo interessante su come le GPU non saranno necessarie con la velocità di CPU e # di core in costante aumento.

http://arstechnica.com/articles/paedia/gpu-sweeney-interview.ars

  0

ho praticamente concorda con le opinioni di Tim. Ancora di più quando si prende in considerazione l'arrivo di Larrabee. 23 set. 082008-09-23 22:16:38


0

Utilizzato per essere interessante per loro architetture parallele e silicio supplementare che era perlopiù inattivo e pertanto possono essere usati dal lato per purpos generali compiti di programmazione -

see - http://en.wikipedia.org/wiki/CUDA

ma potrebbe non essere troppo rilevante di fronte alla risposta di Lou sopra.


4

Devi stare attento a come interpretare le dichiarazioni di Tim Sweeney in quell'intervista con Ars. Sta dicendo che avere due piattaforme separate (la CPU e la GPU), una adatta per le prestazioni single-threaded e una adatta per l'elaborazione orientata al throughput, sarà presto un ricordo del passato, mentre le nostre applicazioni e hardware crescono l'una verso l'altra.

La GPU è cresciuta senza limiti tecnologici con la CPU, il che ha reso gli algoritmi più naturali, come il ray-tracing e la mappatura dei fotoni, praticamente annullabili a risoluzioni e framerate ragionevoli. Ne è arrivata la GPU, con un modello di programmazione estremamente diverso e restrittivo, ma forse 2 o 3 ordini di grandezza per una migliore resa per applicazioni codificate con cura per quel modello. I due modelli di macchine avevano (e hanno tuttora) stili di codifica essenzialmente diversi, linguaggi (OpenGL, DirectX, lingue shader rispetto ai linguaggi desktop tradizionali) e flussi di lavoro. Ciò rende il riutilizzo del codice e persino il riutilizzo di algoritmi/programmazione, estremamente difficile e hamstring di qualsiasi sviluppatore che voglia utilizzare un substrato di calcolo parallelo denso in questo modello di programmazione restrittivo.

Infine, arriviamo a un punto in cui questo substrato di elaborazione denso è analogamente programmabile su una CPU. Sebbene ci sia ancora un delta di prestazioni considerevole tra un "core" di questi acceleratori massivamente paralleli (sebbene i thread di esecuzione all'interno, ad esempio, un SM sul G80, non siano esattamente core nel senso tradizionale) e un desktop x86 moderno nucleo, due fattori portano convergenza di queste due piattaforme:

  • Intel e AMD stanno muovendo verso più, nuclei semplici su chip x86, convergenti l'hardware con le GPU, in cui le unità sono sempre più grossolana e programmabile nel tempo).
  • Questa e altre forze generano molte nuove applicazioni che possono sfruttare il parallelismo a livello di dati o thread (DLP/TLP), utilizzando in modo efficace questo tipo di substrato.

Quindi, quello che Tim stava dicendo è che le 2 piattaforme distinte convergeranno, in misura ancora maggiore rispetto, ad esempio, a OpenCl, offre.Una citazione saliente dell'intervista:

TS: No, vedo esattamente dove sei intestazione . Nella console successiva della generazione è possibile avere console costituite da un singolo chip non di consumo. Potrebbe essere un processore generico, se si è evoluto da un passato CPU architettura GPU architettura e potrebbe potenzialmente eseguire tutto: la grafica, AI, suono, e tutti questi sistemi in modo del tutto omogenea . Questa è una prospettiva molto interessante, perché può semplificare notevolmente il set di strumenti e i processi per la creazione del software .

In questo momento, nel corso della spedizione Unreal 3, dobbiamo utilizzare più linguaggi di programmazione . Usiamo un linguaggio di programmazione per scrivere shader pixel , un altro per scrivere codice gameplay , e poi su PlayStation 3 usiamo un altro compilatore per scrivere codice su eseguito sul processore Cell. Così il PlayStation 3 finisce per essere una sfida particolare , perché ci avete tre completamente diverse processori di diversi fornitori con differenti set di istruzioni e diversi compilatori e le diverse tecniche di esecuzione . Quindi, un sacco di la complessità non è necessaria e rende più difficile il bilanciamento del carico.

Quando si ha, ad esempio, tre diversi chip con diverse capacità di programmazione , spesso avere due di questi chip le mani in mano per gran parte del tempo, mentre l'altro è maxed. Ma se l'architettura è completamente uniforme, è possibile eseguire qualsiasi attività su qualsiasi parte del chip in qualsiasi momento e ottenere il miglior compromesso di prestazioni in questo modo.


0

Il vantaggio chiave è gigaflops: potenza pura. Gli svantaggi includono set di istruzioni limitato, non ortogonale e modello di programmazione.

Ecco una carta sondaggio: http://graphics.idav.ucdavis.edu/publications/print_pub?pub_id=907

L'articolo di Wikipedia è un buon inizio.

Lou Franco indica un'intervista con Tim Sweeney; ecco le diapositive di un discorso ha dato, che ha più dettaglio: http://www.scribd.com/doc/5687/The-Next-Mainstream-Programming-Language-A-Game-Developers-Perspective-by-Tim-Sweeney

potrebbe anche curiosare: http://gpgpu.org