预测密集线性代数的运行时间

计算科学 线性代数 机器学习
2021-12-05 07:15:53

我想使用特定库预测特定架构上密集线性代数运算的运行时间。我想学习一个近似函数的模型

Fop::输入尺寸运行

用于矩阵乘法、逐元素加法、三角求解等操作。

我怀疑一旦超出了适合缓存的问题大小,由于操作的规律性,这些运行时大多是可预测的。

问题:

  1. 这个假设现实吗?运行时函数是否可能几乎是确定性的?
  2. 我可以假设这个函数在输入的大小上是多项式的吗?(即我希望密集矩阵乘法看起来像αn×k×m为了Ank×Bkmα一些标量系数)
  3. 在某处有这方面的工作吗?
  4. 我目前的计划是做最小二乘回归L1正则化器。还有其他建议吗?

编辑:要清楚我正在寻找运行时,而不是 FLOP 或任何其他常见的性能指标。我愿意将自己限制在一种特定的架构上。

2个回答

我最近一直在研究这个主题。您可能想看看我们的论文:http ://arxiv.org/abs/1209.2364 。

您为什么对线性代数例程的运行时预测感兴趣?您是否打算将模型用于特定目的?

有很多预先存在的工作。大多数线性代数库开发人员根据浮点性能发布性能结果,可以将其转换为运行时间。

例如,谷歌搜索“DGEMM 性能”会产生以下结果:http: //math-atlas.sourceforge.net/timing/3_5_10/index.html

通常,您可以预期答案是不顺畅的。在某些问题大小(与缓存大小有关)附近会有跳跃或尖峰。您还应该预期速率会出现稳定,因此,对于各种问题大小,线性区域都会出现。我不希望多项式拟合很有帮助。

鉴于基础广泛的基准测试工作,可能更容易将结果制成表格并根据需要进行插值。你的目标是什么?