0

BLAS は初めてです (C++ と VisualStudio で OpenBLAS を使用しています)。

私はdgemmがC <- alpha * op(A) * op(B) + beta * Cを実行することを知っています

私はこれを行っていくつかの割り当てを保存しようとしていました: B <- 1 * op(A) * op(B) + 0 * B

つまり、結果を B 行列に入れると、

しかし、 beta = 0を作成し、 Cの位置で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**
4

1 に答える 1