外部内存模型中星型模板的边界分析
1. 上界与实际程序讨论
本文主要聚焦于下界及其推导,上界的详细信息可在相关完整内容中找到。在二维情况下,上下界是紧密匹配的;三维时,上下界相差一个 $\sqrt{2}$ 的因子;更高维度时,相差因子约为 $\frac{\sqrt[n - 1]{n!}}{n^e}$。
所有上界的共同特点是,一个扫描形状按照扫描顺序在网格中以单位步长移动,从而形成工作带。为了取得良好效果,有两点很重要:
- 数据布局需要重现扫描形状。
- 为了评估网格的所有顶点,工作带需要重叠,将工作带划分为核心带和翼带。为实现最优渐近行为,不同带中的顶点需要保存在单独的块中。
例如,在二维中,下界建议在相邻的 $\ell_1$ 球中工作,相邻的球形成对角工作带。对于 $B = 1$ 或支持这种数据访问的数据布局,对角扫描数据可提供匹配的上界,但对于许多其他数据布局并非最优。
虽然内存访问对高性能代码非常重要,但它不是影响运行时间的唯一因素。在算法工程过程中,需要确定优化的数据布局和访问带来的好处在多大程度上能使代码运行更快。其他可能影响运行时间的因素包括:
- 更复杂的索引计算。
- 针对内存层次结构的多个层次进行优化。
- 向量化和循环展开以实现标量替换。
- 在并行环境中,对算法进行修改可能有助于优化不同进程之间所需的通信和同步。
为了给出精确的边界,需要一个理论模型来提供足够的细节以证明这些边界。所选择的理论模型将结果限制在原子模板操作、简单的输入/输出(I/O),并允许非原地工作。
一些实现可能会部分评估模板,这需要更通用的下界,而上界仍然适用。虽然没
超级会员免费看
订阅专栏 解锁全文
17

被折叠的 条评论
为什么被折叠?



