Unums ( números universales [1] ) son una familia de formatos y aritmética, similar al punto flotante , propuesto por John L. Gustafson [2] . Están diseñados como una alternativa al omnipresente estándar de punto flotante IEEE 754 y la última versión (conocida como posits [3] ) se puede utilizar como un reemplazo directo para los programas que no dependen de las características específicas de IEEE 754.
Tipo I Unum
La primera versión de unums, ahora oficialmente conocida como unum Tipo I , se presentó en su libro The End of Error como un superconjunto del formato de punto flotante IEEE-754. [2] Las dos características que definen el formato unum Tipo I son:
- un formato de almacenamiento de ancho variable tanto para el significante como para el exponente , y
- un u-bit , que determina si el unum corresponde a un número exacto ( u = 0), o un intervalo entre unums exactos consecutivos ( u = 1). De esta manera, los unums cubren toda la recta numérica real extendida [−∞, + ∞].
Para realizar el cálculo con el formato, Gustafson propone usar aritmética de intervalos con un par de unums, lo que él llama un ubound , proporcionando la garantía de que el intervalo resultante contiene la solución exacta.
William M. Kahan y John L. Gustafson hablaron sobre los unums en la conferencia Arith23 . [4] [5] [6] [7]
Tipo II Unum
Los Unums Tipo II se introdujeron a finales de 2016 [8] como un rediseño total de Unums que rompió la compatibilidad con IEEE-754.
Unum tipo III (positivo y válido)
En febrero de 2017, Gustafson introdujo oficialmente Unums de tipo III que se componen de postula para fijo de punto flotante similar a valores y validas para aritmética de intervalos [3] .
Postular
Posits [3] [9] [10] son una versión de unum compatible con el hardware en la que se resuelven las dificultades enfrentadas en el unum tipo I original debido a su tamaño variable. Las posiciones de tamaño similar en comparación con los flotantes ofrecen un rango dinámico más grande y más bits de fracción para mayor precisión. En un estudio independiente, Lindstrom, Lloyd y Hittinger del Laboratorio Nacional Lawrence Livermore [11] confirmaron que las posturas superan a los flotadores en precisión. [ dudoso ] Las posiciones tienen una precisión particularmente 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 aprendizaje profundo para minimizar la cantidad de bits utilizados. Potencialmente, ayuda a cualquier aplicación a lograr una aceleración al permitir el uso de menos bits (ya que tiene más fracciones de bits para la precisión), lo que reduce el ancho de banda de la red y la memoria, y los requisitos de energía, y nos acerca un paso más a la exaescala .
Las posiciones tienen índices de tamaño variable y campos de bits de mantisa, y la división se especifica mediante un indicador de "régimen". Gustafson afirma que ofrecen una mayor precisión que los números de punto flotante estándar y ocupan menos bits. [12] [13]
Las posiciones tienen un formato diferente a los flotantes IEEE 754. Consisten en cuatro partes: signo, régimen, exponente y fracción (también conocida como significando / mantisa). Para una posición de n bits, el régimen puede tener una longitud de 2 a ( n - 1). El formato del régimen es tal que es una repetición de un bit del mismo signo y termina en un bit de signo diferente.
Ejemplo 1:
Ejemplo 1 | Ejemplo 2 |
---|---|
00000000000000 1 | 111 0 |
El ejemplo 1 muestra un régimen con 14 bits del mismo signo (bit 0), terminado por un bit de signo diferente (bit 1). Como hay 14 bits del mismo signo, la duración del régimen es 14.
El ejemplo 2 muestra un régimen con 3 bits del mismo signo (bit 1), terminado por un bit de signo diferente (bit 0). Como hay 3 bits del mismo signo, la longitud de ejecución del régimen es 3.
Los bits de signo, exponente y fracción son muy similares a IEEE 754; sin embargo, las posiciones pueden omitir uno o ambos bits de exponente y fracción, dejando una posición que consta únicamente de bits de signo y de régimen. El ejemplo 3 muestra la longitud de ejecución de régimen más larga posible para una posición positiva de 16 bits, donde el bit de terminación del régimen, el bit de exponente y los bits de fracción están más allá de la longitud del tamaño de la posición positiva. El ejemplo 4 ilustra la longitud de ejecución más corta posible de 1 para una posición de 16 bits con un bit de exponente (valor de bit = 1) y 12 bits de fracción (valor de bit = 100000000001).
Ejemplo 3: Duración del régimen = 15 | Ejemplo 4: Duración del régimen = 1 |
---|---|
0 111111111111111 | 0 1 0 1 100000000001 |
Los tamaños de positividad recomendados y los correspondientes bits de exponente y tamaños de quire:
Posit tamaño (bits) | Número de bits de exponente | Tamaño de Quire (bits) |
---|---|---|
8 | 0 | 32 |
dieciséis | 1 | 128 |
32 | 2 | 512 |
64 | 3 | 2048 |
Nota : Se espera que posit de 32 bits sea suficiente para resolver casi todas las clases de aplicaciones [ cita requerida ] .
Mano de papel
Quire es una de las características más útiles de las posiciones. Es un tipo de datos especial que le dará a las posiciones un número de bits "casi infinito" para acumular productos punto. Se basa en el trabajo de Ulrich W. Kulisch y Willard L. Miranker . [14]
Válido
Gustafson aún no ha publicado una especificación completa de los valores válidos, pero se describen como un modo Unum Tipo III que limita los resultados en un rango dado [3] .
Implementaciones
Hay varias implementaciones de software y hardware de postulaciones de la comunidad. [11] [15] [16] [17] [18] En 2018 se propuso el primer generador de hardware aritmético de positividad parametrizado completo. [19]
Las implementaciones de Unum se han explorado en Julia . [20] [21] [22] [23] [24] [25] y MATLAB . [26] [27] . También se proporciona una versión C ++ [28] con soporte para cualquier tamaño de positividad combinado con cualquier número de bits de exponente. Una implementación rápida en C, SoftPosit, [29] proporcionada por el equipo de investigación de NGA basado en Berkeley SoftFloat es la última incorporación a las implementaciones de software disponibles.
SoftPosit
SoftPosit [29] es una implementación de software de postulaciones que se basa en Berkeley SoftFloat. [30] Esto permite la comparación de software entre posiciones y flotantes. Actualmente es compatible
- Agregar
- Sustraer
- Multiplicar
- Dividir
- Fusionar-multiplicar-añadir
- Producto de punto fusionado (con quire)
- Raíz cuadrada
- Convertir posit en entero con y sin signo
- Convertir enteros con y sin signo en postular
- Convierta posit a otro tamaño de positividad
- Comparación menor que, igual, menor que igual
- Redondear al entero más cercano
Funciones auxiliares
- convertir doble en positivo
- convertir posit a doble
- emitir entero sin signo para postular
para posiciones de 16 bits con un bit de exponente y posiciones de 8 bits con bit de exponente cero. El soporte para posiciones de 32 bits y tipo flexible (2-32 bits con dos bits de exponente) está pendiente de verificación de corrección. Actualmente es compatible con sistemas x86_64. Ha sido 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
#include "softposit.h"int main ( int argc , char * argv []) { posit8_t pA , pB , pZ ; pA = castP8 ( 0xF2 ); pB = castP8 ( 0x23 ); pZ = p8_add ( pA , pB ); // Para verificar la respuesta convirtiéndola en double double 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 ); return 0 ; }
Producto escalar fusionado con quire16_t
// Convertir doble en 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 ;// Establecer 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 );// Convierta de nuevo 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 de tipo I por los siguientes motivos (algunos se abordan en los estándares de tipo II y tipo III): [6] [31]
- La descripción de unums utiliza el 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 desempaquetarlos en un espacio de tamaño fijo o asignación de datos, desasignación y recolección de basura durante las operaciones unum, similar a los problemas para tratar con registros de longitud variable en almacenamiento masivo.
- Los Unums proporcionan solo dos tipos de excepciones numéricas, silenciosas y de señalización NaN (Not-a-Number).
- El cálculo de Unum puede generar límites demasiado imprecisos a partir de la selección de un algoritmo algebraicamente correcto pero numéricamente inestable.
- Los costos y beneficios de unum sobre el punto flotante de precisión corta para problemas que requieren baja precisión no son obvios.
- Resolver ecuaciones diferenciales y evaluar integrales con unums garantiza respuestas correctas, pero puede que no sea tan rápido como los métodos que normalmente funcionan.
Ver también
- Aritmética precisa de Karlsruhe (KAA)
- Q (formato de número)
- Personajes importantes
- Mitigación de errores de coma flotante
- Código Elias gamma (γ)
- Punto flotante cónico (TFP)
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 . Asociación de Maquinaria de Computación (ACM). 2016 (abril): 1–14. doi : 10.1145 / 2913029 . Archivado desde el original el 10 de julio de 2016 . Consultado el 10 de julio de 2016 .
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".
- ^ a b Gustafson, John L. (4 de febrero de 2016) [5 de febrero de 2015]. El fin del error: Unum Computing . Chapman & Hall / CRC Computational Science . 24 (2ª impresión corregida, 1ª ed.). Prensa CRC . ISBN 978-1-4822-3986-7. Consultado el 30 de mayo de 2016 . [1] [2]
- ^ a b c d Gustafson, John Leroy ; Yonemoto, Isaac (2017). "Vencer al punto flotante en su propio juego: Aritmética de posiciones" . Fronteras e innovaciones de la supercomputación . Centro de Publicaciones de la Universidad Estatal de los Urales del Sur, Chelyabinsk, Rusia. 4 (2). 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) (video) . Consultado el 20 de julio de 2016 .
- ^ a b Kahan, William M. (16 de julio de 2016) [12 de julio de 2016]. "Una crítica de John L. Gustafson EL FINAL DEL ERROR - Computación Unum y su Enfoque radical de 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 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 una "última versión" sino una alternativa.
- ^ John L. Gustafson e 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). "Posit Aritmética" (PDF) . Archivado (PDF) desde el original el 5 de noviembre de 2017 . Consultado el 4 de noviembre de 2017 .
- ^ a b P. Lindstrom, S. Lloyd y J. Hittinger, "Codificación universal de los reales: alternativas al punto flotante IEEE". En la Conferencia de Aritmética de Próxima Generación. ACM, 2018.
- ^ Feldman, Michael (8 de julio de 2019). "Nuevo enfoque podría hundir el cálculo de punto flotante" . www.nextplatform.com . Consultado el 9 de julio de 2019 .
- ^ Byrne, Michael (24 de abril de 2016). "Un nuevo formato de número para computadoras podría destruir errores de aproximación para siempre" . Vice . Consultado el 9 de julio de 2019 .
- ^ Kulisch, Ulrich W .; Miranker, Willard L. (marzo de 1986). "La aritmética de la computadora digital: un nuevo enfoque". SIAM Rev. SIAM . 28 (1): 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 posiciones en lógica reconfigurable usando CAPI (abierto)". ACM, 2018.
- ^ Z. Lehoczky, A. Szabo y B. Farkas, "Implementaciones de software .NET de alto nivel de Unum Type I y Posit con implementación simultánea de FPGA con Hastlayer". ACM, 2018.
- ^ S. Langroudi, T. Pandit y D. Kudithipudi, "Inferencia de aprendizaje profundo en dispositivos integrados: punto fijo vs 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 de posición 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 Unum en Julia: Unums.jl" . Consultado el 30 de mayo de 2016 .
- ^ "Implementación de Julia de Unums: README" . Consultado el 30 de mayo de 2016 .
- ^ "Tipos y operaciones Unum (Número universal): Unums" . Consultado el 30 de mayo de 2016 .
- ^ "jwmerrill / Pnums.jl" . Github.com . Consultado el 30 de enero de 2017 .
- ^ "GitHub - ityonemo / Unum2: Pivot Unums" . 2019-04-29.
- ^ Ingole, Deepak; Kvasnica, Michal; De Silva, Himeshi; Gustafson, John L. "Reducción de huellas de memoria en control predictivo de modelos explícitos utilizando números universales. Presentado al Congreso Mundial de IFAC 2017" . Consultado el 15 de noviembre de 2016 .
- ^ Ingole, Deepak; Kvasnica, Michal; De Silva, Himeshi; Gustafson, John L. "Prototipo de MATLAB de unum (munum)" . Consultado el 15 de noviembre de 2016 .
- ^ "GitHub - stillwater-sc / Universal: aritmética de números universales" . 2019-06-16.
- ^ a b "Cerlane Leong / SoftPosit" .
- ^ "Berkeley SoftFloat" .
- ^ Kahan, William M. (15 de julio de 2016). "Comentario del Prof. W. Kahan sobre" EL FIN DEL ERROR - Computación Unum "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
- Gustafson, John L. (marzo de 2013). "Precisión del tamaño correcto: Computación desatada: La necesidad de precisión del tamaño correcto 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, Rich (2 de marzo de 2015). "Slidecast: John Gustafson explica la computación Unum energéticamente eficiente" . 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 archivos PDF vienen sin notas: [5] [6] )
- Gustafson, John L. (6 de junio de 2016). "Un enfoque energéticamente eficiente y masivamente paralelo a 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 de Tecnología de Karlsruhe (KIT), Alemania. ID 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). London South Bank University (LSBU), Reino Unido: Instituto de Informática y Automatización (IIA), Facultad de EEE & 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 de número Unum: fundamentos matemáticos, implementación y comparación con números de coma 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 en coma flotante . Serie Prentice-Hall en Computación Automática (1ª ed.). Englewood Cliffs, Nueva Jersey, EE.UU .: Prentice Hall . ISBN 0-13-322495-3.
- Cueva, saltar (2016-08-17). "Implementación del lenguaje de programación J de Precision Unums de 3 bits, 4 bits, 8 bits y 16 bits" . Consultado el 3 de mayo de 2017 .(Enlace de descarga de Roger Stokes: http://www.learningj.com/unumslab.zip )
- Ingole, Deepak (28 de septiembre de 2017). Implementación Embebida de Control Predictivo de Modelo Explícito (Tesis Doctoral). Universidad de Tecnología de Eslovaquia en Bratislava , Eslovaquia.
enlaces externos
- "Conferencia de 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 .
- "SoftPosit" . 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 .