kali gpus geforce developer cuda gpu gpgpu gpu-programming

gpus - Programación de GPU, CUDA o OpenCL?



opencl nvidia (2)

Soy un novato en la programación de GPU. Tengo una laptop con tarjeta NVIDIA GeForce GT 640. Me enfrento con 2 dilemas, las sugerencias son bienvenidas.

  1. Si uso CUDA - Ubuntu o Windows Clearly CUDA es más adecuado para Windows, aunque puede ser un problema grave instalarlo en Ubuntu. He visto algunos blogs que afirman haber instalado CUDA 5 en Ubuntu 11.10 y Ubuntu 12.04 . Sin embargo, no he podido hacer que trabajen. Además, los libros de texto estándar de CUDA prefieren trabajar en el dominio de Windows y son más o menos silenciosos en lo que respecta a la instalación y el funcionamiento de Unix / Ubuntu.

  2. CUDA o OpenCL : ¡ahora es más complicado que mi primera pregunta! En su mayoría me he encontrado con proyectos de GPGPU usando CUDA / Nvidia, pero OpenCL es probablemente la siguiente mejor opción en código abierto y la instalación en Ubuntu probablemente no sea un problema, aunque algunas sugerencias aquí serán más útiles. ¿Estoy sacrificando cualquier funcionalidad si uso OpenCL y NO CUDA?

¿Alguna ayuda o sugerencia?


  1. Si usa OpenCL, puede usarlo fácilmente tanto en Windows como en Linux, ya que tener controladores de pantalla es suficiente para ejecutar los programas de OpenCL y, para la programación, simplemente necesita instalar el SDK. CUDA tiene más requisitos en versiones específicas de GCC, etc. Pero tampoco es mucho más difícil de instalar en Linux.

  2. En Linux, CUDA tiene requisitos extraños, como usar GCC 4.6 o 4.7. Si usa una versión diferente de GCC, ya no podrá compilar su programa. Si usa OpenCL, puede usar cualquier compilador porque solo necesita vincularlo con la biblioteca común de OpenCL. Entonces OpenCL es más fácil de configurar, usar y compilar. Una vez que compila un programa OpenCL, puede ejecutarse en cualquier hardware (siempre que esté codificado para hacerlo), incluso si se compiló utilizando el OpenCL SDK de otra marca.

Puede escribir programas OpenCL que funcionarán en hardware Nvidia, AMD e Intel, en GPU, CPU y aceleradores. ¡Aún más, Altera está trabajando para soportar OpenCL en FPGA! Si usa CUDA, tendrá que usar GPU de Nvidia solamente y volver a escribir su código nuevamente en OpenCL u otro idioma para otras plataformas. Una seria limitación de usar CUDA y una gran pérdida de tiempo a largo plazo.

Veo que alguien publicó algunas referencias antiguas entre CUDA y OpenCL, ¡pero ya son viejas! Cuando esos documentos estaban fuera, solo AMD soportaba OpenCL correctamente. Desde 2013, OpenCL es compatible con ARM, Altera, Intel, etc. y se convirtió en un estándar de la industria.

El único inconveniente es que, dado que OpenCL es tan flexible, se enfrenta a más opciones y formas de codificar asignaciones de memoria, transferencias, etc. en su programa. Por lo tanto, puede sentirse más complicado, tal vez.


Creo que no es muy difícil configurar el entorno de cuda en Ubuntu, puedes intentarlo.

Como estudiante de arquitectura informática, creo que debes aprender tanto de OpenCL como de CUDA. Y debe aprender cuda primero porque CUDA expone más hardware e información de tiempo de ejecución, la conciencia del hardware es muy importante cuando quiere optimizar sus códigos GPU.