한국   대만   중국   일본 
Unidad de procesamiento grafico - Wikipedia, la enciclopedia libre Ir al contenido

Unidad de procesamiento grafico

De Wikipedia, la enciclopedia libre
Unidad de procesamiento grafico.

Una unidad de procesamiento grafico (del ingles graphics processing unit , GPU ) o procesador grafico es un coprocesador dedicado al procesamiento de graficos u operaciones de coma flotante, para aligerar la carga de trabajo del procesador/CPU central en aplicaciones como los videojuegos o aplicaciones 3D interactivas. De esta forma, mientras gran parte de lo relacionado con los graficos se procesa en la GPU, la unidad central de procesamiento (CPU) puede dedicarse a otro tipo de calculos (como la inteligencia artificial o los calculos mecanicos en el caso de los videojuegos ).

La GPU implementa ciertas operaciones graficas llamadas primitivas optimizadas para el procesamiento grafico. Una de las primitivas mas comunes para el procesamiento grafico en 3D es el antialiasing , que suaviza los bordes de las figuras para darles un aspecto mas realista. Adicionalmente existen primitivas para dibujar rectangulos, triangulos, circulos y arcos. Las GPU actualmente disponen de gran cantidad de primitivas, buscando mayor realismo en los efectos.

Las GPU estan presentes en las tarjetas graficas .

Historia [ editar ]

Las modernas GPU son descendientes de los chips graficos monoliticos de finales de la decada de 1970 y 1980. Estos chips tenian soporte BitBLT limitado en la forma de sprites (si es que tenian dicho soporte del todo), y usualmente no tenian soporte para dibujo de figuras. Algunos GPU podian ejecutar varias operaciones en una lista de display y podian usar DMA para reducir la carga en el procesador anfitrion; un ejemplo temprano es el coprocesador ANTIC usado en el Atari 800 y el Atari 5200 . Hacia finales de la decada de 1980 y principios de la de 1990, los microprocesadores de proposito general de alta velocidad fueron muy populares para implementar las GPU mas avanzadas. Muchas tarjetas graficas para PC y estaciones de trabajo usaban procesadores digitales de senales (DSP por sus siglas en ingles) tales como la serie TMS340 de Texas Instruments, para implementar funciones de dibujo rapidas y muchas impresoras laser contenian un procesador de barrido de imagenes "PostScript" (un caso especial de GPU) corriendo en un procesador RISC como el AMD 29000.

Diferencias con la CPU [ editar ]

Si bien en un computador generico no es posible reemplazar la CPU por una GPU, hoy en dia las GPU son muy potentes y pueden incluso superar la frecuencia de reloj de una CPU antigua (mas de 1.5 gigahercios ). Pero la potencia de las GPU y su veloz ritmo de desarrollo reciente se deben a dos factores diferentes. El primer factor es la alta especializacion de las GPU, ya que al estar pensadas para desarrollar una sola tarea, es posible dedicar mas silicio en su diseno para llevar a cabo esa tarea mas eficientemente. Por ejemplo, las GPU actuales estan optimizadas para calculo con valores en coma flotante , predominantes en los graficos 3D .

Por otro lado, muchas aplicaciones graficas conllevan un alto grado de paralelismo inherente, al ser sus unidades fundamentales de calculo ( vertices y pixeles ) completamente independientes. Por tanto, es una buena estrategia usar la fuerza bruta en las GPU para completar mas calculos en el mismo tiempo. Los modelos actuales de GPU suelen tener cientos de procesadores shader unificados que son capaces de actuar como vertex shaders , y como pixel shaders , o fragment shaders . De este modo, una frecuencia de reloj de unos 1-1.9 GHz (el estandar hoy en dia en las GPU de mas potencia), es muy baja en comparacion con lo ofrecido por las CPU (3.8-5 GHz en los modelos mas potentes, no necesariamente mas eficientes), se traduce en una potencia de calculo mucho mayor gracias a su arquitectura en paralelo.

Una de las mayores diferencias con la CPU estriba en su arquitectura. A diferencia del procesador central, que tiene una arquitectura de von Neumann , la GPU se basa en el Modelo Circulante. Este modelo facilita el procesamiento en paralelo, y la gran segmentacion que posee la GPU para sus tareas.

Arquitectura de la GPU [ editar ]

Una GPU esta altamente segmentada, lo que indica que posee gran cantidad de unidades funcionales. Estas unidades funcionales se pueden dividir principalmente en dos: aquellas que procesan vertices (renderizador), y aquellas que procesan pixeles ( rasterizador ). Por tanto, se establecen el vertice y el pixel como las principales unidades que maneja la GPU.

Adicionalmente, y no con menos importancia, se encuentra la memoria . Esta destaca por su rapidez, y va a desempenar un papel relevante a la hora de almacenar los resultados intermedios de las operaciones y las texturas que se utilicen.

Inicialmente, a la GPU le llega la informacion de la CPU en forma de vertices. El primer tratamiento que reciben estos vertices se realiza en el vertex shader . Aqui se realizan transformaciones como la rotacion o el movimiento de las figuras. Tras esto, se define la parte de estos vertices que se va a ver ( clipping ), y los vertices se transforman en pixeles mediante el proceso de rasterizacion. Estas etapas no poseen una carga relevante para la GPU.

