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


9

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

Fop::输入尺寸运行

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

我怀疑一旦您超出了可以轻松容纳在缓存中的问题大小,由于这些操作的规律性,这些运行时大部分都是可预测的。

问题:

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

编辑:明确地说,我在寻找运行时,而不是FLOP或其他任何常见的性能指标。我愿意将自己局限于一种特定的体系结构。

Answers:


10

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

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


感谢您的链接。我会看一看。我对此感兴趣,因为我怀疑您也是同样的原因。矩阵表达式的自动算法选择和调度。在这个高度规则和可预测的领域中,可能会有很多其他不可能的问题。
MRocklin

6

有很多先前存在的工作。大多数线性代数库开发人员都会以浮点性能的形式发布性能结果,这些结果可以转换为运行时间。

例如,对“ DGEMM性能”进行谷歌搜索将产生以下内容:http : //math-atlas.sourceforge.net/timing/3_5_10/index.html

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

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


1
跌幅稳定DGEMM表示n3区域,因为这是翻牌圈随着问题大小而增长的速度。我同意分段拟合比尝试拟合单个多项式要好得多。
杰德·布朗

以我的经验,将触发器转换为运行时很困难。我真的只关心运行时。我正在测试静态调度的可行性。
MRocklin

以我的经验,峰值/平稳仅出现在较小的问题规模上。一旦超出缓存范围,一切都会非常顺利。我同意添加分段函数可能会提高拟合度。
MRocklin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.