DE LOS VIDEOJUEGOS AL SUPERCÓMPUTO CIENTÍFICO

Escrito por Luis Manuel Villaseñor Cendejas

TaihuLight, la super computadora ubicada en Wuxi, al este de China, en la Provincia de Jiangs

Las supercomputadoras más rápidas del mundo 

Hace unos días, en junio de 2016, se publicó la lista más reciente de las 500 supercomputadoras más rápidas del mundo. Esta lista, que se publica dos veces al año desde 1993, causa gran expectativa entre la comunidad internacional de supercómputo. En esta ocasión resultó sorpresiva la aparición de una nueva supercomputadora china que ahora ocupa el primer lugar en la lista y que desplaza a otra supercomputadora también china que había sido la más rápida durante los últimos 3 años. 

Esta nueva supercomputadora, llamada “Sunway TaihuLight”, puede realizar hasta 93 mil millones de millones de operaciones de punto flotante por segundo, es decir 93 PetaFLOPS en lenguaje técnico. Tiene además la peculiaridad de que es cinco veces más rápida que la supercomputadora más rápida de Estados Unidos y que utiliza unidades de procesamiento central, conocidos como CPUs por sus siglas en inglés, basados en tecnología china, a diferencia de la mayoría de las supercomputadoras que utilizan procesadores fabricados por la compañía norteamericana Intel. 

Para establecer un punto de comparación, una buena computadora portátil tiene un procesador con 4 núcleos, mientras que TaihuLight tiene cerca de 11 millones de núcleos, lo que la convierte en cerca de 3 millones de veces más rápida que una computadora portátil típica. Para esto se requiere, sin embargo, contar con el conocimiento para programar todos los núcleos de modo que trabajen simultáneamente en el mismo cálculo. 

Diferencia entre CPUs y GPUs

Sin embargo, en esta ocasión nos interesa recalcar la peculiaridad de la computadora más rápida de los Estados Unidos. Esta supercomputadora que ocupa el tercer a nivel mundial, utiliza para sus cálculos un nuevo tipo de dispositivos de cómputo que se llaman unidades de procesamiento gráfico, GPUs por sus siglas en inglés, a diferencia de la mayoría de las computadoras que, como ya mencionamos, utilizan únicamente CPUs. Esta supercomputadora, llamada “Titán”, se encuentra en el Laboratorio Nacional Oak Ridge en el estado de Tennessee, en Estados Unidos, y fue hasta noviembre del 2012 la supercomputadora más rápida del mundo. 

Es interesante mencionar que las unidades de procesamiento gráfico, que de ahora en adelante llamaremos genéricamente como tarjetas GPU, surgieron para satisfacer la demanda de cómputo de los programas de videojuegos, en los que se requiere de grandes velocidades de cómputo para generar imágenes en 3 dimensiones y proveerlas de la iluminación y movimientos adecuados para que parezcan imágenes reales. A este proceso se le llama “renderizado”, derivado de la palabra “render” en inglés.

Es típico que la computadora de alguien que la emplea para videojuegos o diseño gráfico o elaboración de películas animadas, cuente con una o varias tarjetas GPU. Estas tarjetas son descendientes de los primeros chips gráficos que surgieron en la década de los 1980s para dotar de visualización a las primeras computadoras personales, aunque el término GPU fue introducido por primera vez por la compañía Nvidia en 1999. A partir de ahí, y bajo la presión de nuevos videojuegos cada vez más demandantes de procesamiento gráfico, las tarjetas GPU se desarrollaron cada vez más. 

Cómputo en paralelo

La característica que distingue a las tarjetas GPU de los procesadores CPU es su capacidad de cómputo en paralelo. Para esto, las tarjetas GPU cuentan con un gran número procesadores sencillos pero especializados en la realización de operaciones aritméticas, a estos procesadores se les llama núcleos CUDA en el caso de las tarjetas GPU producidas por la compañia Nvidia.  Por ejemplo, una de las primeras tarjetas GPU, la Nvidia GeForce 256 de 1999, contaba con 4 núcleos CUDA, mientras que las tarjetas GPU más avanzadas actualmente cuentan con cerca de 6 mil de estos procesadores especializados.

Por esta razón, a través del cómputo en paralelo, estas tarjetas pueden desarrollar velocidades de cómputo por sí solas de alrededor de 3 TeraFLOPS, es decir que bastarían cerca de 30 mil de estas tarjetas para lograr igualar la velocidad de computo de la supercomputadora más rápida del momento, con la ventaja de que su funcionamiento es más eficiente desde el punto de vista energético y no requieren de un sistema de enfriamiento con complejo y caro como el de las supercomputadoras que usan CPUs. 

La supercomputadora Titán es un ejemplo de una supercomputadora híbrida que usa tanto CPUs como GPUs. En efecto, los cerca de 19 mil procesadores que componen esta supercomputadora, que en total comprenden cerca de 300 mil núcleos CPU, trabajan en conjunto con un número igual de tarjetas GPU para lograr una velocidad de cómputo de 19.5 PetaFLOPS. A pesar del gran número de núcleos CPU, esta velocidad de cómputo recae en un 90% en su componente de tarjetas GPU. 

