1
我想用cblas_sgemm在兩個整數矩陣上進行快速矩陣乘法。輸入矩陣的整數到cblas_sgemm全部返回0
現在它返回全零。
我跑了一個快速樸素矩陣乘法來仔細檢查預期的輸出數據,它們不應該是零。
的工作幼稚的做法:
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);
}
我使用一個維數組進行優化。
輸入數據是黑盒子但是不變。