2008-10-20 88 views
138

Todo el mundo tiene esta gran supercomputadora masivamente paralelizada en su escritorio en forma de tarjeta gráfica GPU.Introducción a la programación de GPU

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

-Adam

+1

¿Estás hablando de GPGPU o codificación de gráficos? – Menkboy

+4

Habla de CUDA (una API para nVidia GPU) y otras técnicas. Uso de las unidades FPU disponibles en GPU para codificación no gráfica. – Wedge

+0

Como referencia, una GeForce 8800 de última generación tiene 128 procesadores de flujo que funcionan a ~ 1.3 GHz, una parte superior de la línea GTX 280 tiene 240 procesadores de flujo, el rendimiento teórico de estas GPU es de 0.5 y 0.9 TeraFLOPS, respectivamente. – Wedge

Respuesta

56

Salida CUDA de Nvidia, la OMI es la plataforma más fácil de hacer la programación de la 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 que utiliza la GPU.

Espero que ayude.

13
  1. Usted recibe vértice programable y sombreadores de píxeles que permiten la ejecución de código directamente en la GPU para manipular los tampones que se van a ser dibujado. Estos lenguajes (es decir, OpenGL GL Shader Lang y Alto Level Shader Lang y los equivalentes de DirectX ), son sintaxis de estilo C, y realmente fáciles de usar. Se pueden encontrar algunos ejemplos de HLSL here para XNA game studio y Direct X. No tengo ninguna referencia decente de GLSL, pero estoy seguro de que hay mucho alrededor. Estos lenguajes de sombreado dan una inmensa cantidad de energía a manipular lo que se ve arrastrado a un nivel por vértice o por píxel, directamente en la tarjeta gráfica, haciendo las cosas como sombras, iluminación, y florecer muy fácil implementar.
  2. Lo segundo que viene a la mente es usar openCL para codificar las nuevas líneas de GPU de propósito general. Estoy no estoy seguro de cómo usar esto, pero mi comprensión es que openCL da que los comienzos de poder procesadores de acceso tanto en la tarjeta gráfica y la CPU normal. Esta no es la tecnología principal aún, y parece ser impulsada por Apple.
  3. CUDA parece ser un tema candente. CUDA es la forma de nVidia de acceder al poder de la GPU. Here son algunas introducciones
3

Trate GPU++ y libSh

enlace LibSh tiene una buena descripción de cómo ataron el lenguaje de programación a las primitivas gráficas (y, obviamente, las primitivas mismas), y la GPU ++ describe lo que su todo sobre, ambos con ejemplos de código.

7

Eche un vistazo a ATI Stream Computing SDK. Se basa en BrookGPU desarrollado en Stanford.

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

6

CUDA es un marco excelente para empezar. 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 CUDA zone para ver qué se puede hacer con él. Hay algunas excelentes demos en el CUDA SDK. 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.

8

Creo que los demás han respondido a su 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 mira 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.

Ver esta presentación para obtener más información:

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

3

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

+0

Tu enlace está roto. – user

+0

El enlace está arreglado ahora –

5

OpenCL es un esfuerzo para hacer 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 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 nativamente con OS X 10.5 y superior.

3

Otra forma fácil de acceder a la programación de la GPU, sin entrar en CUDA o OpenCL, es hacerlo a través del OpenACC.

OpenACC funciona como OpenMP, con directivas de compilación (como #pragma acc kernels) para enviar trabajos a la GPU. Por ejemplo, si usted tiene un gran lazo (los más grandes sólo se beneficiarán 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: por desgracia, sólo el compilador PGI realmente apoya OpenACC en este momento, para las tarjetas de NVIDIA GPU.

3

Si usa MATLAB, se hace 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. Echa un vistazo al siguiente enlace:

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

1

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

Cuestiones relacionadas