2010-10-01 74 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')! 對不起,浪費你的時間。不知何故只是發佈似乎有幫助。