中文

最优缓存无关网格布局

数据结构与算法 2009-10-05 v2 计算工程、金融与科学 数学软件 数值分析

摘要

网格是将物理空间划分为规则形状区域的图。网格计算构成了许多应用的基础,例如有限元方法、图像渲染和碰撞检测。在一个称为网格更新的重要网格原语中,每个网格顶点存储一个值,并根据所有相邻顶点存储的值反复更新该值。网格更新的性能取决于网格在内存中的布局。本文展示了如何找到一种内存布局,以保证网格更新对于任何一组内存参数都具有渐近最优的内存性能。这种内存布局被称为缓存无关(cache-oblivious)。形式上,对于dd维网格GG、块大小BB和缓存大小MM(其中M=Ω(Bd)M=\Omega(B^d)),GG的网格更新使用O(1+G/B)O(1+|G|/B)次内存传输。本文还展示了当缓存较小即M=o(Bd)M=o(B^d)时,网格更新性能如何下降。随后,本文给出了两种寻找缓存无关网格布局的算法。第一种布局算法在 RAM 模型上的期望运行时间和高概率运行时间均为O(Glog2G)O(|G|\log^2|G|)。在缓存无关模型和磁盘访问机(DAM)模型中,其期望内存传输次数为O(1+Glog2(G/M)/B)O(1+|G|\log^2(|G|/M)/B),高概率内存传输次数为O(1+(G/B)(log2(G/M)+logG))O(1+(|G|/B)(\log^2(|G|/M) + \log|G|))。该布局通过寻找GG的完全平衡分解树,然后对该树的叶子节点进行中序遍历获得。第二种算法在所有三种内存模型中,无论是在期望还是高概率情况下,运行速度都快了将近logG/loglogG\log|G|/\log\log|G|倍。该布局通过寻找GG的松弛平衡分解树,然后对该树的叶子节点进行中序遍历获得。

关键词

引用

@article{arxiv.0705.1033,
  title  = {Optimal Cache-Oblivious Mesh Layouts},
  author = {Michael A. Bender and Bradley C. Kuszmaul and Shang-Hua Teng and Kebin Wang},
  journal= {arXiv preprint arXiv:0705.1033},
  year   = {2009}
}
R2 v1 2026-06-29T00:23:13.283Z