2010-10-01 126 views
4

我想用cblas_dgemm()计算:C = 1*(A*B') + 0*C。 据我所知,参数是正确的。 错误消息本身没有意义:cblas_dgemm - 正确的参数:不正确的错误信息

"ldb must be >= MAX(K,1): ldb=3 K=3Parameter 11 to routine cblas_dgemm was incorrect" 

但是,六味地黄丸= K = 3!以下是所有三个矩阵和参数的详细输出。

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); 

我相信我犯了一个愚蠢的错误,我只是无法发现它。任何帮助将不胜感激。

千恩万谢,

拉斯

回答

8

我的六味地黄丸的理解是不正确的。 ldb引用行(B)和非行(B')! 对不起,浪费你的时间。不知何故只是发布似乎有帮助。