Pregunta

Todo el mundo tiene esta enorme supercomputadora masivamente paralelizada en su escritorio en forma de una tarjeta gráfica GPU.

  • ¿Qué es el " hola mundo " ¿Equivale a la comunidad de GPU?
  • ¿Qué hago, a dónde voy, para comenzar a programar la GPU para los principales proveedores de GPU?

-Adam

¿Fue útil?

Solución

Echa un vistazo a CUDA by NVidia, IMO es la plataforma más sencilla para realizar la programación de GPU. Hay toneladas de materiales frescos para leer. http://www.nvidia.com/object/cuda_home.html

Hola mundo sería hacer cualquier tipo de cálculo utilizando GPU.

Espero que ayude.

Otros consejos

  1. Obtienes vértice programable y Sombreadores de píxeles que permiten la ejecución. de código directamente en la GPU para manipular los buffers que son para ser dibujado. Estos idiomas (es decir, OpenGL GL GL Shader y High Niveles Shader Lang y equivalentes de DirectX ), son sintaxis de estilo C, y realmente fácil de usar. Algunos ejemplos de HLSL se puede encontrar aquí para el juego XNA Estudio y Direct X. No tengo cualquier referencia GLSL decente, pero estoy Seguro que hay mucho alrededor. Estas Los lenguajes de sombreado dan un inmenso. cantidad de poder para manipular lo que se dibuja en un vértice o por nivel de píxel, directamente en la tarjeta gráfica, haciendo cosas Como sombras, iluminación y floración. Muy fácil de implementar.
  2. La segunda cosa que viene a la mente es usar openCL para codificar el nuevo Lineas de uso general de GPU. soy No estoy seguro de cómo usar esto, pero mi La comprensión es que OpenCL da ustedes los comienzos de poder procesadores de acceso tanto en el Tarjeta gráfica y cpu normal. Esta no es una tecnología generalizada todavía, 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. Aquí hay algunas intros

Creo que los otros han respondido tu segunda pregunta. En cuanto al primero, el " Hello World " 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 la " reducción " Por ejemplo, en el SDK de NVIDIA, la tarea superficialmente simple se puede extender para demostrar numerosas consideraciones de CUDA, como las lecturas fusionadas, los conflictos del banco de memoria y el desenrollado de bucles.

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

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

/ p>

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

En el futuro, todo el trabajo de la GPU se estandarizará con OpenCL . Es una iniciativa patrocinada por Apple que será neutral para el proveedor de tarjetas gráficas.

CUDA es un marco excelente para empezar. Le permite escribir núcleos GPGPU en C. El compilador producirá microcódigo de GPU a partir de su código y enviará todo lo que se ejecuta en la CPU a su compilador regular. Sin embargo, es solo NVIDIA y solo funciona en tarjetas de la serie 8 o superior. Puede consultar zona CUDA para ver qué se puede hacer con esto. Hay algunas demostraciones geniales en el CUDA SDK . La documentación que viene con el SDK es un buen punto de partida para escribir código. Lo guiará a través de la escritura de un núcleo de multiplicación de matrices, que es un excelente lugar para comenzar.

OpenCL es un esfuerzo para hacer que una biblioteca multiplataforma sea capaz de programar código adecuado para, entre Otras cosas, GPUs. Permite que uno escriba el código sin saber en qué GPU se ejecutará, lo que facilita el uso de parte de la potencia de la GPU sin apuntar específicamente a 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 iniciales (1.1 a partir de esta respuesta), pero ha ganado algo de fuerza en la industria, por ejemplo, tiene soporte nativo en OS X 10.5 y superior.

Otra forma fácil de ingresar a la programación de GPU, sin ingresar a 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 bucle grande (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: desafortunadamente, solo el compilador de PGI es compatible con OpenACC en este momento, para las tarjetas GPU de NVIDIA.

Pruebe GPU ++ y libSh

El enlace LibSh tiene una buena descripción de cómo vincularon el lenguaje de programación con los primitivos gráficos (y, obviamente, los propios primitivos), 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 matriciales y matemática pesada / procesamiento de números). Me resulta útil para el uso de tarjetas de GPU fuera del juego. Echa un vistazo al siguiente enlace:

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

También me interesa este tema y la programación paralela. Y encontré el siguiente enlace . ¡Por favor, eche un vistazo a Udacity.com!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top