Donde si se encuentra el principal cuello de botella del chip grafico es en el siguiente paso: el pixel shader . Aqui se realizan las transformaciones referentes a los pixeles, tales como la aplicacion de texturas. Cuando se ha realizado todo esto, y antes de almacenar los pixeles en la cache , se aplican algunos efectos como el antialiasing , blending y el efecto niebla.

Otras unidades funcionales llamadas unidades de salida de renderizado (ROP, raster operations pipeline ) toman la informacion guardada en la cache y preparan los pixeles para su visualizacion. Tambien pueden encargarse de aplicar algunos efectos. Tras esto, se almacena la salida en el bufer de fotogramas. Ahora hay dos opciones: o tomar directamente estos pixeles para su representacion en un monitor digital, o generar una senal analogica a partir de ellos, para monitores analogicos. Si es este ultimo caso, han de pasar por un DAC , digital-analog converter , para ser finalmente mostrados en pantalla.

Programacion de la GPU [ editar ]

Al inicio, la programacion de la GPU se realizaba con llamadas a servicios de interrupcion de la BIOS . Tras esto, la programacion de la GPU se empezo a hacer en el lenguaje ensamblador especifico a cada modelo. Posteriormente, se introdujo un nivel mas entre el hardware y el software , con la creacion de interfaces de programacion de aplicaciones (API) especificas para graficos, que proporcionaron un lenguaje mas homogeneo para los modelos existentes en el mercado. La primera API usada ampliamente fue el estandar abierto OpenGL (Open Graphics Language), tras el cual Microsoft desarrollo DirectX .

Tras el desarrollo de estas API, se decidio crear un lenguaje mas proximo al natural utilizado por el programador.

Una caracteristica a remarcar de las tarjetas graficas NVIDIA, el lenguaje de programacion maquina debe estar introducido sobre la base de texto unicode 16, dado a la arquitectura de los microchips que utilizan desde la serie GeForce GTX 700.

Calculos de la GPU para proposito general [ editar ]

Se intenta aprovechar la gran potencia de calculo de las GPU para aplicaciones no relacionadas con los graficos, en lo que recientemente se viene a llamar GPGPU , o GPU de proposito general ( general purpose GPU , por sus siglas en ingles).

Las GPUs y la quimica cuantica [ editar ]

La quimica cuantica es una de las disciplinas donde se necesita una gran potencia de calculo. Por supuesto que han sido reportadas varias aplicaciones donde las GPUs han sido utilizadas. Varias de esas aplicaciones estan relacionadas con la solucion de las ecuaciones de Kohn-Sham , dentro de la teoria de funcionales de la densidad, y la solucion de las ecuaciones de Hartree-Fock . [ 1 ] ​ Tambien han sido reportadas aplicaciones relacionadas con metodos basados en la funcion de onda que estiman la correlacion electronica, [ 2 ] ​ o energias de ionizacion . [ 3 ] [ 4 ] ​ La potencia de las GPUs se ha evidenciado con aplicaciones relacionadas con el modelo de atomos en moleculas . [ 5 ]

Vease tambien [ editar ]

Referencias [ editar ]

  1. I. S. Ufimtsev and T. J. Martinez. Graphical Processing Units for Quantum Chemistry . Computing in Science and Engineering , 10 , 26-34 (2008) DOI: 10.1109/MCSE.2008.148
  2. Javier Carmona-Espindola, Isaias Alcalde-Segundo, Rubicelia Vargas and Jorge Garza. Many-Body Perturbation Theory to Second Order Applied on Confined Helium Like Atoms . In COMPUTATIONAL AND EXPERIMENTAL CHEMISTRY: Developments and applications . CRC Press, New Jersey, 2013.
  3. Erwin Garcia-Hernandez, Cecilia Diaz-Garcia, Rubicelia Vargas and Jorge Garza. Implementation of the electron propagator to second order on GPUs to estimate the ionization potentials of confined atoms . J. Phys. B: At. Mol. Opt. Phys . 47 185007 (7pp) (2014). DOI:10.1088/0953-4075/47/18/185007 ,
  4. Erwin Garcia-Hernandez, Cecilia Diaz-Garcia, Rubicelia Vargas and Jorge Garza. Four-index integral transformation in many-body perturbation theory and electron propagator to second order on GPUs for confined atoms . AIP Conf. Proc. 1558 1528-1531 (2013). DOI: 10.1063/1.4825814
  5. Raymundo Hernandez-Esparza, Sol-Milena Mejia-Chica, Andy D. Zapata-Escobar, Alfredo Guevara-Garcia, Apolinar Martinez-Melchor, Julio-M. Hernandez-Perez, Rubicelia Vargas, and Jorge Garza. Grid-Based Algorithm to Search Critical Points, in the Electron Density, Accelerated by Graphics Processing Units . Journal of Computational Chemistry . 35 2272-2278 (2014). DOI:10.1002/jcc.23752

Enlaces externos [ editar ]