【发布时间】:2014-12-13 14:56:27
【问题描述】:
我已经仔细阅读了一段时间,但无法找到正确的答案:
CUDA 中是否有就地对角矩阵转置的实现?
我知道 cublas gem,但这需要创建另一个矩阵。我尝试了一个幼稚的实现:CUDA In-place Transpose Error
但是,这只适用于方阵。有人可以向我解释为什么这个逻辑对对角矩阵不起作用吗?换位的“幼稚”方法虽然有效,但还没有到位。
【问题讨论】:
-
你的对角矩阵是正方形的,还是矩形的
m x n矩阵,m != n?我认为是后者,因为方形对角矩阵是对称的,因此它们自己的转置。您能否指出一篇定义标准算法或来自基于 CPU 的参考库中的函数的论文,该参考库执行矩形对角矩阵的转置? -
如果您真的想在 O(1) 空间内就地执行此操作,请查看此实现:careercup.com/question?id=12339553(名为 111 的人的第四个答案)。但这对于 CUDA 来说可能不是一个好的实现。你也检查过这个:research.nvidia.com/publication/…
-
njuffa :它们是矩形的,其中 m != n。我已经尝试过天真的转置实现,可以在这里查看:github.com/parallel-forall/code-samples/blob/master/series/…
-
谢谢 asm 。我将尝试实现该论文中的逻辑。
-
@bge0:我将论文的链接添加到答案中,以便其他人可以轻松找到它。有帮助的可以采纳