【问题标题】:SHould I trust BLAS libraries unconditionally to improve performance我应该无条件地信任 BLAS 库来提高性能吗
【发布时间】:2015-07-22 16:45:22
【问题描述】:

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

我见过一些例子,优化的 BLAS 库极大地提高了性能(矩阵矩阵乘法的 10 倍加速并不罕见)。

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

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

【问题讨论】:

    标签: blas


    【解决方案1】:

    不久前,我在一本书中读到:(1)关于优化的黄金法则:不要这样做(2)关于优化的黄金法则(仅供专家使用):不要这样做。简而言之,我建议按照以下方式进行:

    • 第 1 步:以最简单/最易读的方式实现算法
    • 第 2 步:衡量性能
    • 步骤 3:如果(且仅当)性能不令人满意,则使用分析器检测热点。它们通常不是我们想的那样!!
    • 第 4 步:仅针对热点尝试不同的替代方案(衡量每个替代方案的性能)

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

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 1970-01-01
      • 2011-09-04
      • 2018-11-02
      • 2011-02-15
      • 2012-07-24
      • 2012-10-20
      • 1970-01-01
      • 2014-09-06
      相关资源
      最近更新 更多