Las unidades centrales de procesamiento CPU actuales funcionan según la arquitectura de von Neumann. Este esquema de funcionamiento está pensado para un procesamiento monohilo, en el que una instrucción no se ejecuta hasta que la instrucción anterior ha terminado. Cada procesador tiene su espacio de memoria interna y su línea única de proceso.
La eficiencia energética de los multinúcleos
Esto provoca que sólo se pueda disponer de un hilo de procesamiento para cada CPU. Para conseguir trabajar con más de un hilo en paralelos se pueden utilizar dispositivos que monten varios núcleos CPU. Esto se ha popularizado en el mercado en los últimos años con máquinas de dos y cuatros núcleos, sobre todo orientado a ordenadores de escritorio y portátiles. En estas máquinas la sensación de mejora es notable, puesto que se obtiene una sensación de continuidad cuando se están ejecutando varias aplicaciones a la vez. En aplicaciones científicas se usan tecnologías similares desde los años setenta. Actualmente el número de núcleos de un supercomputador puede rondar los 250.000, como ya vimos en un artículo la semana pasada.
Uno de los grandes problemas que tienen las máquinas con tantos núcleos es la eficiencia energética. Aunque se adaptan para trabajar juntos de manera más eficiente, estos procesadores siguen necesitando prácticamente la misma energía que necesitaban por separado. No es fácil hacer que usen más eficientemente la energía puesto que desde la base no fueron diseñados para eso. Son aglomeraciones de CPU’s individuales. Muy sofisticadas, pero individuales en lo que se refiere al aprovechamiento de la energía.
Tecnología de videojuegos
Para mejorar en este aspecto, los científicos del Commonwealth Scientific and Industrial Research Organisation CSIRO, la agencia nacional australiana dedicada a la ciencia y a la investigación, han hecho uso de la imaginación y no se han dejado influenciar por los prejuicios de algunos. Tras estudiar el funcionamiento interno de las unidades de procesamiento gráfico GPU, desarrollados principalmente para mejorar el rendimiento 3D en videojuegos, han creado una arquitectura en la que se combinan éstos con los procesadores CPU ordinarios.
Hay dos grandes razones para utilizar las GPU en un supercomputador. La primera es que una GPU es multinúcleo a nivel interno y está altamente optimizada para realizar cálculos de precisión. Para cálculos de coma flotante, una GPU suele rendir entre 30 y 70 veces más rápido que una CPU. Originalmente esto era para calcular escenas 3D en tiempo real en videojuegos, en las que hay que procesar paralelamente la geometría de cada objeto representado y mostrarlo en la pantalla suficientemente rápido.
La segunda razón es su eficiencia energética. Puesto que el procesamiento en paralelo se hace de manera interna, la cantidad de energía necesaria para hacer cada instrucción se reduce. En una GPU actual puede haber unos 20 núcleos especializados. Es mucho más eficiente que usar 20 CPU’s para hacer los mismos cálculos.
La evolución de estos dispositivos siempre ha buscado una mejor experiencia de juego. Por eso, algunos se han mostrado escépticos hasta ahora con respecto a su uso en cosas ‘serias’. Siempre se ha aludido a su excesiva especialización como talón de Aquiles a la hora de reemplazar a las CPU. Y ciertamente, aún no pueden reemplazarlas totalmente.
Arquitectura mixta
¿Por qué se siguen usando CPU’s en este supercomputador? La razón es que las GPU son procesadores muy especializados, y ciertas tareas más generales son realizadas de manera más eficiente por las CPU. Las CPU en la máquina del CSIRO se dedican básicamente a coordinar y mantener a pleno rendimiento las GPU, que son las que realizan los cálculos en si. Esta estructura mixta es la que debe hacer que el rendimiento sea aún más elevado.
El superordenador, presentado el pasado 25 de noviembre en Canberra, ocupa aproximadamente el espacio de seis frigoríficos grandes. Cuenta con un total de 1024 núcleos de CPU y 61.440 núcleos de GPU. Los núcleos de CPU están agrupados en 128 procesadores Intel Dual Xeon E5462, de 8 núcleos cada uno. Los núcleos GPU están repartidos en 256 procesadores nVidia Tesla, de 240 núcleos especializados cada uno.
El mayor rendimiento y menor consumo de energía van unidos además de una reducción del coste. En este caso, con sólo 384 procesadores (128 CPU y 256 GPU) se consiguen 61.440 núcleos. para conseguir el mismo número de núcleos usando sólo CPU, se necesitarían 7.680 procesadores de 8 núcleos cada uno. Tal cantidad de procesadores significa más coste y más gasto energético, o sea, menos eficiencia.
Para hacer uso de las GPU, los programadores deberán usar la tecnología CUDA desarrollada expresamente por nVidia, u otros compiladores especializados. Como indica el Dr. Taylor, «Requiere un nuevo punto de vista en la programación». Y continúa, «hay que dividir cada tarea de manera que se aproveche al máximo el número extra de núcleos. Es como dar instrucciones a 10 trabajadores para hacer una pared, en lugar de a uno solo». Y tranquiliza: «Ofreceremos entrenamiento a otros científicos para que puedan usar la tecnología».
Hacer un comentario