我正在尝试在我的c程序中使用BLAS来提高矩阵/矢量产品的速度。
手动我有这段代码:
counters
所以我试图用blas函数cblas_dgemv替换这个double,看起来像它:
for (j = 0; j < ann->hidden; ++j) {
double delta = 0;
//h is known before
for (k = 0; k < (h == ann->hidden_layers-1 ? ann->outputs : ann->hidden); ++k) {
const double forward_delta = dd[k];
const int windex = k * (ann->hidden + 1) + (j + 1);
const double forward_weight = ww[windex];
delta += forward_delta * forward_weight;
}
*d = *o * (1.0-*o) * delta;
++d; ++o;
}
}
输出值很好。
问题是我使用BLAS的实现比“手动”实现慢......
我不知道是不是因为我没有使用最优化的功能进行此计算,或者我做错了什么?
答案 0 :(得分:1)
好的关键是我的blas实现对于大矩阵来说更快但是blas的开销会减慢矩阵的速度!