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.