CUDA y OpenCL

La posibilidad de usar las tarjetas GPU para realizar supercómputo científico fue facilitada a partir de 2007 por la compañía Nvidia al poner al alcance de todo mundo un conjunto de programas que permiten programar con relativa facilidad las tarjetas GPU. A esta plataforma de supercómputo científico en paralelo, que los ingenieros de Nvidia elaboraron para usar las tarjetas GPU de Nvidia, se le llama CUDA, por las siglas en inglés de Arquitectura Unificada de Dispositivos de Cómputo. 

Existe una plataforma similar que permite mayor generalidad en el uso de tarjetas GPU, permitiendo la programación de otras tarjetas de videojuegos producidas por otros fabricantes y de otros dispositivos electrónicos, a esta plataforma alternativa se le llama OpenCL, por sus siglas en inglés de Lenguaje de Cómputo Abierto. 

Estas dos plataformas de cómputo en paralelo están disponibles para su uso libre en varios lenguajes de programación que incluyen C, FORTRAN, Python, Julia, entre otros. 

¿Para qué sirve el supercómputo científico?

El uso del supercómputo con fines científicos permite abordar una gran cantidad de problemas científicos que de otro modo serían difíciles o imposibles de resolver. Por ejemplo, la predicción confiable del clima a escalas de tiempo cada vez mayores sería imposible sin el uso de las supercomputadoras. Otros ejemplos son la simulación de la creación y evolución de las galaxias que componen a nuestro Universo; el estudio de nuevos fármacos en el tratamiento de enfermedades; el estudio de las corrientes de aire en un nuevo diseño aerodinámico de un avión o de un auto; la búsqueda de números primos que tienen más de 100 millones de dígitos; el análisis de los datos de los mayores aceleradores de partículas para buscar nuevas partículas, como ocurrió en 2012 con la partícula Higgs descubierta en el laboratorio CERN en Europa; el análisis de los datos del movimiento de las galaxias para entender mejor la expansión acelerada del Universo; el estudio de nuevas moléculas, por mencionar solo algunos. 

Podemos afirmar que en prácticamente todas las áreas del conocimiento se requiere actualmente, o se requerirá en el futuro próximo, del uso de la supercomputación, lo cual nos permitirá aumentar substancialmente nuestro conocimiento de la naturaleza y sin duda el incrementar la duración y la calidad de la vida humana. 

Perspectivas del supercómputo en el futuro próximo

Ante la pérdida frente a China del liderazgo en supercómputo que tuvo Estados Unidos hasta hace 3 años, el presidente Obama ha firmado un acuerdo para incrementar el presupuesto de su país en este ramo, y poner en funcionamiento al menos 3 supercomputadoras con velocidades superiores a los 150 PetaFLOPS a partir del año 2018. Ya que las dos diferencias más importantes entre el uso de CPUs y de GPUs son el menor costo y el menor consumo de electricidad de las tarjetas GPU, con relación a los sistemas basados en CPUs, para una misma velocidad de supercómputo. Podemos esperar un número cada vez mayor de supercomputadoras de tipo híbrido que usen tanto procesadores centrales CPU como tarjetas de GPU, como es el caso de la Supercomputadora Titán, pero con una capacidad de supercómputo que recae cada vez más en sus tarjetas GPU.

La aparición de las tarjetas GPU en supercómputo científico viene a aliviar en parte la preocupación de la comunidad científica de que cada vez se hace más difícil que se siga cumpliendo la llamada Ley de Moore, la cual expresa el hecho empírico de que, en los últimos 50 años, los fabricantes de procesadores de cómputo han logrado duplicar cada 2 años el número de transistores en sus chips. Por otro lado, la anhelada computación cuántica, la cual permitirá incrementar dramáticamente la velocidad de supercómputo, aún tiene muchos obstáculos que superar antes de convertirse en una realidad. 

Supercomputadoras personales de bajo costo

El hecho de que usando una tarjeta GPU moderna, que cuesta alrededor de 1000 dólares americanos, podemos alcanzar velocidades de cómputo cercanas a los 2 TeraFLOPS, nos permite la posibilidad de contar con una supercomputadora personal de bajo costo en nuestra propia casa u oficina. 

Estas supercomputadoras personales, basadas en tarjetas GPU, pueden alcanzar una velocidad de cómputo del orden de mil veces mayor a la que obtenemos de una computadora portátil dotada únicamente de procesadores CPU. Es importante enfatizar que para lograr estas velocidades tan altas es indispensable programar en la plataforma CUDA o en la plataforma OpenCL, esto, a su vez, implica superar una curva de aprendizaje de estos modelos modernos de programación, lo cual es, sin embargo, cada vez más fácil gracias a la gran cantidad de guías tutoriales que existen gratuitamente en la red internet.

Luis Manuel Villaseñor Cendejas, es profesor investigador del Instituto de Física y Matemáticas de la Universidad Michoacana de San Nicolás de Hidalgo.