在转置时澄清 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 中的前导维度的主要内容,如果未能解决你的问题,请参考以下文章