Las GPU modernas cuentan con hardware especializado para aritmética en punto flotante de baja precisión para acelerar cargas de trabajo computacionales intensivas que no requieren alta precisión numérica, como las de inteligencia artificial. Sin embargo, a pesar de las ganancias significativas en rendimiento computacional, utilización del ancho de banda de memoria y eficiencia energética, integrar formatos de baja precisión en aplicaciones científicas sigue siendo difícil. Presentamos Kernel Float, una biblioteca en C++ solo de encabezado que simplifica el desarrollo de núcleos de GPU portátiles de precisión mixta. Kernel Float proporciona un tipo de vector genérico, una interfaz unificada para operaciones matemáticas comunes y aproximaciones rápidas para funciones trascendentales de baja precisión que carecen de soporte de hardware nativo. Para demostrar el potencial de la computación de precisión mixta desbloqueado por nuestra biblioteca, integramos Kernel Float en nueve núcleos de GPU de diversos dominios. Nuestra evaluación en GPU Nvidia A100 y AMD MI250X muestra mejoras de rendimiento de hasta \ (12\) sobre doble precisión, mientras reduce la longitud del código fuente en hasta un 50% en comparación con núcleos escritos a mano y tiene un costo de ejecución insignificante. Nuestros resultados muestran además que el rendimiento de precisión mixta depende no solo de elegir tipos de datos apropiados, sino también de ajustar parámetros de optimización tradicionales (por ejemplo, tamaño de bloque y ancho del vector) y, cuando corresponde, incluso parámetros específicos del dominio.
Ben van Werkhoven (jue,) estudió esta cuestión.