Как оптимально транспонировать матрицу, используя blas? - PullRequest
9 голосов
/ 16 октября 2011

Я делаю некоторые расчеты и анализирую сильные и слабые стороны различных реализаций BLAS. Однако я столкнулся с проблемой.

Я тестирую cuBlas, выполнение linAlg на GPU может показаться хорошей идеей, но есть одна проблема.

Реализация cuBlas с использованием формата столбца-мажора, и, поскольку в конце концов это не то, что мне нужно, мне любопытно, есть ли способ, с помощью которого BLAS может выполнить транспонирование матрицы?

1 Ответ

10 голосов
/ 16 октября 2011

BLAS не имеет встроенной процедуры транспонирования матрицы. CUDA SDK включает пример транспонирования матрицы с документом, в котором обсуждается оптимальная стратегия выполнения транспонирования. Ваша лучшая стратегия, вероятно, состоит в том, чтобы использовать основные входные данные строки в CUBLAS с входной версией вызовов транспонирования, затем выполнять промежуточные вычисления в главном столбце и, наконец, впоследствии выполнять операцию транспонирования с использованием ядра транспонирования SDK.


Отредактировано, чтобы добавить, что в CUBLAS добавлена ​​подпрограмма транспонирования в CUBLAS версии 5, geam, которая может выполнять преобразование матрицы в памяти графического процессора и должна рассматриваться как оптимальная для любой используемой вами архитектуры.

...