La implementación de netlib BLAS es una excelente referencia, ya que no está optimizada y está bien documentada (por ejemplo, zgemm ). Sin embargo, está en Fortran 77, por lo que es algo inaccesible para aquellos con una educación de programación más moderna. ¿Existe una implementación de nivel de referencia de BLAS, como netlib, en C / C ++?
11
Una implementación notable en lenguaje C de BLAS es ATLAS. Entre las características útiles:
http://math-atlas.sourceforge.net/
fuente
Netlib también produce CLAPACK , que incluye BLAS, pero es solo el código fortran que se ejecuta a través de f2c y, por lo tanto, es un poco torpe (por ejemplo, zgemm ).
fuente
Para una implementación de alto rendimiento que no solo se encuentra entre las de mayor rendimiento (mejor que el 85% del pico en 60 núcleos de Intel Xeon Phi), sino que también es la más bellamente escrita, eche un vistazo a BLIS:
https://github.com/flame/blis
fuente
Tengo implementaciones de algunos bits de BLAS / LAPACK en RNP y RNP2 .
fuente
Actualmente estamos trabajando en un curso masivo abierto en línea, "LAFF-On High-Performance Computing" que utiliza dgemm como el ejemplo que lo lleva a uno a través de diferentes niveles de paralelización: nivel de instrucción, OpenMP, MPI.
Esta no es una implementación de referencia para BLAS, pero es una referencia sobre cómo codificar BLAS (para el rendimiento). Para mantenerse informado, visite www.ulaff.net
fuente