L'implémentation de netlib BLAS est une excellente référence, étant pour la plupart non optimisée et bien documentée (par exemple zgemm ). Cependant, c'est dans Fortran 77, ce qui le rend quelque peu inaccessible à ceux qui ont une formation en programmation plus moderne. Existe-t-il une implémentation de niveau de référence de BLAS, comme netlib, en C / C ++?
11
ATLAS est une implémentation notable en langage C de BLAS. Parmi les fonctionnalités utiles:
http://math-atlas.sourceforge.net/
la source
Netlib produit également CLAPACK , qui inclut BLAS, mais ce n'est que le code fortran exécuté via f2c et est donc un peu maladroit (par exemple zgemm ).
la source
Pour une implémentation haute performance qui est non seulement parmi les plus performantes (mieux que 85% du pic sur 60 cœurs de l'Intel Xeon Phi), mais qui est également à mon humble avis la plus belle, jetez un œil à BLIS:
https://github.com/flame/blis
la source
J'ai des implémentations de quelques bits de BLAS / LAPACK dans RNP et RNP2 .
la source
Nous travaillons actuellement sur un cours en ligne ouvert et massif, "LAFF-On High-Performance Computing" qui utilise dgemm comme exemple qui mène à différents niveaux de parallélisation: niveau d'instruction, OpenMP, MPI.
Ce n'est pas une implémentation de référence pour le BLAS, mais c'est une référence sur la façon de coder le BLAS (pour les performances). Pour être tenu informé, visitez www.ulaff.net
la source