当转置时,CUBLAS中的leading dimension参数解释

24
对于矩阵A文档仅说明相应的主导维参数lda是指:

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

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

2个回答

20

没有任何改变。主维度总是指代数组第一维的长度。数据顺序标志(normal,transpose,conjugate)只是告诉BLAS如何存储数组内部的数据。它们对数组本身没有影响,数组始终是按列主序排序的,并需要LDA值来在2D中进行索引。

因此,无论矩阵数据是否以转置形式存储,m x n数组总是具有LDA≥m。


6
根据你的回答,我准备得出LDA = m的结论,为什么那里有一个>符号? :/ 顺便点个赞。也许这个回答最终能回答问题:http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=217 - gsamaras
2
@gasamaras:考虑一下当BLAS调用在子矩阵上操作时,或者当硬件在矩阵的间距与内存控制器页面大小、缓存行大小或其他匹配时运行得更好。请参见https://dev59.com/hmsy5IYBdhLWcg3w9Srk。 - talonmies
1
谢谢!在我看来,您的答案应该被接受。 "BLAS中的LDA参数实际上是矩阵在线性内存中布局的步幅。" |||现在,我想转向分布式情况,如果您有时间,也许您可以花一些时间看看这个问题:http://stackoverflow.com/questions/30937544/confused-with-pdpotrf-arguments - gsamaras

7

如果您使用行优先表示,则“列”的数量将成为主导维度,而在列优先表示中,“行”的数量则相反。


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