stringtranslate.com

Unum (formato de número)

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:

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:

  1. signo : 1 bit, que representa un entero sin signo s
  2. régimen: al menos 2 bits y hasta ( n  − 1), que representa un entero sin signo r como se describe a continuación
  3. exponente : hasta 2 bits disponibles después del régimen, lo que representa un entero sin signo e
  4. 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 002 (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:

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

Funciones auxiliares

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] [33]

Ver también

Referencias

  1. ^ 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".
  2. ^ 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]
  3. ^ 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 .
  4. ^ "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 .
  5. ^ 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 .
  6. ^ 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]
  7. ^ 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]
  8. ^ 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.
  9. ^ 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 .
  10. ^ 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
  11. ^ 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 .
  12. ^ 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 .
  13. ^ 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 .
  14. ^ 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.
  15. ^ 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].
  16. ^ 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.
  17. ^ S. Chung, "Aritmética de posiciones demostrablemente correcta con entero grande de punto fijo". ACM, 2018.
  18. ^ 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.
  19. ^ 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.
  20. ^ 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
  21. ^ 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.
  22. ^ Byrne, Simon (29 de marzo de 2016). "Implementación de Unums en Julia" . Consultado el 30 de mayo de 2016 .
  23. ^ "Aritmética de Unum en Julia: Unums.jl". GitHub . Consultado el 30 de mayo de 2016 .
  24. ^ "Julia Implementación de Unums: README". GitHub . Consultado el 30 de mayo de 2016 .
  25. ^ "Tipos y operaciones de Unum (Número universal): Unums". GitHub . Consultado el 30 de mayo de 2016 .
  26. ^ "jwmerrill/Pnums.jl". Github.com . Consultado el 30 de enero de 2017 .
  27. ^ "GitHub - ityonemo/Unum2: Pivote Unums". GitHub . 2019-04-29.
  28. ^ 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 .
  29. ^ Ingole, Deepak; Kvasnica, Michal; De Silva, Himeshi; Gustafson, John L. "MATLAB Prototipo de unum (munum)" . Consultado el 15 de noviembre de 2016 .
  30. ^ "GitHub - stillwater-sc/Universal: Aritmética de números universal". GitHub . 2019-06-16.
  31. ^ ab "Cerlane Leong / SoftPosit · GitLab". GitLab .
  32. ^ "Berkeley SoftFloat" . www.jhauser.us .
  33. ^ Kahan, William M. (15 de julio de 2016). "Comentario del profesor W. Kahan sobre" EL FINAL del ERROR - Unum Computing "por John L. Gustafson, (2015) CRC Press" (PDF) . Archivado (PDF) desde el original el 1 de agosto de 2016 . Consultado el 1 de agosto de 2016 .

Otras lecturas

enlaces externos