cblas_dgemm - правильные параметры: неверное сообщение об ошибке - PullRequest
4 голосов
/ 01 октября 2010

Я пытаюсь вычислить: 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" 

Но, ldb = 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 );

Я уверен, что делаю глупую ошибку, я просто не могу ее обнаружить.Любая помощь будет оценена.

большое спасибо,

Расс

1 Ответ

8 голосов
/ 01 октября 2010

Мое понимание ldb было неверным. ldb относится к строкам (B), а НЕ к строкам (B ')! Извините, что потратил впустую ваше время. Каким-то образом, кажется, что просто размещение сообщений.

...