在转置时澄清 CUBLAS 中的前导维度

Posted

技术标签:

【中文标题】在转置时澄清 CUBLAS 中的前导维度【英文标题】:Clarification of the leading dimension in CUBLAS when transposing 【发布时间】:2013-04-28 21:55:08 【问题描述】:

对于矩阵A,documentation 仅声明对应的前导维度参数lda 指的是:

用于存储矩阵A的二维数组的前导维度

因此,我认为这只是给定 CUBLAS 的列主要存储格式的 A 的行数。 但是,当我们考虑Op(A) 时,现在领先的维度指的是什么?

【问题讨论】:

【参考方案1】:

没有任何变化。前导维度总是是指数组第一个维度的长度。数据顺序标志(正常、转置、共轭)仅向 BLAS 指示数组中的数据如何存储。它们对数组本身没有影响,它始终是列主要排序的,并且需要一个 LDA 值才能在 2D 中建立索引。

所以无论矩阵数据是否以转置形式存储,一个m x n数组总是有LDA>=m。

【讨论】:

根据您的回答,我已经准备好得出 LDA = m 的结论。为什么那里有 > 符号? :/ +1顺便说一句。也许这毕竟回答了这个问题:icl.cs.utk.edu/lapack-forum/viewtopic.php?t=217 @gsamaras:想一想 BLAS 调用何时在子矩阵上运行,或者当矩阵的 pitch 与内存控制器页面大小或缓存行匹配时硬件工作得更好大小什么的。见***.com/q/8206563/681865 谢谢!恕我直言,您的答案应该是公认的答案。 “BLAS 中的 LDA 参数实际上是矩阵的步长,因为它是在线性内存中布局的。” |||现在,我想跳到分布式案例,所以如果你有时间,也许你可以看看这个问题:***.com/questions/30937544/…【参考方案2】:

如果您使用以行为主的表示,则“列”的数量将是前导维度,反之亦然,在“行”的以列为主的表示数中。

【讨论】:

以上是关于在转置时澄清 CUBLAS 中的前导维度的主要内容,如果未能解决你的问题,请参考以下文章

Pandas转置重置十进制舍入

SPSS中的转置

如何使用 blas 以最佳方式转置矩阵?

C++使用cuBLAS加速矩阵乘法运算

转置 Pandas 数据框保留索引

PyTorch 中的无维转置