Variante de números de punto flotante en computadoras.
Unums ( números universales [1] ) son una familia de formatos numéricos y aritmética para implementar números reales en una computadora, propuesta por John L. Gustafson en 2015. [2] Están diseñados como una alternativa al omnipresente punto flotante IEEE 754. estándar . La última versión se conoce como posits . [3]
Tipo I Unum
La primera versión de unums, formalmente conocida como Unum Tipo I, se introdujo en el libro de Gustafson The End of Error como un superconjunto del formato de punto flotante IEEE-754. [2] Las características que definen el formato unum Tipo I son:
- un formato de almacenamiento de ancho variable tanto para el significado como para el exponente , y
- un u-bit , que determina si la unum corresponde a un número exacto ( u = 0), o a un intervalo entre unums exactos consecutivos ( u = 1). De esta manera, los unums cubren toda la recta numérica real extendida [−∞,+∞].
Para el cálculo con el formato, Gustafson propuso utilizar la aritmética de intervalos con un par de unums, lo que llamó ubound , proporcionando la garantía de que el intervalo resultante contiene la solución exacta.
William M. Kahan y Gustafson debatieron sobre unums en la conferencia Arith23 . [4] [5] [6] [7]
Tipo II Unum
Los Unums tipo II se introdujeron en 2016 [8] como un rediseño de Unums que rompió la compatibilidad con IEEE-754.
Posit (Tipo III Unum)
En febrero de 2017, Gustafson presentó oficialmente los unums Tipo III, postulados para valores fijos similares a puntos flotantes y válidos para aritmética de intervalos . [3] En marzo de 2021, el Grupo de Trabajo Posit ratificó y publicó una norma. [9]
Los postulados [3] [10] [11] son una versión compatible con hardware de unum donde se resuelven las dificultades encontradas en el unum tipo I original debido a su tamaño variable. En comparación con los flotadores IEEE 754 de tamaño similar, los posits ofrecen un rango dinámico más grande y más bits de fracción para valores con magnitud cercana a 1 (pero menos bits de fracción para valores muy grandes o muy pequeños), y Gustafson afirma que ofrecen una mayor precisión. [12] [13] Los estudios [14] [15] confirman que, para algunas aplicaciones, las posiciones con quire superan a los flotadores en precisión. Las propuestas tienen una precisión superior en el rango cercano a uno, donde ocurren la mayoría de los cálculos. Esto lo hace muy atractivo para la tendencia actual en el aprendizaje profundo de minimizar la cantidad de bits utilizados. Potencialmente ayuda a acelerar cualquier aplicación al permitir el uso de menos bits (ya que tiene más fracciones de bits para mayor precisión), lo que reduce el ancho de banda y los requisitos de energía de la red y la memoria.
El formato de una posición de n bits recibe la etiqueta "posit" seguida de los dígitos decimales de n (por ejemplo, el formato de posición de 16 bits es "posit16") y consta de cuatro campos secuenciales:
- signo : 1 bit, que representa un entero sin signo s
- régimen: al menos 2 bits y hasta ( n − 1), que representa un entero sin signo r como se describe a continuación
- exponente : hasta 2 bits disponibles después del régimen, lo que representa un entero sin signo e
- fracción : todos los bits restantes disponibles después del exponente, que representan un racional diádico real no negativo f menor que 1
El campo de régimen utiliza codificación unaria de k bits idénticos, seguido de un bit de valor opuesto si hay bits restantes disponibles, para representar un entero sin signo r que es −k si el primer bit es 0 o k − 1 si el primer bit es 1. Los campos de signo, exponente y fracción son análogos a los campos de signo, exponente y significado de IEEE 754 (respectivamente), excepto que los campos de exponente positivo y fracción pueden estar ausentes o truncados y extendidos implícitamente con ceros: se trata un exponente ausente. como 00
2 (que representa 0), un exponente de un bit E 1 se trata como 2 (que representa el entero 0 si E 1 es 0 o 2 si E 1 es 1), y una fracción ausente se trata como 0.E10
Las dos codificaciones en las que todos los bits sin signo son 0 tienen interpretaciones especiales:
- Si el bit de signo es 1, el valor positivo es
NaR
("no es real") - Si el bit de signo es 0, el valor positivo es 0 (que no tiene signo y es el único valor para el cual la
sign
función devuelve 0)
De lo contrario, el valor positivo es igual a , en el que r escala en potencias de 16, e escala en potencias de 2, f distribuye valores uniformemente entre combinaciones adyacentes de ( r , e ) y s ajusta el signo simétricamente alrededor de 0.
Ejemplos
Nota : Se espera que la posición de 32 bits sea suficiente para resolver casi todas las clases de aplicaciones [ cita requerida ] .
Mano de papel
Para cada posición n tipo de precisión , el estándar define un tipo "quire" correspondiente quire n de precisión , utilizado para acumular sumas exactas de productos de esas posiciones sin redondeo ni desbordamiento en productos escalares para vectores de hasta 2,31 o más elementos ( el límite exacto es ). El formato quire es un entero con signo en complemento a dos , interpretado como un múltiplo de unidades de magnitud, excepto el valor especial con un bit de signo inicial de 1 y todos los demás bits iguales a 0 (que representa ). Los Quires se basan en el trabajo de Ulrich W. Kulisch y Willard L. Miranker . [dieciséis]NaR
Válido
Los válidos se describen como un modo Unum de tipo III que limita los resultados en un rango determinado. [3]
Implementaciones
Varias soluciones de software y hardware implementan propuestas. [14] [17] [18] [19] [20] El primer generador de hardware aritmético positivo parametrizado completo se propuso en 2018. [21]
Las implementaciones de Unum se han explorado en Julia [22] [23] [24] [25] [26] [27] y MATLAB . [28] [29] Está disponible una versión C++ [30] compatible con cualquier tamaño de posición combinado con cualquier número de bits exponentes. Una implementación rápida en C, SoftPosit, [31] proporcionada por el equipo de investigación de NGA basado en Berkeley SoftFloat se suma a las implementaciones de software disponibles.
posición suave
SoftPosit [31] es una implementación de software de postulados basada en Berkeley SoftFloat. [32] Permite la comparación de software entre posiciones y flotadores. Actualmente soporta
- Agregar
- Sustraer
- Multiplicar
- Dividir
- fusionado-multiplicar-suma
- Producto punto fundido (con quire)
- Raíz cuadrada
- Convertir posit a entero con signo y sin signo
- Convertir enteros con signo y sin signo a posit
- Convertir posit a otro tamaño de posit
- Comparación menor que, igual, menor que igual
- Redondear al entero más cercano
Funciones auxiliares
- convertir doble a posit
- convertir posit a doble
- emitir un entero sin signo para postular
Funciona para posiciones de 16 bits con un bit exponente y posiciones de 8 bits con un bit exponente cero. El soporte para posiciones de 32 bits y tipo flexible (2-32 bits con dos bits de exponente) está pendiente de validación. Admite sistemas x86_64. Se ha probado en GNU gcc ( SUSE Linux ) 4.8.5 Apple LLVM versión 9.1.0 (clang-902.0.39.2).
Ejemplos
Agregar con posit8_t
#incluir "softposit.h" int principal ( int argc , char * argv []){ posit8_t pA , pB , pZ ; pA = emitirP8 ( 0xF2 ); pB = emitirP8 ( 0x23 ); pZ = p8_add ( pA , pB ); //Para verificar la respuesta convirtiéndola a doble doble dZ = convertP8ToDouble ( pZ ); printf ( "dZ: %.15f \n " , dZ ); //Para imprimir el resultado en binario (advertencia: código no portátil) uint8_t uiZ = castUI8 ( pZ ); printBinary (( uint64_t * ) & uiZ , 8 ); devolver 0 ; }
Producto escalar fusionado con quire16_t
//Convierte doble a posit posit16_t pA = convertDoubleToP16 ( 1.02783203125 ); posit16_t pB = convertDoubleToP16 ( 0.987060546875 ); posit16_t pC = convertDoubleToP16 ( 0.4998779296875 ); posit16_t pD = convertDoubleToP16 ( 0.8797607421875 ); quire16_t qZ ; //Establece quire en 0 qZ = q16_clr ( qZ ); //acumula productos sin redondeos qZ = q16_fdp_add ( qZ , pA , pB ); qZ = q16_fdp_add ( qZ , pC , pD ); //Convertir nuevamente a posit posit16_t pZ = q16_to_p16 ( qZ ); //Para comprobar la respuesta double dZ = convertP16ToDouble ( pZ );
Crítica
William M. Kahan, el arquitecto principal de IEEE 754-1985, critica los unums tipo I por los siguientes motivos (algunos se abordan en los estándares tipo II y tipo III): [6]
- La descripción de unums evita el uso del cálculo para resolver problemas de física.
- Los Unums pueden resultar costosos en términos de tiempo y consumo de energía.
- Es probable que cada cálculo en el espacio unum cambie la longitud de bits de la estructura. Esto requiere descomprimirlos en un espacio de tamaño fijo o asignación, desasignación y recolección de basura de datos durante las operaciones unum, similar a los problemas que surgen al tratar con registros de longitud variable en el almacenamiento masivo.
- Unums proporciona solo dos tipos de excepción numérica, silenciosa y de señalización NaN (Not-a-Number).
- El cálculo Unum puede generar límites demasiado flojos a partir de la selección de un algoritmo algebraicamente correcto pero numéricamente inestable.
- Los beneficios de unum sobre el punto flotante de corta precisión para problemas que requieren baja precisión no son obvios.
- Resolver ecuaciones diferenciales y evaluar integrales con unums garantiza respuestas correctas, pero puede no ser tan rápido como los métodos que normalmente funcionan.
Ver también
Referencias
- ^ Tichy, Walter F. (abril de 2016). "El fin del error (numérico): una entrevista con John L. Gustafson". Ubicuidad: información en todas partes . 2016 (abril). Asociación de Maquinaria de Computación (ACM): 1–14. doi : 10.1145/2913029 .
JG: La palabra "unum" es la abreviatura de "número universal", de la misma manera que la palabra "bit" es la abreviatura de "dígito binario".
- ^ ab Gustafson, John L. (4 de febrero de 2016) [5 de febrero de 2015]. El fin del error: Unum Computing. Chapman & Hall / CRC Ciencias Computacionales . vol. 24 (2ª impresión corregida, 1ª ed.). Prensa CRC . ISBN 978-1-4822-3986-7. Consultado el 30 de mayo de 2016 .[1] [2]
- ^ abcd Gustafson, John Leroy ; Yonemoto, Isaac (2017). "Vencer al punto flotante en su propio juego: postular aritmética". Fronteras e innovaciones de la supercomputación . 4 (2). Centro de Publicaciones de la Universidad Estatal de los Urales del Sur, Chelyabinsk, Rusia. doi : 10.14529/jsfi170206 . Archivado desde el original el 4 de noviembre de 2017 . Consultado el 4 de noviembre de 2017 .
- ^ "Programa: Sesión especial: El gran debate: John Gustafson y William Kahan". Arith23 : 23º Simposio IEEE sobre aritmética informática . Silicon Valley, Estados Unidos. 2016-07-12. Archivado desde el original el 30 de mayo de 2016 . Consultado el 30 de mayo de 2016 .
- ^ Gustafson, John L .; Kahan, William M. (12 de julio de 2016). El gran debate @ ARITH23: John Gustafson y William Kahan (1:34:41) (vídeo) . Consultado el 20 de julio de 2016 .
- ^ ab Kahan, William M. (16 de julio de 2016) [12 de julio de 2016]. "Una crítica de EL FINAL del ERROR de John L. Gustafson: Unum Computation y su Un enfoque radical para la computación con números reales" (PDF) . Santa Clara, CA, EE. UU.: Simposio IEEE sobre aritmética informática , ARITH 23 . Archivado (PDF) desde el original el 25 de julio de 2016 . Consultado el 25 de julio de 2016 .[3]
- ^ Gustafson, John L. (12 de julio de 2016). ""El gran debate ": documento de posición aritmética de Unum" (PDF) . Santa Clara, CA, EE. UU.: Simposio IEEE sobre aritmética informática , ARITH 23 . Consultado el 20 de julio de 2016 .[4]
- ^ Tichy, Walter F. (septiembre de 2016). "Unums 2.0: una entrevista con John L. Gustafson". Ubiquity.ACM.org . Consultado el 30 de enero de 2017 .
Comencé llamándolos "unums 2.0", que parecía ser un nombre tan bueno para el concepto como cualquier otro, pero en realidad no es tanto una "última versión" sino una alternativa.
- ^ ab Grupo de trabajo Posit (2 de marzo de 2022). "Estándar de aritmética positiva (2022)" (PDF) . Archivado (PDF) desde el original el 26 de septiembre de 2022 . Consultado el 21 de diciembre de 2022 .
- ^ John L. Gustafson y I. Yonemoto. (Febrero de 2017) Más allá del punto flotante: aritmética informática de próxima generación. [En línea]. Disponible: https://www.youtube.com/watch?v=aP0Y1uAA-2Y
- ^ Gustafson, John Leroy (10 de octubre de 2017). "Positar aritmética" (PDF) . Archivado (PDF) desde el original el 5 de noviembre de 2017 . Consultado el 4 de noviembre de 2017 .
- ^ Feldman, Michael (8 de julio de 2019). "Un nuevo enfoque podría hundir la computación en coma flotante". www.nextplatform.com . Consultado el 9 de julio de 2019 .
- ^ Byrne, Michael (24 de abril de 2016). "Un nuevo formato numérico para computadoras podría eliminar los errores de aproximación para siempre". Vicio . Consultado el 9 de julio de 2019 .
- ^ ab Lindstrom, Peter; Lloyd, Scott; Hittinger, Jeffrey (marzo de 2018). Codificación universal de los reales: alternativas al punto flotante IEEE . Conferencia sobre aritmética de próxima generación. Arte. 5. ACC. doi :10.1145/3190339.3190344.
- ^ David Mallasén; Alberto A. Del Barrio; Manuel Prieto-Matías (11-05-2023). "Big-PERCIVAL: Exploración del uso nativo de la aritmética positiva de 64 bits en la informática científica". arXiv : 2305.06946 [cs.AR].
- ^ Kulisch, Ulrich W .; Miranker, Willard L. (marzo de 1986). "La aritmética de la computadora digital: un nuevo enfoque". SIAM Rev.28 ( 1). SIAM : 1–40. doi :10.1137/1028001.
- ^ S. Chung, "Aritmética de posiciones demostrablemente correcta con entero grande de punto fijo". ACM, 2018.
- ^ J. Chen, Z. Al-Ars y H. Hofstee, "Una unidad de multiplicación de matrices para postulados en lógica reconfigurable utilizando CAPI (abierto)". ACM, 2018.
- ^ Z. Lehoczky, A. Szabo y B. Farkas, "Implementaciones de software .NET de alto nivel de Unum tipo I y Posit con implementación simultánea de FPGA utilizando Hastlayer". ACM, 2018.
- ^ S. Langroudi, T. Pandit y D. Kudithipudi, "Inferencia de aprendizaje profundo en dispositivos integrados: punto fijo frente a posición". En Aprendizaje automático de eficiencia energética y computación cognitiva para aplicaciones integradas (EMC), 2018. [En línea]. Disponible: https://sites.google.com/view/asplos-emc2/program
- ^ Rohit Chaurasiya, John Gustafson, Rahul Shrestha, Jonathan Neudorfer, Sangeeth Nambiar, Kaustav Niyogi, Farhad Merchant, Rainer Leupers, "Generador de hardware aritmético positivo parametrizado". ICCD 2018: 334-341.
- ^ Byrne, Simon (29 de marzo de 2016). "Implementación de Unums en Julia" . Consultado el 30 de mayo de 2016 .
- ^ "Aritmética de Unum en Julia: Unums.jl". GitHub . Consultado el 30 de mayo de 2016 .
- ^ "Julia Implementación de Unums: README". GitHub . Consultado el 30 de mayo de 2016 .
- ^ "Tipos y operaciones de Unum (Número universal): Unums". GitHub . Consultado el 30 de mayo de 2016 .
- ^ "jwmerrill/Pnums.jl". Github.com . Consultado el 30 de enero de 2017 .
- ^ "GitHub - ityonemo/Unum2: Pivote Unums". GitHub . 2019-04-29.
- ^ Ingole, Deepak; Kvasnica, Michal; De Silva, Himeshi; Gustafson, John L. "Reducción de las huellas de la memoria en el control predictivo de modelos explícitos utilizando números universales. Presentado al Congreso Mundial de la IFAC 2017" . Consultado el 15 de noviembre de 2016 .
- ^ Ingole, Deepak; Kvasnica, Michal; De Silva, Himeshi; Gustafson, John L. "MATLAB Prototipo de unum (munum)" . Consultado el 15 de noviembre de 2016 .
- ^ "GitHub - stillwater-sc/Universal: Aritmética de números universal". GitHub . 2019-06-16.
- ^ ab "Cerlane Leong / SoftPosit · GitLab". GitLab .
- ^ "Berkeley SoftFloat" . www.jhauser.us .
Otras lecturas
- Gustafson, John L. (marzo de 2013). "Precisión del tamaño adecuado: Computación desatada: la necesidad de lograr la precisión del tamaño adecuado para ahorrar energía, ancho de banda, almacenamiento y energía eléctrica" (PDF) . Archivado (PDF) desde el original el 6 de junio de 2016 . Consultado el 6 de junio de 2016 .
- Brueckner, rico (2 de marzo de 2015). "Presentación de diapositivas: John Gustafson explica la computación Unum con eficiencia energética". El informe rico . Dentro de HPC. Archivado desde el original el 10 de julio de 2016 . Consultado el 10 de junio de 2016 .
- Gustafson, John L. (2015). «El fin del error numérico» (PDF) . Archivado (PDF) desde el original el 6 de junio de 2016 . Consultado el 6 de junio de 2016 .
- Gustafson, John L. (3 de junio de 2016) [22 de febrero de 2016]. "Un enfoque radical de la computación con números reales - Unums versión 2.0" (PPT). Archivado desde el original el 10 de julio de 2016 . Consultado el 10 de julio de 2016 .(NB. Los PDF vienen sin notas: [5] [6])
- Gustafson, John L. (6 de junio de 2016). "Un enfoque masivamente paralelo y energéticamente eficiente para los números válidos" (PPT). Seminario OCRAR. Archivado desde el original el 10 de julio de 2016 . Consultado el 10 de julio de 2016 .[7] [8]
- Gustafson, John L. (2016). "Un enfoque radical de la computación con números reales" (PDF) . SuperFri.org. Archivado (PDF) desde el original el 10 de julio de 2016 . Consultado el 10 de julio de 2016 .
- Kulisch, Ulrich W. (2015). "Aritmética de intervalos actualizada desde intervalos cerrados hasta conjuntos conectados de números reales" (PDF) (preimpresión). Institut für Angewandte und Numerische Mathematik – Instituto Tecnológico de Karlsruhe (KIT), Alemania. DNI 15/02. Archivado (PDF) desde el original el 12 de julio de 2016 . Consultado el 12 de julio de 2016 .
- Risse, Thomas (10 de marzo de 2016). "Unum: una extensión conveniente de IEEE 754" (PDF) (presentación). Universidad London South Bank (LSBU), Reino Unido: Instituto de Informática y Automatización (IIA), Facultad de EEE y CS, Universidad de Ciencias Aplicadas de Bremen , Alemania. Archivado (PDF) desde el original el 12 de julio de 2016 . Consultado el 12 de julio de 2016 .
- Kahan, William M. (15 de julio de 2016). "Comentarios del profesor W. Kahan sobre la aritmética SORN" (PDF) . Archivado (PDF) desde el original el 1 de agosto de 2016 . Consultado el 1 de agosto de 2016 .
- Hunhold, Laslo (8 de noviembre de 2016). El formato numérico Unum: fundamentos matemáticos, implementación y comparación con los números de punto flotante IEEE 754 (PDF) (tesis de licenciatura). Universität zu Köln , Mathematisches Institut. arXiv : 1701.00722v1 . Archivado (PDF) desde el original el 7 de enero de 2017 . Consultado el 23 de octubre de 2016 .
- Sterbenz, Pat H. (1 de mayo de 1974). Computación de punto flotante . Serie Prentice-Hall sobre computación automática (1ª ed.). Englewood Cliffs, Nueva Jersey, Estados Unidos: Prentice Hall . ISBN 0-13-322495-3.
- Cueva, saltar (17 de agosto de 2016). "Implementación del lenguaje de programación J de Unums de precisión de 3, 4, 8 y 16 bits" . Consultado el 3 de mayo de 2017 .(Enlace de descarga de Roger Stokes: [9])
- Ingole, Deepak (28 de septiembre de 2017). Implementación integrada de control predictivo de modelos explícitos (tesis doctoral). Universidad Tecnológica de Eslovaquia en Bratislava , Eslovaquia.
enlaces externos
- "Conferencia sobre Aritmética de Próxima Generación (CoNGA)". 2017. Archivado desde el original el 4 de noviembre de 2017 . Consultado el 4 de noviembre de 2017 .
- "Posición suave". 2018 . Consultado el 13 de junio de 2018 .
- "Contribución del código fuente de la comunidad". 2018 . Consultado el 13 de junio de 2018 .
- "Anatomía de un número positivo". 2018-04-11 . Consultado el 9 de agosto de 2019 .