OpenCL vs. DirectCompute?
(5)
Estoy buscando comparaciones entre OpenCL y DirectCompute , pero no he encontrado nada. Las ventajas de OpenCL de ser multiplataforma y tener una gama más amplia de GPU compatibles no me importan. Estoy bien con la codificación en Windows solo para las GPU DX11. Suponiendo que, ¿cuáles son los pros y los contras de cada API?
Sé que esta pregunta se planteó antes , pero estoy buscando más detalles.
No estoy interesado en CUDA, ya que no quiero limitarme solo al hardware de Nvidia.
Bueno, la principal ventaja de OpenCL es que no se limita solo a las tarjetas gráficas. Puede utilizar su CPU multinúcleo, su tarjeta gráfica y potencialmente cualquier número de otros dispositivos de aceleración de hardware (DSP, etc.), todos desde el mismo programa.
No estoy seguro si DirectCompute permite esa libertad.
OpenCL multiplataforma no es solo un detalle, ya que el código del host (el que llama a la API de OpenCL y envía los kernels) puede ser multiplataforma (ver texto del enlace , texto del enlace ...).
Escribe una vez, ejecuta en cualquier GPGPU, en cualquier lugar.
De lo contrario, las herramientas de OpenCL realmente están mejorando, con un complemento ATI Stream para Visual Studio, los SDK de NVidia y ATI que contienen toneladas de muestras, etc.
Otra opción ahora es C ++ AMP, que le brinda la sintaxis de C ++ moderna sin la necesidad de un compilador separado, al tiempo que conserva la portabilidad del hardware. Por favor, siga los enlaces de aquí para obtener más información y siéntase libre de enviar preguntas, ya que las tiene: http://blogs.msdn.com/b/nativeconcurrency/archive/2011/09/13/c-amp-in-a-nutshell.aspx
Probablemente la mayor diferencia para un codificador es que DirectCompute está programado por un lenguaje similar a HLSL, y OpenCL está programado a través de un lenguaje similar a C.
Otra diferencia a considerar es que, en general, para las GPU a nivel de producto, el soporte de DirectX es mejor (más rápido y con menos errores) que el soporte de OpenGL en Windows. Esto puede traducirse en un soporte más estable para DirectCompute, pero en realidad, esto es solo una especulación.
Utilizo OpenCL porque puedo portar fácilmente mi aplicación a Linux, pero con DirectCompute esto no es posible. También creo que el rendimiento de la implementación de OpenCL aumentará con el tiempo (que tendrá el mismo nivel que CUDA para las tarjetas NVidia) y también que los errores (controladores) (con suerte;)) se eliminarán con el tiempo.