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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With