ultima tutorial programar mundo hola ejemplos aplicaciones gpu

gpu - tutorial - hola mundo en cuda



Introducción a la programación de GPU (11)

Todos tienen este enorme superordenador masivamente paralelizado en su escritorio en la forma de una GPU de tarjeta gráfica.

  • ¿Cuál es el equivalente de "hello world" de la comunidad GPU?
  • ¿Qué hago, a dónde voy, para comenzar a programar la GPU para los principales proveedores de GPU?

-Adán


  1. Obtiene sombreadores de vértices y píxeles programables que permiten la ejecución de código directamente en la GPU para manipular los búferes que se van a dibujar. Estos lenguajes (es decir, GL Shader Lang de OpenGL y High Level Shader Lang y los equivalentes de DirectX), son sintaxis de estilo C y realmente fáciles de usar. Algunos ejemplos de HLSL se pueden encontrar here para XNA game studio y Direct X. No tengo referencias GLSL decentes, pero estoy seguro de que hay muchas por aquí. Estos lenguajes de sombreado proporcionan una gran cantidad de poder para manipular lo que se dibuja en un nivel por píxel o por píxel, directamente en la tarjeta gráfica, haciendo que cosas como sombras, iluminación y floración sean realmente fáciles de implementar.
  2. Lo segundo que viene a la mente es usar openCL para codificar las nuevas líneas de GPU de propósito general. No estoy seguro de cómo usar esto, pero tengo entendido que openCL te da los comienzos de poder acceder a los procesadores tanto en la tarjeta gráfica como en la CPU normal. Esta no es la tecnología principal aún, y parece ser impulsada por Apple.
  3. http://www.nvidia.com/object/cuda_home.html parece ser un tema candente. CUDA es la forma de nVidia de acceder al poder de la GPU. Here hay algunas introducciones

CUDA es un excelente marco para comenzar. Le permite escribir núcleos GPGPU en C. El compilador generará microcódigo GPU de su código y enviará todo lo que se ejecuta en la CPU a su compilador habitual. Sin embargo, solo es NVIDIA y solo funciona en tarjetas de la serie 8 o mejor. Puede consultar la http://www.nvidia.com/object/cuda_home.html para ver qué se puede hacer con ella. Hay algunas excelentes demostraciones en el SDK de CUDA . La documentación que viene con el SDK es un buen punto de partida para escribir código. Te guiará por la escritura de un núcleo de multiplicación matricial, que es un gran lugar para comenzar.


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 ampliarse para demostrar numerosas consideraciones de CUDA, como lecturas combinadas, conflictos de bancos de memoria y desenrollado de bucles.

Vea esta presentación para más información:

http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf


Echa un vistazo a CUDA por 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 usando GPU.

Espero que ayude.


Eche un vistazo al ATI Stream Computing SDK . Está basado en BrookGPU desarrollado en Stanford.

En el futuro, todos los trabajos de GPU se estandarizarán usando openCL . Es una iniciativa patrocinada por Apple que será neutral para los proveedores de tarjetas gráficas.


Otra manera fácil de ingresar a la programación de la GPU, sin entrar en CUDA o 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 gran bucle (solo los más grandes se benefician realmente):

int i; float a = 2.0; float b[10000]; #pragma acc kernels for (i = 0; i < 10000; ++i) b[i] = 1.0f; #pragma acc kernels for (i = 0; i < 10000; ++i) { b[i] = b[i] * a; }

Editar: lamentablemente, solo el compilador PGI realmente es compatible con OpenACC en este momento, para las tarjetas GPU NVIDIA.


Pruebe GPU++ y libSh

El enlace LibSh tiene una buena descripción de cómo vinculó el lenguaje de programación a las primitivas gráficas (y obviamente, las primitivas), y GPU ++ describe de qué se trata, ambos con ejemplos de código.


Si usa MATLAB, se vuelve bastante simple usar GPU para computación técnica (cálculos de matriz y cálculo pesado de números / matemáticas). Me resulta útil para el uso de tarjetas GPU fuera del juego. Revisa el enlace a continuación:

http://www.mathworks.com/discovery/matlab-gpu.html


Tal vez le guste este GPGPU IDE , que oculta una complejidad innecesaria para los experimentos generales de la GPU. Actualmente los núcleos se pueden programar para sombreadores OpenCL y / o GLSL.


También me interesan este tema y la Programación Paralela. Y encontré el siguiente link , ¡eche un vistazo a Udacity.com!


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 que apuntar específicamente a varios tipos de GPU. Sospecho que no es tan eficiente como el código de GPU nativo (o tan nativo como lo permitan los fabricantes de GPU), pero la compensación puede valer la pena para algunas aplicaciones.

Todavía se encuentra 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 nativamente con OS X 10.5 y superior.