Compute Shader vs CUDA / OpenCL


8

Di recente ho imparato a conoscere Compute Shader e sembra da quello che ho preso la stessa idea di programmazione parallela che faresti con CUDA o OpenCL, ma nella pipeline di shader.

Se voglio disegnare un milione di cubi in una scena, dovrei usare un metodo rispetto all'altro o entrambi. Se entrambi come lo dividi in modo che la GPU non stia cercando di calcolare in parallelo sia lo shader che un altro processo allo stesso tempo


2
Perché vuoi usare GPGPU per disegnare milioni di cubi al primo posto?
— Derag,

3
Gli shader di calcolo vengono utilizzati per i carichi di lavoro di calcolo, non per il rendering. La regola empirica è che se è necessaria la rasterizzazione (ovvero l'elaborazione della geometria triangolata in pixel), è necessario utilizzare la pipeline di rendering; se hai semplicemente bisogno di elaborare una grande mole di dati, dovresti usare il calcolo. Sono anche interessato a validi argomenti a favore e contro shader di calcolo e CUDA / OpenCL (con interoperabilità API grafica). Uno di cui ho sentito parlare è una migliore messa in coda dei carichi di lavoro di calcolo con l'API specifica per il calcolo, ma mi piacerebbe saperne di più (ovvero come viene visualizzato il calcolo asincrono).
— IneQuation

@Derag Sto solo cercando di nutrire il mio cubo fetish il più velocemente possibile
— FrickeFresh,

Se vuoi disegnare un milione di cubi, usa la marcia del raggio :)
— russ

Risposte:


7

Oggi non è del tutto corretto pensare che gli shader di calcolo siano "nella pipeline degli shader", nello stesso senso in cui gli shader di vertici e frammenti sono letteralmente collegati a una pipeline. Gli shader di calcolo non sono attualmente "collegati" a nulla, non possono guidare la rasterizzazione o consumare direttamente gli output della rasterizzazione.

Ciò che ti consente di fare, tuttavia, è consumare e produrre risorse di memoria utilizzate anche dalle chiamate di disegno in modo relativamente efficiente. OpenCL lo rende piuttosto difficile (vedi ad esempio https://software.intel.com/en-us/articles/opencl-and-opengl-interoperability-tutorial ). Ciò consente di integrare in modo efficiente i passaggi di calcolo all'interno del renderer, ma non è integrato nella pipeline di rendering

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.