【发布时间】:2011-06-02 09:59:40
【问题描述】:
我尝试使用英特尔 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);
【问题讨论】:
-
你有错误吗?如果有,是什么?
-
什么样的错误?汇编?运行? “错误”的结果?
-
程序通过“进程意外终止”自行终止。但是,当我将 20 替换为 2 并将 200 替换为 3 时。程序运行良好;没有错误。
-
我只是得到“分段错误”。
-
这段代码对我来说看起来是正确的,即使在 valgrind 上运行它也不会给我任何错误。我怀疑问题出在其他地方。