Existe-t-il une implémentation de niveau de référence de BLAS en C / C ++?


11

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 ++?

Réponses:


10

Avez-vous examiné la mise en œuvre de la bibliothèque scientifique GNU ? Je trouve que le code source est suffisamment lisible et que les routines sont bien documentées.


Cela me semble correct. La documentation fait un peu défaut, mais les noms de variables sont assez bien choisis pour que je pense que c'est clair. Je vais probablement ajouter le commentaire d'ouverture des routines netlib BLAS. Avec quoi vous opposez-vous exactement? Avez-vous une alternative?
Max Hutchinson

6

ATLAS est une implémentation notable en langage C de BLAS. Parmi les fonctionnalités utiles:

  1. Les routines d'algèbre sont implémentées à la fois en C simple et en versions assistées par assembleur hautement optimisées pour de multiples architectures et variantes.
  2. Le système de construction comporte un "auto-tuner" qui compile plusieurs variantes de la bibliothèque ATLAS pour déterminer laquelle sera la plus rapide sur la machine donnée.

http://math-atlas.sourceforge.net/


J'ai regardé ATLAS mais j'ai raté ça. Le chemin d'accès à l'implémentation de référence est "src / blas / reference", avec "ref" inséré entre le type caractère et le nom de routine et avec des arguments de caractère ajoutés.
Max Hutchinson

3

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 ).


1

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


Cela ne semble pas être une implémentation de niveau de référence
mabraham

Nous aimons en faire une implémentation de référence haute performance.
Robert van de Geijn

0

J'ai des implémentations de quelques bits de BLAS / LAPACK dans RNP et RNP2 .


C'est intéressant, mais c'est définitivement post-BLAS et moins simple que GSL et l'implémentation de référence dans ATLAS.
Max Hutchinson

-1

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.