2009-12-02 16 views
4

Existe-t-il un équivalent de dgemm (à partir de BLAS) pour les types intégrales? Je ne connais que dgemm, sgemm pour les matrices double précision/simple précision, mais je voudrais l'avoir pour les matrices de type intégral comme int (ou short int ...).Multiplication matricielle pour les types intégraux utilisant BLAS

Note: Je ne cherche pas une solution qui implique la conversion en float/double, et je recherche une implémentation rapide de la librairie.

Aussi, même question pour dgemms (en utilisant l'algorithme de strassen).

Répondre

2

Les algorithmes BLAS ne supportent pas nativement les types entiers.

+0

C'est ce que je soupçonnais, mais y a-t-il une autre bibliothèque pour le faire? Même une implémentation naïve sur des chars unisgned sans contrôle de débordement est ~ 10 fois plus lente que dgemm en utilisant des doubles. J'espère qu'il y aurait un moyen de 1) éviter les goulots d'étranglement mémoire + temps impliqués dans la conversion en types virgule flottante intermédiaires. – spirov

+1

http://portal.acm.org/citation.cfm?id=1073899&dl=GUIDE&coll=GUIDE&CFID=64924169&CFTOKEN=87018353 Ceci est un lien vers une recherche publiée par acm sur l'algèbre linéaire exacte pour blas. Vous pourriez demander aux auteurs comment obtenir les bibliothèques qu'ils ont développées. – Paul

3

Vous n'avez pas spécifié de langage de programmation. En C++, vous pouvez interfacer avec une bibliothèque matricielle telle que Eigen (avertissement: je suis associé à ce projet). Eigen utilise la vectorisation donc ça devrait être assez rapide - assurez-vous de enable vectorization - mais je n'ai pas fait d'expériences donc je ne suis pas sûr. Il y a quelques problèmes compliqués qui peuvent être un problème pour vous, mais je ne suis pas familier avec eux.

This SO question décrit diverses bibliothèques matricielles C++, principalement dans le contexte de l'infographie.