Я совершенно новой для BLAS (с использованием OpenBLAS с C++ и VisualStudio)Использование меньших матриц с BLAS
Я знаю DGEMM выполняет C < - альфа * ор (А) * ор (B) + бета * C
Я пытался сэкономить распределение делает это: B < - 1 * ор (А) * ор (B) + 0 * B
другими словами, помещая результат в матрице B ,
НО делает беты = 0 и повторение B в положении С, приводит к нулевому ответу.
Есть ли способ исправить это?
Код, который я использую:
double* A = new double [3*3]; //3 rows x 3 columns
A[0] = 8;
A[1] = 3;
A[2] = 4;
A[3] = 1;
A[4] = 5;
A[5] = 9;
A[6] = 6;
A[7] = 7;
A[8] = 2;
double* v = new double[3]; //3 rows x 1 column
v[0] = 3;
v[1] = 5;
v[2] = 2;
double* foo = new double[3]; //3 rows x 1 column
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans,
3, 1, 3,
1,
A, 3,
v, 3,
0,
foo, 3); // makes foo = [41 ; 48 ; 61], **right**
cblas_dgemm(CblasColMajor, CblasTrans, CblasTrans,
3, 1, 3,
1,
A, 3,
v, 3,
0,
v, 3); // makes v = [0 ; 0 ; 0], **wrong**
Да. Наверное, это что-то вроде этого. Но в документации это не сказано. Нехорошо.... –