我正在研究一些涉及计算密集型图像处理算法的项目,该算法涉及BLAS库(主要是1级例程)可以处理的许多步骤。由于我的数据非常大,所以考虑使用BLAS肯定是有意义的。
我已经看到了优化的BLAS库提供了巨大的性能提升的例子(矩阵矩阵乘法的加速因子10并不罕见)。
我是否应尽可能应用BLAS功能并盲目相信它会产生更好的性能,还是应该逐案分析并仅在必要时应用BLAS?
盲目应用BLAS的好处是我现在节省了一些时间,因为我不必详细描述我的代码。另一方面,仔细分析每种方法可能会给我提供最好的性能,但我想知道现在是否值得花几个小时才能在运行软件后获得半秒钟。
答案 0 :(得分:1)
有点激动,我读了一本书:(1)关于优化的黄金法则:不要这样做(2)关于优化的黄金法则(仅限专家):不要这样做。简而言之,我建议按以下步骤进行:
更具体地说明你的问题:是的,BLAS的一个好的实现可以产生一些不同(它可以使用AVX指令集,并且对于矩阵时间矩阵乘法,以更加缓存友好的方式将矩阵分解为bloc) ,但同样,我不会“无条件地信任”(取决于BLAS的版本,数据,目标机器等...),然后测量性能和比较绝对必要。