我正在尝试使用 cblas_sgemm 对两个整数矩阵进行快速矩阵乘法。
现在它返回全零。
我运行了一个快速的简单矩阵乘法来仔细检查预期的输出数据,它们不应该是零。
工作天真的方法:
typedef int mm_data_t;
void func1( mm_data_t *in1, mm_data_t *in2, mm_data_t *out, int N ){
int i, j, k;
for(i=0; i<N; i++){
for(k=0; k<N; k++){
int temp = in1[i*N+k];
for(j=0; j<N; j++){
out[i*N+j] += temp * in2[k*N+j];
}
}
}
}
并使用 cblas_sgemm:
void func2( mm_data_t *in1, mm_data_t *in2, mm_data_t *out, int N ){
cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, N, N, N, 1.0, (float*)in1, N, (float*)in2, N, 0.0, (float*)out, N);
}
我正在使用一维数组进行优化。
输入数据是黑盒的,但是是恒定的。