2011-10-16 5 views
9

Je fais des calculs et je fais des analyses sur les forces et les faiblesses des différentes implémentations BLAS. Cependant, j'ai rencontré un problème. Je teste cuBlas, faire linAlg sur le GPU me semble une bonne idée, mais il y a un problème. L'implémentation de cuBlas en utilisant le format colonne-majeur, et puisque ce n'est pas ce dont j'ai besoin à la fin, je suis curieux de savoir si on peut faire BLAS faire matrice-transposer?Comment transposer une matrice de manière optimale en utilisant blas?

+1

".... et puisque ce n'est pas ce que finalement .....". Il manque quelques mots? – talonmies

+2

A partir de CUDA 5.0, cuBLAS a 'cublas geam' qui est une routine très efficace pour effectuer une transposition matricielle. Pour un code complet implémentant cette solution et comparant les performances avec la transposition matricielle à l'aide de Thrust, voir [Quel est le moyen le plus efficace de transposer une matrice dans CUDA?] (Http://stackoverflow.com/questions/15458552/what-is- la façon la plus efficace de transposer une matrice en cuda/21803459 # 21803459). – JackOLantern

Répondre

10

BLAS n'a pas de routine de transposition matricielle intégrée. Le SDK CUDA inclut un exemple de transposition matricielle avec un papier qui traite de la stratégie optimale pour effectuer une transposition. Votre meilleure stratégie est probablement d'utiliser les entrées majeures de la ligne vers CUBLAS avec la version d'entrée de transposition des appels, puis d'effectuer les calculs intermédiaires dans la colonne major, et enfin d'effectuer une opération de transposition en utilisant le noyau de transposition SDK.


Edité ajouter que CUBLAS ajouté une routine de transposition dans la version CUBLAS 5, geam, qui peut être réalisée à la transposition de la matrice dans la mémoire GPU et doit être considérée comme optimale quelle que soit l'architecture que vous utilisez.

Questions connexes