Sobre los posits, el sistema métrico en Estados Unidos y el coste del cambio
Publicado el 8 de agosto de 2020
En el año 2017 el doctor John Gustafson presentó en la universidad de Stanford su trabajo sobre los posits, representación binaria de los números reales alternativa al punto flotante IEEE 754 que es el estándar actual. Los detalles de esta representación son irrelevantes para este texto (para los interesados podéis encontrar aquí
la charla grabada en vídeo
y
el paper en el que está basada
). El caso es que el doctor Gustafson afirma que los números reales representados según su modelo pueden representar un intervalo mayor que IEEE 754 con la misma cantidad de bits, y además las operaciones son más precisas y requieren circuitos menos complejos y por lo tanto más pequeños, más baratos y más rápidos. Vamos, que son mejores en todo. Si esto es o no verdad está también fuera del alcance de este texto, así que de ahora en adelante asumiremos que los posits realmente son mejores que los floats en todo, porque no es de lo que hemos venido a hablar. La representación binaria de números reales es muy importante para muchos campos como la inteligencia artificial, el big data, los cálculos científicos o las simulaciones. En un videojuego, es con diferencia el tipo de dato más común. Están hasta en la sopa. Que de repente por arte de birlibirloque éstos se volvieran más pequeños, más precisos y más rápidos sería como maná del cielo para nosotros. Pero por lo que sea aún no los está usando nadie, y merece la pena reflexionar sobre las razones que pueden estar reteniendo este cambio tan importante y aparentemente gratuito.
Uno de los factores importantes está en quién tendría que llevar a cabo este cambio. Las operaciones de floats ahora mismo las hace un hardware especializado del procesador construido para ello. Por lo tanto, para que los posits pudieran ser tan rápidos como los floats, tendrían que estar también implementados en el hardware. Una emulación en software de los posits puede llegar a ser útil para aquellos que necesitan la precisión adicional como los científicos, pero la inteligencia artificial y las simulaciones lo que necesitan es la velocidad extra. Esto pone la responsabilidad principalmente en los fabricantes de procesadores (Intel, nVidia, AMD, IBM, Sun…).
El otro factor importante es la retrocompatibilidad. Evidentemente, el punto en el que queremos estar es en el que todo el mundo usa posits, todos los procesadores pueden trabajar con ellos, todos los datos guardados están representados así y todos los algoritmos están escritos para éstos. Y los floats son algo de lo que los señores mayores barbudos se acuerdan en sus batallitas de la mili. Pero ese no es el punto en el que estamos. Más bien lo contrario. Todo hoy en día usa floats, y es imposible hacer ese cambio de la noche a la mañana. Por lo tanto, hará falta un periodo de transición, en el que los procesadores sepan trabajar con ambos tipos para poder seguir ejecutando los programas antiguos. También los compiladores tendrán que saber generar código para ambos tipos, al igual que todos los programas que generan datos en binario con números reales, ya que los productores de software querrán empezar a aprovecharse de estas nuevas tecnologías, pero algunos de sus usuarios todavía tendrán procesadores viejos. Aquí es muy pertinente el ejemplo de Estados Unidos y el sistema métrico. Estados Unidos es uno de los pocos países del mundo que sigue usando un sistema de medidas de mentira. Por suerte en las universidades científicos e ingenieros aprenden el sistema métrico, pero gran parte de la población no sabe lo que es un gramo, un metro o un litro, y mucho menos pensar en ellos de forma intuitiva. El cambio de sistema de medidas en Estados Unidos no es sólo cuestión de reescribir toda la señalización del país y todos los libros de texto, que no es poco. También habría que enseñárselo a toda la población, y por si acaso mantener el sistema antiguo por un par de décadas más para no hacerle la vida imposible a esa pobre abuela que va al mercado a comprar media libra de carne picada y ahora tiene que pedirlo en gramos.
Y es precisamente el factor de la retrocompatibilidad el que puede ser el cuello de botella para el cambio. Y no sólo por todos esos programas que nunca van a ser recompilados y esos archivos que nunca van a ser reexportados porque la empresa que los hizo quebró hace quince años. Los procesadores modernos son extremadamente complejos, y están ya rozando el límite de tamaño del chip. Añadir más circuitos de forma que la frecuencia se mantenga estable y la electricidad llegue de forma uniforme en cada ciclo es toda una ordalía, como para de repente duplicar todos los circuitos de operaciones sobre números reales. Que recordemos, en los procesadores actuales con instrucciones para raíces cuadradas, trascendentales y operaciones SIMD sobre vectores, son muchísimas. Claro, los procesadores finales a los que intentamos llegar, al no tener operaciones de floats, serán más pequeños y simples que los actuales, pero puede que ese paso intermedio necesario en el que hay que tener los dos conjuntos de instrucciones no sea viable, o requiera que varias generaciones de procesadores sean más lentas que la actual, lo cual será difícil de vender al público y por lo tanto un factor más que ralentice el cambio.
Todos los cambios, incluso los aparentemente gratuitos, tienen un coste. Los cambios de aquello que está muy extendido tienen un coste muy grande, incluso si se cambia a algo estrictamente mejor, porque es necesario un periodo de transición que permita que el cambio suceda de forma gradual y sin molestar demasiado a los afectados. Con los posits concretamente, me alegra ver que algunas empresas pequeñas que fabrican procesadores raros bajo demanda para necesidades muy específicas ya han empezado a experimentar con ellos, pero no me extrañaría que aún se tarden unos cuantos años en que empiecen a generalizarse y unos cuantos más en desterrar a los floats IEEE 754.
Logo of RSS.