如何使用BLAS以最优方式转置矩阵?

10
我正在进行一些计算,并对不同的BLAS实现的力量和弱点进行分析。然而,我遇到了一个问题。
我正在测试cuBlas,在GPU上进行线性代数似乎是个好主意,但有一个问题。cuBlas实现使用列优先格式,而这不是我最终需要的内容,我想知道是否有一种方法可以使BLAS执行矩阵转置?

1
"....而且由于这不是最终的......"。缺少几个单词? - talonmies
2
从CUDA 5.0开始,cuBLAS有cublas<t>geam,这是一种非常高效的例程,用于执行矩阵转置。要获取实现此解决方案并将其与使用Thrust进行矩阵转置的性能进行比较的完整代码,请参见What is the most efficient way to transpose a matrix in CUDA? - Vitality
1个回答

13

BLAS没有内置矩阵转置例程。CUDA SDK包括一个矩阵转置示例,其中附带了一篇论文,讨论了执行转置的最佳策略。您最好的策略可能是使用行主输入到CUBLAS并使用调用的转置版本,然后在列主中执行中间计算,最后使用SDK转置核心执行转置操作。


编辑补充:CUBLAS在CUBLAS版本5中添加了一个转置例程geam,可以在GPU内存中执行矩阵转置,并应视为无论您使用的架构如何都是最佳的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接