2017-08-26 5 views
3

Il existe une routine dans BLAS niveau 2 pour le produit vecteur matriciel à bandes, à la fois pour les cas généraux et symétriques (liens pour la mise en œuvre MKL).BLAS vecteurs vecteur matrice-vecteur de niveau 2 bande multiples

cblas_?gbmv

cblas_?sbmv

Est-il possible d'utiliser plusieurs vecteurs (sans utiliser en dehors de la boucle), pour optimiser les performances dans de tels cas?

+0

Lorsque vous avez une matrice complète dense (plus d'un vecteur), il n'y a aucun moyen d'exploiter la structure en bandes de l'un pour gagner en vitesse. – percusse

+0

@percusse Je ne pense pas que votre déclaration soit vraie. Peut-être avez-vous mal compris ma question? Je veux plusieurs vecteurs de droite, c'est-à-dire y = A * x où A est une bande éparse et x est N-en-d. Vous pouvez profiter de chaque vecteur dans x, puisque leurs résultats sont indépendants (chaque colonne de y) – fcdimitr

+0

Oui, c'est pourquoi BLAS3 ne les possède pas car il ne fait que boucler toutes les colonnes de y donc les fonctions BLAS2. BLAS3 utilise des blocs et non des colonnes de RHS. – percusse

Répondre

1

Je pense que le Spike library est censé avoir une telle routine pour le cas symétrique. J'ai peur de ne plus pouvoir aider, car je ne l'ai jamais utilisé.

L'algorithme et la mise en œuvre de Spike (pour la résolution de système) sont décrits dans [Polizzi & Sameh, Comp. Fluids (36), 2007].

+0

Je marque votre réponse comme correcte, sur Picaud Vincent, seulement parce que vous avez fourni une alternative valide. Cependant, je crois que c'est quelque chose qui devrait être disponible dans les implémentations BLAS. – fcdimitr