cblas_dgemm - correct parameters : incorrect error message
I am trying to compute: C = 1*(A*B') + 0*C
using cblas_dgemm().
As far as I can tell, the parameters are correct.
The error message itself does not make sense:
"ldb must be >= MAX(K,1): ldb=3 K=3Parameter 11 to routine cblas_dgemm was incorrect"
But, ldb = k = 3! Here is the detailed output of all three matrices and the parameters.
A: (m x n: 4x3), lda = 4
B': (n x k: 3x9), lda = 3
C: (m x k, 4x9), ldc = 4
A:
Dense matrix: 0xfe5cf0, nrows = 4, ncols = 3, ColumnMajor = 1
0.1246 0.5407 0.1822
0.1020 0.4639 0.3164
0.3058 0.9872 0.3348
0.8375 0.9343 0.5893
B:
Dense matrix: 0xfe5cd0, nrows = 9, ncols = 3, ColumnMajor = 1
0.4387 0.3447 0.2999
0.1582 0.6505 0.5076
0.1497 0.6515 0.7486
0.3936 0.1065 0.7850
0.7182 0.5477 0.0220
0.3291 0.0453 0开发者_如何学运维.6630
0.4005 0.3075 0.1818
0.4071 0.0083 0.0840
0.1868 0.0998 0.3279
C:
Dense matrix: 0xfe7180, nrows = 4, ncols = 9, ColumnMajor = 1
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
Transpose A ta = 111 (CblasNoTrans)
Transpose B tb = 112 (CblasTrans)
m = 4, k = 3, n = 9
lda = 4, ldb = 3, ldc = 4
alpha = 1, beta = 0
CALLING CBLAS_DGEMM:
cblas_dgemm( CblasColMajor, ta, tb, m, n, k, alpha, A->d, lda, B->d, ldb, beta, C->d, ldc );
I am sure I am making a silly mistake, I just can't spot it. Any help will be appreciated.
many thanks,
Russ
My understanding of ldb was incorrect. ldb refers to the rows(B) and NOT rows(B')! Sorry to have wasted your time. Somehow just posting seems to help.
精彩评论