Articulo de referencia

GotoBLAS

En computación científica , GotoBLAS y GotoBLAS2 son implementaciones de código abierto de la API BLAS (Basic Linear Algebra Subprograms) con muchas optimizaciones hechas a mano...

En computación científica , GotoBLAS y GotoBLAS2 son implementaciones de código abierto de la API BLAS (Basic Linear Algebra Subprograms) con muchas optimizaciones hechas a mano para tipos de procesadores específicos . GotoBLAS fue desarrollado por Kazushige Goto en el Centro de Computación Avanzada de Texas . A partir de 2003, se utilizó en siete de las diez supercomputadoras más rápidas del mundo. [ 1 ]

GotoBLAS sigue disponible, pero su desarrollo cesó con una versión final que presumía de un rendimiento óptimo en la arquitectura Nehalem de Intel (contemporánea en 2008). [ 2 ] OpenBLAS es una bifurcación de GotoBLAS que se mantiene activamente, desarrollada en el Laboratorio de Software Paralelo y Ciencias Computacionales, ISCAS .

GotoBLAS fue escrito por Goto durante su año sabático en la Oficina de Patentes de Japón en 2002. Inicialmente, se optimizó para el procesador Pentium 4 y logró aumentar de inmediato el rendimiento de una supercomputadora basada en esa CPU de 1,5 TFLOPS a 2 TFLOPS. [ 1 ] A partir de 2005, la biblioteca estaba disponible sin costo para uso no comercial. [ 1 ] Posteriormente se publicó una versión de código abierto bajo los términos de la licencia BSD .

La rutina de multiplicación de matrices de GotoBLAS , denominada GEMM en términos de BLAS, está altamente optimizada para las arquitecturas de procesadores x86 y AMD64 mediante código ensamblador diseñado manualmente . [ 3 ] Sigue una descomposición similar en rutinas de "núcleo" más pequeñas que utilizan otras implementaciones de BLAS, pero mientras que las implementaciones anteriores transmitían datos desde la caché L1 del procesador , GotoBLAS utiliza la caché L2 . [ 3 ] El núcleo utilizado para GEMM es una rutina denominada GEBP, por "Multiplicación general de bloques por paneles", [ 4 ] que experimentalmente se encontró que era "intrínsecamente superior" a varios otros núcleos que se consideraron en el diseño. [ 3 ]

Varias otras rutinas BLAS, como es habitual en las bibliotecas BLAS, están implementadas en términos de GEMM. [ 4 ]

A partir de enero de 2022, el sitio web del Centro de Computación Avanzada de Texas [ 5 ] indica que Goto BLAS ya no recibe mantenimiento y sugiere el uso de BLIS o MKL .

Véase también

Referencias

  1. 1 2 3 Markoff, John Gregory (28 de noviembre de 2005). "Escribiendo el código más rápido, a mano, por diversión: una computadora humana sigue acelerando los chips" . New York Times . Seattle, Washington, EE. UU. Archivado del original el 23 de marzo de 2020. Recuperado el 4 de marzo de 2010 .
  2. Milfeld, Kent. "GotoBLAS2" . Centro de Computación Avanzada de Texas . Archivado del original el 23 de marzo de 2020. Consultado el 28 de agosto de 2013 .
  3. 1 2 3 Goto, Kazushige ; van de Geijn, Robert A. (2008). "Anatomía de la multiplicación de matrices de alto rendimiento". ACM Transactions on Mathematical Software . 34 (3): 12:1–12:25. CiteSeerX 10.1.1.111.3873 . doi : 10.1145/1356052.1356053 . ISSN 0098-3500 .  (25 páginas)
  4. 1 2 Goto, Kazushige ; van de Geijn, Robert A. (2008). "Implementación de alto rendimiento de BLAS de nivel 3" (PDF) . ACM Transactions on Mathematical Software . 35 (1): 1– 14. doi : 10.1145/1377603.1377607 . Archivado del original (PDF) el 6 de julio de 2017.
  5. "BLAS-LAPACK en TACC" . Centro de Computación Avanzada de Texas .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )