The netlib BLAS implementation is an excellent reference, being mostly un-optimized and well documented (e.g. zgemm). However, it is in Fortran 77, making it somewhat inaccessible to those with a more modern programming education. Is there a reference-level implementation of BLAS, like netlib, in C/C++?
A notable, C language implementation of BLAS is ATLAS. Among useful features:
- Algebra routines implemented both as straightforward C as well as highly-optimized assembler assisted versions for multiple architectures and variants.
- The build system features an "auto-tuner" which compiles multiple variants of the ATLAS library to establish which one will be the fastest on the given machine.
For a high-performance implementation that is not only among the highest performing (better than 85% of peak on 60 cores of the Intel Xeon Phi), but is also imho the most beautifully written, have a look at BLIS:
We are currently working on a Massive Open Online Course, "LAFF-On High-Performance Computing" that uses dgemm as the example that leads one through different levels of parallelization: instruction level, OpenMP, MPI.
This is not a reference implementation for the BLAS, but it is a reference for how to code the BLAS (for performance). To be kept informed, visit www.ulaff.net