GPGPU

GPGPU

GPGPU o General-Purpose Computing on Graphics Processing Units es un concepto reciente dentro de informática que trata de estudiar y aprovechar las capacidades de cómputo de una GPU.

Una GPU es un procesador diseñado para los cómputos implicados en la generación de gráficos 3D interactivos. Algunas de sus características (bajo precio en relación a su potencia de cálculo, gran paralelismo, optimización para cálculos en coma flotante), se consideran atractivas para su uso en aplicaciones fuera de los gráficos por computadora, especialmente en el ámbito científico y de simulación. Así, se han desarrollado técnicas para la implementación de simulaciones de fluidos, bases de datos, algoritmos de clustering, etc.

Contenido

Modelo de programación GPU

Debido a las diferencias fundamentales entre las arquitecturas de la GPU y la CPU, no cualquier problema se puede beneficiar de una implementación en la GPU. En concreto, el acceso a memoria plantea las mayores dificultades. Las CPU están diseñadas para el acceso aleatorio a memoria. Esto favorece la creación de estructuras de datos complejas, con punteros a posiciones arbitrarias en memoria. En cambio, en una GPU, el acceso a memoria está mucho más restringido. Por ejemplo, en un procesador de vértices (la parte de una GPU diseñada para transformar vértice en aplicaciones 3D), se favorece el modelo scatter, en el que el programa lee en una posición predeterminada de la memoria, pero escribe en una o varias posiciones arbitrarias. En cambio, un procesador de píxeles, o fragmentos, favorece el modelo gather, pudiendo el programa leer de varias posiciones arbitrarias, pero escribir en sólo una posición predeterminada.

La tarea del diseñador de algoritmos GPGPU consiste principalmente en adaptar los accesos a memoria y las estructuras de datos a las características de la GPU. Generalmente, la forma de almacenar datos es en un buffer 2D, en lugar de lo que normalmente sería una textura. El acceso a esas estructuras de datos es el equivalente a una lectura o escritura de una posición en la textura. Puesto que generalmente no se puede leer y escribir en la misma textura, si esta operación es imprescindible para el desarrollo del algoritmo, éste se debe dividir en varias pasadas.

Pese a que cualquier algoritmo que es implementable en una CPU lo es también en una GPU , esas implementaciones no serán igual de eficientes en las dos arquitecturas. En concreto, los algoritmos con un alto grado de paralelismo, sin necesidad de estructuras de datos complejas, y con una alta intensidad aritmética, son los que mayores beneficios obtienen de su implementación en la GPU.

Herramientas

Tradicionalmente, el desarrollo de software GPGPU se había hecho bien en lenguaje ensamblador, o bien en alguno de los lenguajes específicos para aplicaciones gráficas usando la GPU, como GLSL, Cg o HLSL. Pero recientemente han surgido herramientas para facilitar el desarrollo de aplicaciones GPGPU, al abstraer muchos de los detalles relacionados con los gráficos, y presentar una interfaz de más alto nivel. La herramienta de mayor éxito por el momento es BrookGPU, desarrollada en la Universidad de Stanford, consistente en una extensión a ANSI C que proporciona nuevos tipos de datos y operaciones ("stream", "kernel", "reduction", etc.) automáticamente convertidos a una implementación que aprovecha la GPU sin intervención explícita por parte del programador. Otra herramienta con objetivos similares es Sh, una extensión de C++ para metaprogramación con una implementación automática en la GPU.

Críticas

Pese a que las ventajas del uso de la GPU para ciertas aplicaciones es evidente, no faltan las críticas, generalmente referidas a la inconveniencia de usar un procesador para fines completamente diferentes a lo que se pensaba al diseñarlos. Un argumento común es la falta de continuidad de las arquitecturas usadas. Debido a la rápida evolución del hardware gráfico, implementaciones de algoritmos que funcionaban óptimamente en un modelo de GPU, dejan de hacerlo, o lo hacen subóptimamente en un modelo posterior. Otra crítica es la falta de precisión de los registros de coma flotante presentes en las GPU. Generalmente, se utilizan 2 o 4 bytes para representar un número real en una GPU, que en comparación con los 4, 8 o más usados en las CPU modernas, no es suficiente para muchas aplicaciones científicas.

