MKL CBlas错误

时间:2011-06-02 09:59:40

标签: c matrix blas

我尝试使用英特尔MKL提供的cblas将两个矩阵A和B的乘积变成C语言。 是否有任何理由导致错误?

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 个答案:

答案 0 :(得分:1)

仔细检查cblas_dgemm的所有参数。如果您有错误,该函数可能超出数组范围。对于不会触发故障的小尺寸,因为坏地址仍然落在单个存储页面内。 (但是数学会出错,你应该检查它。)但200x200矩阵是2.5兆字节的数据,传递错误的大小肯定会引发段错误。