c++ - que - OpenCL o CUDA ¿Qué camino tomar?
nvidia cuda (3)
Mis experiencias personales fueron:
API: OpenCL tiene una API más compleja. Sin embargo, pasará la mayor parte del tiempo escribiendo código del kernel, y aquí ambos son casi idénticos.
Comunidad: CUDA tiene una comunidad mucho más grande que OpenCL hasta ahora, pero es probable que esto esté a punto de compensarse.
Documentación: Ambos están muy bien documentados.
Rendimiento: adquirimos la experiencia de que los controladores OpenCL aún no están totalmente optimizados.
Futuro: ¡El futuro está en OpenCL ya que es un estándar abierto, no restringido a un proveedor o hardware específico!
Esta evaluación es de 2010, por lo que probablemente esté desactualizada.
Estoy investigando formas de usar GPU para procesar datos de transmisión. Tenía dos opciones, pero no podía decidir qué camino tomar.
Mis criterios son los siguientes:
- Facilidad de uso (buena API)
- Comunidad y Documentación
- Actuación
- Futuro
Codificaré en C y C ++ bajo linux.
OpenCL hasta el final, a menos que tenga una razón específica para usar CUDA. OpenCL se ejecuta bien en multinúcleos como Intel i7 además de ejecutarse en GPU. Al utilizar OpenCL, puede ejecutarlo en una gama mucho más amplia de hardware, desde teléfonos celulares Droid a los nodos de computación IBM Power7 de la supercomputadora más grande del mundo, Blue Waters , que se espera que esté disponible el próximo año.
OpenCL
- interconectado desde su código de producción
- Portátil entre diferentes hardware de gráficos.
- Operaciones limitadas pero atajos prepreparados
CUDA
- idioma separado (CUDA C)
- solo hardware nVidia
- Control casi total sobre el código (codificación en un lenguaje similar a C)
- gran cantidad de herramientas de perfilado y depuración
Línea inferior: OpenCL es portátil, CUDA es solo nVidia. Sin embargo, al ser un lenguaje independiente, CUDA es mucho más poderoso y tiene un montón de herramientas realmente buenas.
- Facilidad de uso : OpenCL es más fácil de usar de inmediato, pero una vez que configura el entorno de codificación CUDA es casi como codificar en C.
- Comunidad y documentación : ambos tienen una amplia documentación y ejemplos, sin embargo, creo que CUDA tiene mejor.
- Rendimiento : CUDA permite un mayor control, por lo tanto, puede ajustarse mejor para un mayor rendimiento.
- Futuro - difícil de decir realmente.