MKL CBlas ошибка - PullRequest
       18

MKL CBlas ошибка

0 голосов
/ 02 июня 2011

Я пытаюсь получить произведение двух матриц, скажем, A и B, в C, используя cblas, предоставленный Intel MKL Есть ли причина, по которой это может привести к ошибке?

double * A, *B, *C;

A = (double *) calloc(20 * 200, sizeof (double));
B = (double *) calloc(200 * 200, sizeof (double));
C = (double *) calloc(20 * 200, sizeof (double));

cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, 
     20, 200, 200,
     1.0, A, 20,
     B, 200,
     0.0, C, 20);

1 Ответ

1 голос
/ 17 сентября 2011

Дважды проверьте все параметры cblas_dgemm.Если у вас есть ошибка, функция может читать за пределами массива.Для небольших размеров, которые не вызовут ошибку, так как неверные адреса все равно попадут на одну страницу памяти.(Но математика будет неправильной, вы должны это проверить.) Но матрица 200x200 - это 2,5 мегабайта данных, пропуск неправильного размера обязательно вызовет ошибку segfault.

...