Introducción a la programación de GPU [cerrado]


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

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

-Adam

 153
gpu
Author: George Stocker, 2008-10-21

11 answers

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

Hello world sería hacer cualquier tipo de cálculo usando GPU.

Espero que eso ayude.

 62
Author: Nazgob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-22 23:35:15
  1. Se obtiene el vértice programable y sombreadores de píxeles que permiten la ejecución de código directamente en la GPU a manipular los búferes que son para ser dibujado. Estas lenguas (es decir, OpenGL GL Shader Lang y Alta Nivel 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 Directo X. no tengo cualquier referencia decente GLSL, pero estoy seguro que hay mucho por aquí. Estos idiomas de sombreado dan un inmenso cantidad de poder a manipular lo que se dibuja en un vértice por o nivel por píxel, directamente en la tarjeta gráfica, haciendo cosas como sombras, iluminación y florecimiento muy fácil de implementar.
  2. La segunda cosa que viene a la mente es usar OpenCL para codificar el nuevo líneas de GPU de propósito general. no estoy seguro de cómo usar esto, pero mi la comprensión es que OpenCL da los comienzos de ser capaz de procesadores de acceso tanto en el tarjeta gráfica y cpu normal. Esto es no es la tecnología dominante todavía, y parece ser impulsado por Apple.
  3. CUDA parece ser un tema candente. CUDA es la forma de nVidia de acceder a la potencia de la GPU. Aquí hay algunas intros
 16
Author: DavidG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-23 22:56:53

Creo que los otros han respondido a su segunda pregunta. En cuanto a la primera, 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 se puede extender para demostrar numerosas consideraciones CUDA, como lecturas fusionadas, conflictos de bancos de memoria y desenrollado de bucles.

Consulte esta presentación para obtener más información info:

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

 8
Author: biozinc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-23 08:51:21

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

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

 7
Author: graphics,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-20 21:30:43

CUDA es un excelente framework para empezar. 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 regular. Sin embargo, solo es NVIDIA y solo funciona en tarjetas de la serie 8 o superior. Puede consultar CUDA zone para ver qué se puede hacer con ella. Hay algunas grandes demos en el SDK de CUDA. La documentación que viene con el SDK es un buen punto de partida para la realidad escribiendo código. Te guiará a través de la escritura de un núcleo de multiplicación de matrices, que es un gran lugar para comenzar.

 6
Author: Jay Conrod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-20 21:35:31

OpenCL es un esfuerzo para hacer una biblioteca multiplataforma capaz de programar código adecuado para, entre otras cosas, GPU. Permite 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 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 los fabricantes de GPU permitirán), pero la compensación puede valer la pena para algunas aplicaciones.

Es todavía 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 superiores.

 5
Author: Adam Davis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-25 16:31:48

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

OpenACC funciona como OpenMP, con directivas de compilador (como #pragma acc kernels) para enviar el trabajo a la GPU. Por ejemplo, si tiene un bucle grande (solo los más grandes realmente se benefician):

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 PGI realmente soporta OpenACC en este momento, para tarjetas GPU NVIDIA.

 4
Author: Kyle Niemeyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-19 19:16:37

Try GPU++ y libSh

LibSh link tiene una buena descripción de cómo enlazaron el lenguaje de programación a los gráficos primitivos (y obviamente, los primitivos mismos), y GPU++ describe de qué se trata, ambos con ejemplos de código.

 3
Author: gbjbaanb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-20 21:23:43

Tal vez te guste este IDE GPGPU, que oculta la complejidad innecesaria para experimentos generales de GPU. Actualmente los kernels pueden ser programados para shaders OpenCL y/o GLSL.

 3
Author: Agnius Vasiliauskas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-25 19:30:15

Si utiliza MATLAB, se vuelve bastante simple usar GPU para computación técnica (cálculos matriciales y cálculos matemáticos/numéricos pesados). Me parece útil para el uso de tarjetas GPU fuera de los juegos. Echa un vistazo al siguiente enlace:

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

 3
Author: Chetan Rawal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-07 16:40:08

También me interesa este tema y la Programación Paralela. Y encontré el siguiente enlace , por favor, echa un vistazo a Udacity.com

 1
Author: Randika Vishman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-01 06:21:59