En informática científica , GotoBLAS y GotoBLAS2 son implementaciones de código abierto de la API BLAS (subprogramas de álgebra lineal básica) con muchas optimizaciones hechas a mano para tipos de procesadores específicos . GotoBLAS fue desarrollado por Kazushige Goto en el Texas Advanced Computing Center . En 2003 , se utilizó en siete de las diez supercomputadoras más rápidas del mundo. [1][actualizar]
Autor (es) original (es) | Kazushige Goto |
---|---|
Lanzamiento final | 2-1.13 / 5 de febrero de 2010 |
Tipo | Biblioteca de álgebra lineal; implementación de BLAS |
Licencia | Licencia BSD |
Sitio web | www |
GotoBLAS permanece disponible, pero el desarrollo cesó con una versión final que promocionaba un rendimiento óptimo en la arquitectura Nehalem de Intel (contemporánea en 2008). [2] OpenBLAS es una bifurcación mantenida activamente de GotoBLAS, desarrollada en el Laboratorio de Software Paralelo y Ciencias Computacionales, ISCAS .
GotoBLAS fue escrito por Goto durante su licencia sabática de la Oficina de Patentes de Japón en 2002. Inicialmente fue optimizado para el procesador Pentium 4 y logró aumentar inmediatamente el rendimiento de una supercomputadora basada en esa CPU de 1.5 TFLOPS a 2 TFLOPS. [1] A partir de 2005 [actualizar], la biblioteca estaba disponible sin costo para uso no comercial. [1] Una versión posterior de código abierto fue lanzada bajo los términos de la licencia BSD .
La rutina de multiplicación matriz-matriz de GotoBLAS , llamada GEMM en términos BLAS, está altamente ajustada para las arquitecturas de los procesadores x86 y AMD64 mediante un código de ensamblaje hecho a mano . [3] Sigue una descomposición similar en rutinas de "kernel" más pequeñas que utilizan otras implementaciones de BLAS, pero donde las implementaciones anteriores transmitían datos desde el caché del procesador L1 , GotoBLAS usa el caché L2 . [3] El kernel utilizado para GEMM es una rutina llamada GEBP, para "Multiplicación general de bloque-tiempos-panel", [4] que se encontró experimentalmente que era "inherentemente superior" sobre varios otros núcleos que se consideraron en el diseño. [3]
Varias otras rutinas BLAS se implementan, como es habitual en las bibliotecas BLAS, en términos de GEMM. [4]
Ver también
Referencias
- ↑ a b c Markoff, John Gregory (28 de noviembre de 2005). "Escribir el código más rápido, a mano, por diversión: una computadora humana sigue acelerando chips" . New York Times . Seattle, Washington, Estados Unidos. Archivado desde el original el 23 de marzo de 2020 . Consultado el 4 de marzo de 2010 . [1]
- ^ Milfeld, Kent. "GotoBLAS2" . Centro de Computación Avanzada de Texas . Archivado desde el original el 23 de marzo de 2020 . Consultado el 28 de agosto de 2013 .
- ^ a b c Goto, Kazushige ; van de Geijn, Robert A. (2008). "Anatomía de la multiplicación de matrices de alto rendimiento". Transacciones ACM en software matemático . 34 (3): 12: 1–12: 25. CiteSeerX 10.1.1.111.3873 . doi : 10.1145 / 1356052.1356053 . ISSN 0098-3500 .(25 páginas) [2]
- ^ a b Goto, Kazushige ; van de Geijn, Robert A. (2008). "Implementación de alto rendimiento del BLAS de nivel 3" (PDF) . Transacciones ACM en software matemático . 35 (1): 1–14. doi : 10.1145 / 1377603.1377607 .