actualizar - descargar opengl para windows 10
¿Cuál es la diferencia entre OpenCL y el sombreador de cómputo de OpenGL? (2)
Sé que OpenCL da control de la arquitectura de memoria de la GPU y permite una mejor optimización, pero, dejando esto de lado, ¿podemos usar Compute Shaders para operaciones vectoriales (suma, multiplicación, inversión, etc.)?
A diferencia de los otros tipos de sombreadores OpenGL, los sombreadores de cómputo no están directamente relacionados con los gráficos de computadora y proporcionan una abstracción mucho más directa del hardware subyacente, similar a CUDA y OpenCL. Proporciona tamaño de grupo de trabajo personalizable, memoria compartida, sincronización dentro del grupo y todas las cosas conocidas y amadas de CUDA y OpenCL.
Las principales diferencias son básicamente:
- Utiliza GLSL en lugar de OpenCL C. Aunque no hay una diferencia tan grande entre esos lenguajes de programación, puedes usar todas las funciones GLSL relacionadas con gráficos que no están disponibles para OpenCL, como tipos avanzados de texturas (por ejemplo, matrices de mapas en cubos), avanzadas filtrando (p. ej., mipmapping, bien Ok, probablemente necesite calcular el nivel de mip usted mismo), y cosas de poca conveniencia como matrices 4x4 o funciones geométricas.
- Es un programa de sombreado OpenGL como cualquier otro sombreador GLSL. Esto significa que acceder a los datos de OpenGL (como búferes, texturas, imágenes) es simplemente trivial, mientras que la interfaz entre OpenGL y OpenCL / CUDA puede ser tediosa, con un posible esfuerzo de sincronización manual desde su lado. De la misma manera, integrarlo en un flujo de trabajo OpenGL existente también es trivial, mientras que configurar OpenCL es un libro en sí mismo, por no hablar de su integración en una canalización de gráficos existente.
Entonces, ¿a qué se reduce esto? Es que los sombreadores de cómputo están destinados a ser utilizados en aplicaciones OpenGL existentes, aunque presentan el enfoque informático habitual (OpenCL / CUDA) para la programación de GPU, en contraste con el enfoque gráfico del otro sombreador. etapas, que no tenían la flexibilidad informática de OpenCL / CUDA (mientras ofrecían otras ventajas, por supuesto). Por lo tanto, realizar tareas de cómputo es más flexible, directo y fácil que apretarlas en otras etapas de sombreado no destinadas a la informática general o introducir un marco informático adicional con el que se debe sincronizar.
Los sombreadores de cómputo deberían poder hacer casi cualquier cosa que se pueda lograr con OpenCL con la misma flexibilidad y control sobre los recursos de hardware y con el mismo enfoque de programación. Entonces, si tiene un buen algoritmo adecuado para la GPU (que funcionaría bien con CUDA o OpenCL) para la tarea que desea hacer, entonces sí, también puede hacerlo con sombreadores de cómputo. Pero no tendría mucho sentido utilizar OpenGL (que todavía es y probablemente siempre será un marco para gráficos de computadora en tiempo real, en primer lugar) solo a causa de los sombreadores de cómputo. Para esto, puedes usar OpenCL o CUDA. La fuerza real de los sombreadores de cómputo entra en juego cuando se mezclan gráficos y capacidades de cálculo.
Mire here para otra perspectiva. Resumiendo:
Sí, OpenCL ya existía, pero se dirige a aplicaciones pesadas (piense en CFD, FEM, etc.) y es mucho más universal que OpenGL (piense más allá de las GPU ... La arquitectura Xeon Phi de Intel admite más de 50 núcleos x86).
Además, compartir búferes entre OpenGL / CUDA y OpenCL no es divertido.