Compute Shader vs CUDA / OpenCL

8

Así que recientemente aprendí sobre el Compute Shader y parece que he aprendido la misma idea que la programación paralela que harías con CUDA o OpenCL, pero en la línea de sombreado.

Si quiero dibujar un millón de cubos en una escena, debería usar un método sobre el otro o ambos. Si tanto, ¿cómo se divide eso para que la GPU no intente calcular en paralelo tanto el sombreador como otro proceso al mismo tiempo?

FrickeFresh
fuente
2
¿Por qué quieres usar GPGPU para dibujar millones de cubos en primer lugar?
Derag
3
Los sombreadores informáticos se utilizan para calcular las cargas de trabajo, no para la representación. La regla general es que si necesita rasterización (es decir, procesamiento de geometría triangulada en píxeles), debe usar la canalización de representación; Si simplemente necesita procesar una gran cantidad de datos, debería estar usando el cómputo. También estoy interesado en argumentos sólidos a favor y en contra de los sombreadores de cómputo y CUDA / OpenCL (con interoperabilidad de API de gráficos). Una de las que he oído es una mejor puesta en cola de las cargas de trabajo de cómputo con la API específica de cómputo, pero me gustaría saber más (es decir, cómo entra en juego la computación asíncrona).
IneQuation
@Derag Solo trato de alimentar mi fetiche de cubo lo más rápido posible
FrickeFresh
Si quieres dibujar un millón de cubos, usa marcha con rayos :)
russ

Respuestas:

7

Hoy en día, no es del todo correcto pensar que los sombreadores de cómputo estén "en la tubería de sombreadores" en el mismo sentido que los sombreadores de vértices y fragmentos están literalmente conectados a una tubería. Los sombreadores informáticos no están "conectados" a nada actualmente, no pueden impulsar la rasterización o consumir directamente los resultados de la rasterización.

Sin embargo, lo que le permite hacer es consumir y producir recursos de memoria también utilizados por las llamadas de extracción de una manera relativamente eficiente. OpenCL hace esto bastante difícil (ver, por ejemplo, https://software.intel.com/en-us/articles/opencl-and-opengl-interoperability-tutorial ). Esto le permite integrar eficientemente los pases de cómputo dentro de su renderizador, pero no está integrado en la tubería de renderizado

GroverManheim
fuente