¿Qué es una GPU?

Una GPU, o «Graphics Processing Unit», es un procesador especializado en funciones que se usan habitualmente en la generación de imágenes. Aparecieron en los años 80 del S. XX, como una solución práctica para resolver las necesidades de los sistemas operativos con interfaz gráfica, que por entonces eran una novedad, y con el tiempo han ido usándose para otras cosas, como la ejecución de cálculos matemáticos, videojuegos, reproducción de vídeo de alta resolución o el procesamiento de criptomonedas.

Si te fijas en la pantalla de tu teléfono móvil o de la máquina de sobremesa, verás que hay un montón de elementos geométricos básicos, como rectángulos, líneas, texto o el propio icono del ratón. Cada segundo, el sistema tiene que calcular esos elementos una y otra vez, dibujando cada punto de la imagen 50, 60 o 100 veces por segundo, en función de la frecuencia de refresco que tenga la pantalla. Para una imagen típica de 1920 x 1080 píxeles, que es el tamaño de una imagen 1080, eso son 1920 x 1080 x 60 = 124 MILLONES de píxeles por segundo, o 373 millones de bytes. Una barbaridad de potencia de cálculo que, si tuviera que hacerla el procesador central del sistema, podría quitarle bastante potencia que no podría dedicarse a las aplicaciones del usuario.

Como las operaciones de dibujo de gráficos forman un conjunto reducido y bastante repetitivo, como «dibujar rectángulo» o «rellenar de color», los fabricantes pensaron en diseñar un microprocesador especial dedicado sólo a esas funciones, de forma que cada vez que llegase una instrucción de ese tipo fuera el chip gráfico, y no el procesador central, quien se hiciera cargo de ella. Esto permitiría que la misma máquina, con la misma memoria, con la misma velocidad de reloj, fuese más rápida y más eficaz en la ejecución de aplicaciones.

Cuando apareció el sistema de compresión MPEG en los 90, el conjunto de instrucciones de una tarjeta gráfica se amplió para descomprimir vídeo, ya que casi todos los sistemas modernos de compresión de vídeo utilizan funciones como la transformada discreta del coseno, que es una función trigonométrica bastante compleja. El problema es el mismo: hay que repetir millones de veces por segundo la misma instrucción que no deja de ser una función a la que podemos pasar unos parámetros y esperar el resultado.

Exactamente lo mismo pasa con los juegos en 3D. Cada personaje o elemento del escenario que ves en un videojuego está formado por cientos o miles de triángulos, sobre los que se aplican texturas para que tengan un aspecto más realista. Calcular la posición, la inclinación, la iluminación o el brillo de los miles y miles de triángulos que forman una escena, decenas de veces por segundo, vuelve a ser un problema de repetir millones de veces la misma instrucción con unos cuántos parámetros.

Con el tiempo, las tarjetas gráficas han terminado por acumular una auténtica biblioteca de funciones matemáticas que se pusieron ahí para generar imágenes, pero que pueden utilizarse para cualquier cosa. Por eso, en un momento dado alguien se dio cuenta que podía llamar a las mismas funciones para hacer minería de Bitcoins, implementar algoritmos de inteligencia artificial o simular procesos físicos. Los fabricantes como Nvidia han publicado librerías de programación como CUDA, para que cualquiera puede llamar a esas funciones. Ese es el motivo de que programas como Adobe Photoshop y algunas aplicaciones profesionales de edición de vídeo incluyan soporte para CUDA.

El resultado es una auténtica explosión en los últimos años en el interés por desarrollar aceleradoras gráficas (GPUs) cada vez más potentes y versátiles. Se han convertido en un segundo microprocesador del sistema, que a menudo puede llegar a rivalizar con el principal en complejidad, potencia y consumo de energía, lo que explica los enormes ventiladores que suelen llevar incorporados.

Si quieres saber más:

Fotografía: Aceleradora Tesla V100 con GPU Volta GV100, de Nvidia.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *