在BLAS-3.10.01 的 sgemm.f 文件中,有如下对LDA的描述:
\param[in] A
*> \verbatim
*> A is REAL array, dimension ( LDA, ka ), where ka is
*> k when TRANSA = 'N' or 'n', and is m otherwise.
*> Before entry with TRANSA = 'N' or 'n', the leading m by k
*> part of the array A must contain the matrix A, otherwise
*> the leading k by m part of the array A must contain the
*> matrix A.
*> \endverbatim
*>
*> \param[in] LDA
*> \verbatim
*> LDA is INTEGER
*> On entry, LDA specifies the first dimension of A as declared
*> in the calling (sub) program. When TRANSA = 'N' or 'n' then
*> LDA must be at least max( 1, m ), otherwise LDA must be at
*> least max( 1, k ).
*> \endverbatim
LDA 是矩阵中一列数据的长度,要么LDA>=m, 要么LDA>=k;
当 TRANSA = 'N' 时, LDA>=m; 这时,输入指针A指向的数据区域,是将一个矩阵Matrix_A(LDA, K) 按照列主序一维化存储下来的结果。
当TRANSA = 'T' 时, LDA>=k; 这时,输入指针A指向的数据区域,是将一个矩阵Matrix_A(LDA, M) 按照列主序一维化存储下来的结果,这时矩阵Matrix_A是以矩阵A的转置方式输入给函数SGEMM的。
ldb的理解,和 B 所给出的数据也一样。
本文解析BLAS SGEMM函数中LDA参数的含义,特别关注其在不同TRANSA标志下的角色:当为列主序存储时,LDA需分别满足m(N模式)或k(T模式)的边界条件,确保正确传递矩阵数据。
407

被折叠的 条评论
为什么被折叠?



