Aritmética de precisión mixta


La aritmética de precisión mixta es una forma de aritmética de punto flotante que usa números con diferentes anchos en una sola operación.

Un uso común de la aritmética de precisión mixta es operar con números inexactos con un ancho pequeño y expandirlos a una representación más grande y precisa. Por ejemplo, dos números de punto flotante de precisión media o bfloat16 (16 bits) se pueden multiplicar para obtener un número flotante de precisión simple (32 bits) más preciso. [1] De esta forma, la aritmética de precisión mixta se aproxima a la aritmética de precisión arbitraria , aunque con un bajo número de precisiones posibles.

La aritmética de precisión mixta se promociona en el campo del aprendizaje automático , ya que los algoritmos de descenso de gradiente pueden usar flotadores de precisión media gruesos y eficientes para ciertas tareas, pero pueden ser más precisos si usan flotadores de precisión simple o doble más precisos pero más lentos . Algunas plataformas, incluidas las GPU de Nvidia y AMD , proporcionan aritmética de precisión mixta para este propósito, utilizando flotantes gruesos cuando es posible, pero expandiéndolos a una mayor precisión cuando es necesario. [1] [2]

Los algoritmos iterativos (como el descenso de gradiente ) son buenos candidatos para la aritmética de precisión mixta. En un algoritmo iterativo como la raíz cuadrada , se puede hacer una suposición integral aproximada y refinarla en muchas iteraciones hasta que el error en la precisión hace que la suma o resta más pequeña de la suposición sea demasiado tosca para ser una respuesta aceptable. Cuando esto sucede, la precisión se puede aumentar a algo más preciso, lo que permite utilizar incrementos más pequeños para la aproximación.

Las supercomputadoras como Summit utilizan aritmética de precisión mixta para ser más eficientes con respecto a la memoria y el tiempo de procesamiento, así como el consumo de energía. [1] [2] [3]