Todos tienen esta enorme supercomputadora paralela masiva en su escritorio en forma de tarjeta gráfica GPU.
- ¿Cuál es el equivalente de "hola mundo" de la comunidad de GPU?
- ¿Qué hago, a dónde voy, para comenzar a programar la GPU para los principales proveedores de GPU?
-Adán
Respuestas:
Echa un vistazo a CUDA by NVidia, IMO es la plataforma más fácil para hacer programación de GPU. Hay toneladas de materiales geniales para leer. http://www.nvidia.com/object/cuda_home.html
Hola mundo sería hacer cualquier tipo de cálculo con GPU.
Espero que ayude.
fuente
fuente
Creo que los demás han respondido tu segunda pregunta. En cuanto al primero, el "Hola Mundo" de CUDA, no creo que haya un estándar establecido, pero personalmente, recomendaría un sumador paralelo (es decir, un programa que suma N enteros).
Si observa el ejemplo de "reducción" en el SDK de NVIDIA, la tarea superficialmente simple puede extenderse para demostrar numerosas consideraciones de CUDA, como lecturas fusionadas, conflictos de bancos de memoria y desenrollamiento de bucles.
Vea esta presentación para más información:
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
fuente
Eche un vistazo al SDK de ATI Stream Computing . Está basado en BrookGPU desarrollado en Stanford.
En el futuro, todo el trabajo de GPU se estandarizará con OpenCL . Es una iniciativa patrocinada por Apple que será neutral para los proveedores de tarjetas gráficas.
fuente
OpenCL es un esfuerzo para crear una biblioteca multiplataforma capaz de programar código adecuado para, entre otras cosas, GPU. Le permite a uno escribir el código sin saber en qué GPU se ejecutará, lo que facilita el uso de parte de la potencia de la GPU sin tener como objetivo específicamente varios tipos de GPU. Sospecho que no es tan eficaz como el código de GPU nativo (o tan nativo como lo permitirán los fabricantes de GPU), pero la compensación puede valer la pena para algunas aplicaciones.
Todavía está en sus etapas relativamente tempranas (1.1 a partir de esta respuesta), pero ha ganado algo de tracción en la industria, por ejemplo, es compatible de forma nativa con OS X 10.5 y superior.
fuente
CUDA es un excelente marco para comenzar. Le permite escribir núcleos GPGPU en C. El compilador producirá microcódigo GPU a partir de su código y enviará todo lo que se ejecuta en la CPU a su compilador habitual. Sin embargo, es NVIDIA y solo funciona en tarjetas de la serie 8 o superior. Puede consultar la zona CUDA para ver qué se puede hacer con ella. Hay algunas demostraciones excelentes en el SDK de CUDA . La documentación que viene con el SDK es un buen punto de partida para escribir código. Le guiará a través de la escritura de un núcleo de multiplicación matricial, que es un excelente lugar para comenzar.
fuente
Otra forma fácil de ingresar a la programación de GPU, sin ingresar a CUDA u OpenCL, es hacerlo a través de OpenACC .
OpenACC funciona como OpenMP, con directivas de compilación (como
#pragma acc kernels
) para enviar trabajo a la GPU. Por ejemplo, si tiene un bucle grande (solo los más grandes realmente se benefician):Editar: desafortunadamente, solo el compilador PGI realmente admite OpenACC en este momento, para tarjetas GPU NVIDIA.
fuente
Prueba GPU ++ y libSh
El enlace LibSh tiene una buena descripción de cómo unen el lenguaje de programación a las primitivas gráficas (y obviamente, las primitivas mismas), y GPU ++ describe de qué se trata, ambos con ejemplos de código.
fuente
Si usa MATLAB, se vuelve bastante simple usar GPU para computación técnica (computaciones matriciales y cálculo de números / matemática). Lo encuentro útil para usos de tarjetas GPU fuera de los juegos. Revisa el enlace a continuación:
http://www.mathworks.com/discovery/matlab-gpu.html
fuente