Die Implementierung von netlib BLAS ist eine hervorragende Referenz, da sie größtenteils nicht optimiert und gut dokumentiert ist (z . B. zgemm ). Es befindet sich jedoch in Fortran 77, was es für Personen mit einer moderneren Programmierausbildung etwas unzugänglich macht. Gibt es eine Referenzimplementierung von BLAS wie netlib in C / C ++?
11
Eine bemerkenswerte Implementierung von BLAS in C-Sprache ist ATLAS. Unter nützlichen Funktionen:
http://math-atlas.sourceforge.net/
quelle
Netlib produziert auch CLAPACK , das BLAS enthält, aber es ist nur der fortran-Code, der durch f2c ausgeführt wird, und ist daher etwas klobig (z . B. zgemm ).
quelle
Für eine Hochleistungsimplementierung, die nicht nur zu den leistungsstärksten gehört (besser als 85% des Peaks auf 60 Kernen des Intel Xeon Phi), sondern auch die am besten geschriebene ist, schauen Sie sich BLIS an:
https://github.com/flame/blis
quelle
Ich habe Implementierungen einiger Bits von BLAS / LAPACK in RNP und RNP2 .
quelle
Wir arbeiten derzeit an einem massiven offenen Online-Kurs, "LAFF-On High-Performance Computing", der dgemm als Beispiel verwendet, das einen durch verschiedene Parallelisierungsebenen führt: Befehlsebene, OpenMP, MPI.
Dies ist keine Referenzimplementierung für das BLAS, sondern eine Referenz für die Codierung des BLAS (für die Leistung). Um auf dem Laufenden zu bleiben, besuchen Sie www.ulaff.net
quelle