Простой код cblas gemm, но странный результат - PullRequest
0 голосов
/ 27 ноября 2018

Ниже приведен код c

const int M = 4;
const int N = 1;
const int K = 2;
const int LDA = M;
const int LDB = K;
const int LDC = M;
float input_data[2]{1, 1};
float weight_data[8]{1.1, 2.01, 3.001, 4.0001, 5.1, 6.01, 7.001, 8.0001};
float output_data[4];

cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, M, N, K, 1, weight_data, LDA, input_data, LDB, 0, output_data, LDC);

Ожидаемый результат: {6.2, 8.02, 10.002, 12.0002}.Вместо этого я получил {4.101, 6.0101, 12.101, 14.0101}.

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

Не могли бы вы помочь указать на проблему?Заранее спасибо!


Обновление:

Я пробовал 2 * 2 и 3 * 2 weight_data, оба результата верны.Однако 4 * 2 weight_data дает неправильный результат

1 Ответ

0 голосов
/ 05 декабря 2018

Получается ошибка OpenBLAS.Я никогда не думал, что в openblas может быть ошибка.Это тратит мои два дня.

https://github.com/xianyi/OpenBLAS/issues/1870

...