void cblas_dgemm(CBLAS_LAYOUT layout, CBLAS_TRANSPOSE TransA,
CBLAS_TRANSPOSE TransB, const int M, const int N,
const int K, const double alpha, const double *A,
const int lda, const double *B, const int ldb,
const double beta, double *C, const int ldc);
M,N,K
这三个参数很好理解,假设我们要计算 A*B(A,B都为矩阵),则A为MxK的矩阵,B为KxN的矩阵。
alpha, beta, C
这三个参数的解释要涉及到cblas_xgemm函数所要计算的表达式了。
C = a l p h a ∗ A ∗ B + b e t a ∗ C C=alpha*A*B+beta*C C=alpha∗A∗B+beta∗C
C是矩阵的常数项,并且最终的计算结果会赋值给C。
lda,ldb,ldc
假设要访问A[i,j],那么可以表达为
A [(i-1)*lda + j]
此时有lda>M。这就是lda,ldb,ldc参数存在的意义。