Cómo reducir el consumo de las CPU utilizando cálculos aproximados

Cómo reducir el consumo de las CPU utilizando cálculos aproximados

Rodrigo Alonso

Si piensas en la computación seguramente te vengan a la cabeza palabras como rendimiento, velocidad, consumo y eficiencia, pero también son importantes otras como corrección y precisión. No obstante, los investigadores del proyecto OPRECOMP discrepan, y su objetivo es desarrollar un tipo de cálculo radicalmente diferente y más flexible llamado computación de transprecisión, que consiste como ya supondréis por el titular de este artículo en realizar cálculos aproximados y no exactos. ¿Cómo funcionaría un procesador de este calado en un PC sin provocar errores?

Especialmente la eficiencia, que consiste en mejorar el rendimiento disminuyendo el consumo, ha cobrado especial importante en los últimos tiempos y los investigadores llevan lustros intentando buscar maneras alternativas para encontrar los mejores valores de ambos. Una de estas líneas de investigación consiste en salirse de la regla en cuanto a la precisión de los cálculos, algo que podría resultar absurdo para la informática moderna pero que como vamos a contaros a continuación tiene bastante sentido.

La precisión de los cálculos en un procesador

Demoler el supuesto de precisión del 100% que subyace en casi toda la informática digital moderna es el objetivo principal del consorcio de investigación OPRECOMP, dirigido por IBM Research Europe en Zúrich. Cuando hablamos de un ordenador y más concretamente de un procesador todos pensamos en que la precisión debe ser absoluta, pero en muchas aplicaciones dicha precisión simplemente no es necesaria y consume demasiada energía. En cambio, OPRECOMP busca entregar aproximaciones con la cantidad justa de energía necesaria para el trabajo, haciendo además que la nueva informática sea más rápida. Es lo que podríamos llamar, «procesadores vagos» que hacen la «ley del mínimo esfuerzo».

Render CPU Código

Por lo general, las computadoras digitales utilizan un elaborado esquema de codificación que almacena números en forma de 64 dígitos binarios. En muchos casos, sin embargo, las aplicaciones no requieren todos estos dígitos, así que un desafío en este proyecto no es solo reducir el consumo de energía sino también asegurarse de que el resultado aproximado de los cálculos permanezca dentro de los límites correctos o predefinidos, o al menos que dichos límites se puedan dar para los resultados esperados.

Dicho de otra manera: en la actualidad si un procesador calcula mal alguna operación obtenemos un pantallazo azul de error y el sistema se cuelga, así que si el procesador hiciera cálculos aproximados desde luego no funcionaría, ¿verdad? No obstante, a lo que se refiere este proyecto es a hacer un cálculo correcto pero sin tantísimos decimales, pues son inservibles en una gran cantidad de casos.

Para que os hagáis una idea vamos a poner un ejemplo. Imaginad que el procesador debe calcular el número Pi, que como sabéis tiene infinitos decimales. Así, cuando se le pide a la CPU que lo calcule ésta sacará 64 decimales, pero la realidad es que la aplicación que se lo ha solicitado tan solo requiere 16 decimales (es un ejemplo) para realizar las operaciones que requiere, así que el resto se han calculado literalmente de manera inútil. Por este motivo, cuando hablamos del número Pi generalmente no decimos 3,14159265358979323846… sino que generalmente nos conformamos con decir que es 3,1416, redondeando porque con cuatro decimales solemos tener suficiente para lo que necesitamos.

¿Cómo funcionaría una CPU de cálculos aproximados?

OPRECOM aborda la pila informática completa desde el nivel del hardware físico a través de la arquitectura hasta los compiladores, algoritmos y software. Aspira a ofrecer el primer marco de transprecisión completo para la informática del futuro, y para lograr esto trabajan no solo en el lado de la computación, sino que su equipo de matemáticos, informáticos e ingenieros de software trabaja también en mostrar los beneficios de las aplicaciones con cálculos aproximados, com por ejemplo un pequeño dron que se utiliza para volar durante largos periodos de tiempo.

OPRECOMP

Otros campos de aplicación específicos incluyen el análisis de Big Data, aprendizaje automático y computación de alto rendimiento (HPC). La arquitectura desarrollada abordará aspectos de procesamiento, memoria y comunicación desde los sistemas de baja potencia (del orden de milivatios) utilizados en dispositivos a pequeña escala u objetos conectados hasta grandes sistemas informáticos de alto rendimiento que tienen un enorme consumo (del orden de kilovatios).

El equipo del proyecto ya ha adaptado muchos algoritmos existentes para trabajar en transprecisión: por ejemplo, el equipo ha desarrollado una novedosa implementación del algoritmo BLSTM que convierte imágenes en texto con una precisión de solo 8 bits. Solo pierde un 0,01% de precisión pero a cambio reduce el consumo de energía hasta un factor de 8. El algoritmo también se ha implementado en hardware, demostrando que puede automatizarse y utilizarse en aplicaciones reales.

«Un desafío es que la computación de transprecisión no es muy conocida, incluso entre los científicos informáticos. La automatización es la clave para ayudar a que crezca una comunidad internacional abierta, de modo que la computación de cálculos aproximados pueda ser accesible para una amplia audiencia, incluidos ingenieros que no tienen experiencia en aproximaciones o cálculos inexactos. A este respecto, OPRECOMP está desarrollando un kit de desarrollo de software de transprecisión que permite a los desarrolladores programar y experimentar fácilmente con algoritmos de transprecisión y pequeños dispositivos informáticos, como el PULP. La hoja de ruta para ver esta tecnología en las aplicaciones cotidianas es larga todavía, pero con OPRECOMP hemos dado un gran paso adelante».- Cristiano Maolssi, coordinador del proyecto.

Para cuando finalice este proyecto, se habrán generado nuevos algoritmos basados en la computación de cálculos aproximados, nuevas plataformas de bajo consumo energético para ejecutar dicha carga de trabajo, bibliotecas de entornos de software para permitir el uso de este tipo de computación, así como bibliotecas de emulación que aceleran la creación de prototipos de desarrollo. Todo el software producido se ha hecho de código abierto, y resultados como la biblioteca de programación FloatX para computación de baja precisión ya han sido noticia. Además, IBM ya ha creado un prototipo de un sistema HPC tradicional junto con la aceleración informática de transprecisión.

Al final, el objetivo es lograr reducir el consumo de los procesadores de todo tipo haciendo que no tengan que calcular de manera tan precisa, y que con cálculos aproximados que son más que suficientes se consiga mejorar inmensamente la eficiencia.