¿Cuáles son las ventajas y desventajas del desarrollo GPGPU (GPU de propósito general)?


5

Me pregunto cuál es la clave que lo ayuda en el desarrollo de GPGPU y, por supuesto, cuáles son las limitaciones que considera inaceptables.

viene a la mente para mí:

  • ventaja clave: la potencia bruta de estas cosas
  • restricción de clave: el modelo de memoria

Cuál es su opinión?

  0
2

Encontré este artículo interesante sobre cómo las GPU no serán tan necesarias con la velocidad de la CPU y el número de núcleos en constante aumento.

http://arstechnica.com/articles/paedia/gpu-sweeney-interview.ars

  0

bastante me gusta mucho de acuerdo con las opiniones de Tim. Aún más cuando se tiene en cuenta la llegada de Larrabee. 23 sep. 082008-09-23 22:16:38


0

Solía ​​ser interesante por sus arquitecturas paralelas y silicio extra que era mayormente inactivo y por lo tanto podría ser utilizado en el lado de Purpos generales las tareas de programación -

See - http://en.wikipedia.org/wiki/CUDA

pero podría no ser demasiado relevante frente a la respuesta de Lou anterior.


4

Tienes que tener cuidado con la forma de interpretar las declaraciones de Tim Sweeney en esa entrevista de Ars. Está diciendo que tener dos plataformas separadas (la CPU y la GPU), una adecuada para el rendimiento de un solo subproceso y otra adecuada para la informática orientada al rendimiento, pronto será cosa del pasado, a medida que nuestras aplicaciones y hardware crezcan unos hacia los otros.

La GPU creció debido a limitaciones tecnológicas con la CPU, lo que hizo que los algoritmos posiblemente más naturales como el trazado de rayos y el mapeo de fotones casi se puedan deshacer a resoluciones razonables y velocidades de cuadros. Entró la GPU, con un modelo de programación tremendamente diferente y restrictivo, pero tal vez con un rendimiento de 2 o 3 órdenes de magnitud mejor para aplicaciones cuidadosamente codificadas para ese modelo. Los dos modelos de máquina tenían (y todavía tienen) estilos de codificación esencialmente diferentes, idiomas (OpenGL, DirectX, lenguajes de sombreado frente a los lenguajes de escritorio tradicionales) y flujos de trabajo. Esto hace que la reutilización de código, e incluso la reutilización de habilidades de programación/algoritmo, sea extremadamente difícil, y hace que los isquiotibiales cambien a cualquier desarrollador que desee utilizar un sustrato computacional paralelo denso en este modelo de programación restrictivo.

Finalmente, estamos llegando a un punto donde este denso sustrato de cálculo es programable de manera similar a una CPU. Aunque todavía hay un delta de rendimiento considerable entre un "núcleo" de estos aceleradores masivamente paralelos (aunque los hilos de ejecución dentro de, por ejemplo, un SM en el G80, no son exactamente núcleos en el sentido tradicional) y un escritorio x86 moderno núcleo, dos factores impulsan la convergencia de estas dos plataformas:

  • Intel y AMD se están moviendo hacia más, núcleos más simples en chips x86, convergiendo el hardware con la GPU, donde las unidades son cada vez más grano grueso y programable a través del tiempo)
  • Esta y otras fuerzas están generando muchas aplicaciones nuevas que pueden aprovechar el paralelismo de datos o nivel de subprocesos (DLP/TLP), utilizando de manera efectiva este tipo de sustrato.

Entonces, lo que Tim estaba diciendo es que las 2 plataformas distintas convergerán, en un grado aún mayor que, por ejemplo, OpenCl, permite.Una cita destacada de la entrevista:

TS: No, veo exactamente dónde estás encabezado. En la siguiente generación de consolas , las consolas pueden consistir en un solo chip no comercial. Podría ser un procesador general, si evolucionó a partir de un pasado CPU la arquitectura o la GPU arquitectura y que potencialmente podría funcionar todo: los gráficos, la IA, sonido, y todos estos sistemas de una manera completamente homogénea . Eso es un prospecto muy interesante , porque podría simplificar drásticamente el conjunto de herramientas y los procesos para crear el software .

En este momento, durante el envío Unreal 3, tenemos que utilizar varios lenguajes de programación . Usamos un lenguaje de programación para escribir sombreadores de píxeles, otro para escribir el código de juego , y luego en PlayStation 3 usamos otro compilador para escribir el código en ejecutado en el procesador Cell. Por lo que el PlayStation 3 termina siendo un desafío particular , porque hay tiene tres procesadores completamente diferentes de diferentes proveedores con conjuntos de instrucciones diferentes y compiladores diferentes y diferentes técnicas de interpretación . Por lo tanto, un montón de la complejidad es innecesaria y hace que el equilibrio de carga sea más difícil.

Cuando se tiene, por ejemplo, tres fichas diferentes con diferentes capacidades de programación , a menudo tener dos de esos chips sentados sin hacer nada durante gran parte del tiempo, mientras que el otro está al máximo. Pero si la arquitectura es completamente uniforme, entonces puede ejecutar cualquier tarea en cualquier parte del chip en cualquier momento, y obtener la mejor compensación de rendimiento de esa manera.


0

La ventaja clave es gigaflops: potencia bruta. Las desventajas incluyen el conjunto de instrucciones limitado y no ortogonal y el modelo de programación.

Aquí es un documento encuesta: http://graphics.idav.ucdavis.edu/publications/print_pub?pub_id=907

artículo de Wikipedia es un buen comienzo.

Lou Franco señala una entrevista con Tim Sweeney; he aquí las diapositivas de una charla que dio, que cuenta con más detalle: http://www.scribd.com/doc/5687/The-Next-Mainstream-Programming-Language-A-Game-Developers-Perspective-by-Tim-Sweeney

También puede ser que husmear: http://gpgpu.org