Blas dgemv比手动实现慢

时间:2017-10-25 09:35:00

标签: c blas openblas cblas

我正在尝试在我的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的实现比“手动”实现慢......

我不知道是不是因为我没有使用最优化的功能进行此计算,或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

好的关键是我的blas实现对于大矩阵来说更快但是blas的开销会减慢矩阵的速度!