fbpx
Wikipedia

GPGPU

La computación de propósito general en unidades de procesamiento gráfico (GPGPU, del inglés general-purpose computing on graphics processing units) es un concepto reciente dentro de la 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 clusterización, etc.

Modelo de programación de GPU

Debido a las diferencias fundamentales entre las arquitecturas de una GPU y una CPU, no todos los problemas se pueden 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 de distribución, 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 de recolección, 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 búfer 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 sea 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. Una de ellas es BrookGPU, desarrollada en la Universidad de Stanford, consistente en una extensión a ANSI C que proporciona nuevos tipos de datos y operaciones (flujo de datos, núcleo, reducción, 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. La opción más extendida en la actualidad es CUDA, de NVidia, una extensión de C que permite la codificación de algoritmos en GPU de NVidia. Por último, podemos incluir en esta discusión a OpenCL, una combinación de interfaz y lenguaje de programación para el desarrollo de aplicaciones paralelas que puedan ser ejecutadas, de forma transparente, en diversas unidades de procesamiento (CPU multinúcleo, GPU, etc.).

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 versión, Direct3D 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 sombreadores 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. Pruebas recientes hablan de que son posibles ganancias de rendimiento de hasta 40 veces una CPU Pentium 4 de Intel, aunque claro, todo esto depende de la GPU utilizada.

Véase también

Enlaces externos

  • (en inglés).
  • Página del proyecto BrookGPU (en inglés).
  • Página de soporte GPU para Folding@home (en inglés).
  • (en inglés).
  • (en español).
  • (en inglés).
  •   Datos: Q971505

gpgpu, computación, propósito, general, unidades, procesamiento, gráfico, inglés, general, purpose, computing, graphics, processing, units, concepto, reciente, dentro, informática, trata, estudiar, aprovechar, capacidades, cómputo, procesador, diseñado, para, . La computacion de proposito general en unidades de procesamiento grafico GPGPU del ingles general purpose computing on graphics processing units es un concepto reciente dentro de la informatica que trata de estudiar y aprovechar las capacidades de computo de una GPU Una GPU es un procesador disenado para los computos implicados en la generacion de graficos 3D interactivos Algunas de sus caracteristicas bajo precio en relacion a su potencia de calculo gran paralelismo optimizacion para calculos en coma flotante se consideran atractivas para su uso en aplicaciones fuera de los graficos por computadora especialmente en el ambito cientifico y de simulacion Asi se han desarrollado tecnicas para la implementacion de simulaciones de fluidos bases de datos algoritmos de clusterizacion etc Indice 1 Modelo de programacion de GPU 2 Herramientas 3 Criticas 4 Otros 5 Vease tambien 6 Enlaces externosModelo de programacion de GPU EditarDebido a las diferencias fundamentales entre las arquitecturas de una GPU y una CPU no todos los problemas se pueden beneficiar de una implementacion en la GPU En concreto el acceso a memoria plantea las mayores dificultades Las CPU estan disenadas para el acceso aleatorio a memoria Esto favorece la creacion de estructuras de datos complejas con punteros a posiciones arbitrarias en memoria En cambio en una GPU el acceso a memoria esta mucho mas restringido Por ejemplo en un procesador de vertices la parte de una GPU disenada para transformar vertice en aplicaciones 3D se favorece el modelo de distribucion en el que el programa lee en una posicion predeterminada de la memoria pero escribe en una o varias posiciones arbitrarias En cambio un procesador de pixeles o fragmentos favorece el modelo de recoleccion pudiendo el programa leer de varias posiciones arbitrarias pero escribir en solo una posicion predeterminada La tarea del disenador de algoritmos GPGPU consiste principalmente en adaptar los accesos a memoria y las estructuras de datos a las caracteristicas de la GPU Generalmente la forma de almacenar datos es en un bufer 2D en lugar de lo que normalmente seria una textura El acceso a esas estructuras de datos es el equivalente a una lectura o escritura de una posicion en la textura Puesto que generalmente no se puede leer y escribir en la misma textura si esta operacion es imprescindible para el desarrollo del algoritmo este se debe dividir en varias pasadas Pese a que cualquier algoritmo que sea implementable en una CPU lo es tambien en una GPU esas implementaciones no seran 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 aritmetica son los que mayores beneficios obtienen de su implementacion en la GPU Herramientas EditarTradicionalmente el desarrollo de software GPGPU se habia hecho bien en lenguaje ensamblador o bien en alguno de los lenguajes especificos para aplicaciones graficas 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 graficos y presentar una interfaz de mas alto nivel Una de ellas es BrookGPU desarrollada en la Universidad de Stanford consistente en una extension a ANSI C que proporciona nuevos tipos de datos y operaciones flujo de datos nucleo reduccion etc automaticamente convertidos a una implementacion que aprovecha la GPU sin intervencion explicita por parte del programador Otra herramienta con objetivos similares es Sh una extension de C para metaprogramacion con una implementacion automatica en la GPU La opcion mas extendida en la actualidad es CUDA de NVidia una extension de C que permite la codificacion de algoritmos en GPU de NVidia Por ultimo podemos incluir en esta discusion a OpenCL una combinacion de interfaz y lenguaje de programacion para el desarrollo de aplicaciones paralelas que puedan ser ejecutadas de forma transparente en diversas unidades de procesamiento CPU multinucleo GPU etc Criticas EditarPese a que las ventajas del uso de la GPU para ciertas aplicaciones es evidente no faltan las criticas generalmente referidas a la inconveniencia de usar un procesador para fines completamente diferentes a lo que se pensaba al disenarlos Un argumento comun es la falta de continuidad de las arquitecturas usadas Debido a la rapida evolucion del hardware grafico implementaciones de algoritmos que funcionaban optimamente en un modelo de GPU dejan de hacerlo o lo hacen suboptimamente en un modelo posterior Otra critica es la falta de precision de los registros de coma flotante presentes en las GPU Generalmente se utilizan 2 o 4 bytes para representar un numero real en una GPU que en comparacion con los 4 8 o mas usados en las CPU modernas no es suficiente para muchas aplicaciones cientificas Otros EditarMicrosoft ha terminado de desarrollar la nueva version 11 de su API Direct3D A pesar de que la anterior version Direct3D 10 es relativamente nueva debido a la cantidad de novedades que estan apareciendo ultimamente en el mundo de las tarjetas graficas entre ellas el teselado Microsoft desarrollo esta nueva version en la que cabe destacar la nueva tecnologia de computacion de sombreadores para permitir que la GPU no sea solamente usada para graficos 3D y asi puedan los desarrolladores tomar ventaja de las tarjetas graficas como procesadores en paralelo El proyecto de computacion distribuida Folding home creado por la Universidad de Stanford ha dado soporte para utilizar la potencia computacional de la GPU ademas de la CPU Pruebas recientes hablan de que son posibles ganancias de rendimiento de hasta 40 veces una CPU Pentium 4 de Intel aunque claro todo esto depende de la GPU utilizada Vease tambien EditarCUDA Close to Metal Graphics Processing Unit Larrabee GPU OpenCL Intel MIC Direct Rendering ManagerEnlaces externos EditarPortal que aglomera noticias publicaciones y enlaces sobre el avance de GPGPU en ingles Pagina del proyecto BrookGPU en ingles Pagina de soporte GPU para Folding home en ingles Pagina del proyecto Sh en ingles Explicacion sobre sus posibilidades en espanol Articulo que explica algunos beneficios en ingles Datos Q971505 Obtenido de https es wikipedia org w index php title GPGPU amp oldid 120722957, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos