2011-01-18 25 views
9

Qt ha lanzado un buen envoltorio para Opencl (QtOpencl) que hace un buen trabajo al ocultar una gran cantidad de placa de la caldera y hacer que OpenCL juegue bien con el widget de pantalla de Qt y Opengl.envoltorio CUDA para Qt

Pero hay algunas cosas que puedo hacer mejor en Cuda que OpenCL y las herramientas de Cuda son mucho más maduras.

Es relativamente fácil crear un contenedor Cuda C++ simple e integrarlo en el proceso de compilación de Qt, pero me preguntaba si alguien había hecho algo más. Idealmente, una biblioteca equivalente QtCuda.

Las personas Qt no están interesados ​​en apoyo Cuda porque no es lo suficientemente multiplataforma

edición: Sólo para la búsqueda, hay un envoltorio para OpenGL Qt CUDA PBO. Está basado en el Dr. Dobbs simplePBO example. Hay un par de correcciones de errores necesarias para que funcione bien con Cuda4, pero es un buen comienzo.

ps no hay forma de contactar al autor del blog y los comentarios no funcionan, si encuentra esto, hágamelo saber y le enviaré las correcciones.

Respuesta

8

Las personas Qt no están interesados ​​en apoyo Cuda porque no es lo suficientemente multiplataforma

Exactamente. Si quieres ignorar esto, no entiendes la filosofía de Qt. ¿Y por qué crear aún más código heredado, mientras que es fácil traducir sus kernels existentes a OpenCL con MultiscaleLab Swan?

Pero la fuente de la biblioteca se puede descargar y usar de manera gratuita como base.

+5

Depende de su definición de legado! Con Cuda, mi aplicación se ejecutará en una cámara CCTV utilizando un chipset Tegra. Con OpenCL estoy atascado corriendo en CPUs "heredadas" en PC. Necesito que esto sea Cuda porque algunas personas han portado algunas librerías muy complejas a Cuda, es menos trabajo ajustar Cuda para mi aplicación que implementar y probar todas las matemáticas en OpenCL. Al tener todo incluido en Qt puedo usar Cuda o OpenCL mucho más fácilmente. –

+1

Este sería un buen punto, si fuera cierto; La lista oficial http://www.nvidia.com/object/cuda_gpus.html no habla de Tegra en absoluto. También una CCTV con Qt sería bastante extraña, ya que su fuerte enfoque en el desarrollo de GUI. Los CUDA-libs a los que se refiere no están portados a ARM; las librerías de código abierto son portadas principalmente a OpenCL. El código con puerto tiene la misma matemática, ya que CUDA y OpenCL son una especie de dialectos incompatibles. –

+1

Lo siento, no me he aclarado. Dos razones para ir a Cuda, una es que los chipsets incrustados de NVidia (como Tegra) con Cuda están reemplazando DSP personalizados en muchas aplicaciones integradas (especialmente visión artificial), el otro es mucho código de procesamiento de imágenes y matemáticas existente en Cuda. El Qt era para el prototipado de escritorio, teniendo Qt hacer todo el boilerplating específico de OpencL/GPU y me permitiría cambiar fácilmente entre ellos en la etapa de prototipo. –

3

La manera en que lo hice fue construir una DLL en Visual Studio, llamada combada CUDA Function entre las funciones normales de C exportado. Usaron LoadLibrary y GetProcAddress de QT IDE. En general, funcionó bastante bien.