int의 두 행렬에 대해 빠른 행렬 곱셈을 수행하기 위해 cblas_sgemm을 사용하려고합니다.cblas_sgemm에 ints의 입력 행렬이 모두 0을 반환합니다.
지금은 모두 0을 반환합니다.
예상되는 출력 데이터를 두 번 확인하기 위해 빠른 순진 행렬 곱하기를 실행했으며 그 값은 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);
}
.
입력 데이터는 검정 상자이지만 일정합니다.