1
無論我在這裏做什麼,我似乎都無法從DGEMM中獲得正確的結果。我正在玩CBLAS。DGEMM後最後一行的零值
這裏是相關的代碼。
主要功能:
int main()
{
struct Matrix* foo = new(Matrix, 3, 2, (double[6]){ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 });
struct Matrix* bar = new(Matrix, 2, 3, (double[6]){ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 });
struct Matrix* baz = matrix_mul(foo, bar);
...
這裏是matrix_mul:
void* matrix_mul(struct Matrix* self, struct Matrix* b)
{
struct Matrix* c;
size_t m = self->m;
size_t n = b->n;
printf("%u,%u\n", m, n);
c = new(Matrix, m, n, NULL);
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, m, n,
self->m, 1.0, self->data, self->m, b->data, b->m, 0.0,
c->data, m);
return c;
}
當我打印出來的結果,我得到這個:
32.0 32.0 32.0
32.0 32.0 32.0
0.0 0.0 0.0
雖然我預計:
32.0 32.0 32.0
32.0 32.0 32.0
32.0 32.0 32.0
我在做什麼錯誤的dgemm?
你是對的,當我發佈我有錯的問題。將更新我的問題。 – csnate 2014-10-05 21:32:39