我应该无条件地信任BLAS库来提高性能

时间:2015-07-22 08:15:56

标签: blas

我正在研究一些涉及计算密集型图像处理算法的项目,该算法涉及BLAS库(主要是1级例程)可以处理的许多步骤。由于我的数据非常大,所以考虑使用BLAS肯定是有意义的。

我已经看到了优化的BLAS库提供了巨大的性能提升的例子(矩阵矩阵乘法的加速因子10并不罕见)。

我是否应尽可能应用BLAS功能并盲目相信它会产生更好的性能,还是应该逐案分析并仅在必要时应用BLAS?

盲目应用BLAS的好处是我现在节省了一些时间,因为我不必详细描述我的代码。另一方面,仔细分析每种方法可能会给我提供最好的性能,但我想知道现在是否值得花几个小时才能在运行软件后获得半秒钟。

1 个答案:

答案 0 :(得分:1)

有点激动,我读了一本书:(1)关于优化的黄金法则:不要这样做(2)关于优化的黄金法则(仅限专家):不要这样做。简而言之,我建议按以下步骤进行:

  • 第1步:以最简单/最清晰的方式实施算法
  • 第2步:衡量表现
  • 步骤3:如果(且仅当)表现不令人满意,请使用分析器检测热点。他们往往不在我们想到的地方!!
  • 步骤4:仅针对热点尝试不同的替代方案(测量每种替代方案的性能)

更具体地说明你的问题:是的,BLAS的一个好的实现可以产生一些不同(它可以使用AVX指令集,并且对于矩阵时间矩阵乘法,以更加缓存友好的方式将矩阵分解为bloc) ,但同样,我不会“无条件地信任”(取决于BLAS的版本,数据,目标机器等...),然后测量性能和比较绝对必要。