Otros

Microsoft ha terminado de desarrollar la nueva versión 11 de su API Direct3D. A pesar de que la anterior version, DirectX 10, es relativamente nueva, debido a la cantidad de novedades que están apareciendo últimamente en el mundo de las tarjetas gráficas, entre ellas el teselado, Microsoft desarrolló esta nueva versión, en la que cabe destacar la nueva tecnología de computación de shaders para permitir que la GPU no sea solamente usada para gráficos 3D y así puedan los desarrolladores tomar ventaja de las tarjetas gráficas como procesadores en paralelo.

El proyecto de computación distribuida Folding@home, creado por la Universidad de Stanford, ha dado soporte para utilizar la potencia computacional de la GPU, además de la CPU. Tests recientes hablan de que son posibles ganancias de rendimiento de hasta 40 veces una CPU Intel Pentium 4, aunque claro, todo esto depende de la GPU utilizada.

Véase también

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Mira otros diccionarios:

  • GPGPU — General purpose computing on graphics processing units (GPGPU, also referred to as GPGP and to a lesser extent GP²) is the technique of using a GPU, which typically handles computation only for computer graphics, to perform computation in… …   Wikipedia

  • GPGPU — General Purpose Computation on Graphics Processing Unit, kurz GPGPU, bezeichnet die Verwendung des Grafikprozessors zur Berechnung von Aufgaben, die in keinem Zusammenhang mit der eigentlichen Grafikberechnung stehen. Dies können z. B.… …   Deutsch Wikipedia

  • GPGPU — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью …   Википедия

  • GPGPU — General Purpose Processing on Graphics Processing Units GPGPU est l abréviation de General Purpose Processing on Graphics Processing Units, c est à dire calcul générique sur un processeur graphique. GPGPU en modèle de remplacement du CPU Jusqu à… …   Wikipédia en Français

  • General-Purpose Processing on Graphics Processing Units — GPGPU est l abréviation de General Purpose Processing on Graphics Processing Units, c est à dire calcul générique sur un processeur graphique afin de bénéficier de leur capacité de traitement massivement parallèle. Sommaire 1 GPGPU en modèle de… …   Wikipédia en Français

  • BrookGPU — is the Stanford University Graphics group s compiler and runtime implementation of the Brook stream programming language for using modern graphics hardware for non graphical, or general purpose computations. Use of Graphics Processing Unit (or… …   Wikipedia

  • Graphics processing unit — GPU redirects here. For other uses, see GPU (disambiguation). GeForce 6600GT (NV43) GPU A graphics processing unit or GPU (also occasionally called visual processing unit or VPU) is a specialized circuit designed to rapidly manipulate and alter… …   Wikipedia

  • CUDA — Developer(s) Nvidia Corporation Stable release 4.0 / May 17 2011; 6 months ago (May 17 2011) Operating system Windows XP and later Mac OS X Linux …   Wikipedia

  • General Purpose Computation on Graphics Processing Unit — (kurz GPGPU, vom Englischen für Allzweck Berechnung auf Grafikprozessoreinheit(en)) bezeichnet die Verwendung eines Grafikprozessors für Berechnungen über seinen ursprünglichen Aufgabenbereich hinaus. Dies können beispielsweise Berechnungen zu… …   Deutsch Wikipedia

  • Larrabee (GPU) — Larrabee is the codename for a graphics processing unit (GPU) chip that Intel is developing separately from its current line of integrated graphics accelerators. The video card containing Larrabee is expected to compete with GeForce and Radeon… …   Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”