Stony Brook University(石溪大学);Tokutek, Inc.(Tokutek公司);Computer Science and Artificial Intelligence Laboratory, Massachusetts Institute of Technology(麻省理工学院计算机科学与人工智能实验室);University of Southern California(南加州大学);Akamai Technologies, Inc.(Akamai科技公司);Boston University(波士顿大学)
Michael A. Bender, Bradley C. Kuszmaul, Shang-Hua Teng, Kebin Wang
A mesh is a graph that divides physical space into regularly-shaped regions. Meshes computations form the basis of many applications, e.g. finite-element methods, image rendering, and collision detection. In one important mesh primitive, called a mesh update, each mesh vertex stores a value and repeatedly updates this value based on the values stored in all neighboring vertices. The performance of a mesh update depends on the layout of the mesh in memory.
This paper shows how to find a memory layout that guarantees that the mesh update has asymptotically optimal memory performance for any set of memory parameters. Such a memory layout is called cache-oblivious. Formally, for a $d$-dimensional mesh $G$, block size $B$, and cache size $M$ (where $M=Ω(B^d)$), the mesh update of $G$ uses $O(1+|G|/B)$ memory transfers. The paper also shows how the mesh-update performance degrades for smaller caches, where $M=o(B^d)$.
The paper then gives two algorithms for finding cache-oblivious mesh layouts. The first layout algorithm runs in time $O(|G|\log^2|G|)$ both in expectation and with high probability on a RAM. It uses $O(1+|G|\log^2(|G|/M)/B)$ memory transfers in expectation and $O(1+(|G|/B)(\log^2(|G|/M) + \log|G|))$ memory transfers with high probability in the cache-oblivious and disk-access machine (DAM) models. The layout is obtained by finding a fully balanced decomposition tree of $G$ and then performing an in-order traversal of the leaves of the tree. The second algorithm runs faster by almost a $\log|G|/\log\log|G|$ factor in all three memory models, both in expectation and with high probability. The layout obtained by finding a relax-balanced decomposition tree of $G$ and then performing an in-order traversal of the leaves of the tree.
PACO: A Fully Cache-Oblivious Parallel FFT with One Global Redistribution
College of Computer Science and Artificial Intelligence, Fudan University(复旦大学计算机科学与人工智能学院);School of Mathematical Sciences, School of Data Science, Fudan University(复旦大学数学科学学院、数据科学学部);Shanghai Key Lab. of Intelligent Information Processing(上海市智能信息处理重点实验室)
Efficient Tree Layout in a Multilevel Memory Hierarchy
我们考虑的问题,布局一棵树与固定的父/子结构的层次存储器。我们的目标是最大限度地减少预期数量的块传输搜索期间沿根到叶路径,叶上的概率分布。这个问题以前被Gil和Itai考虑过,他们在块传输大小B已知的情况下开发了最优但速度较慢的算法。我们提出了更快的,但近似算法相同的问题,最快的算法运行在线性时间,并产生一个解决方案,是在一个附加常数的最佳。此外,我们将展示如何扩展任何近似最优算法的缓存不经意设置中的块传输大小是未知的算法。缓存无关布局的查询性能是在一个恒定的因素的查询性能的最佳已知块大小的布局。计算缓存无关布局只需要在数学上多次调用已知块大小的布局算法;特别是,缓存无关布局可以在O(N lg N)时间内计算,其中N是节点数。最后,我们分析了两个贪婪的策略,并表明,他们有一个性能比之间的Omega(lg B / lg lg B)和O(lg B)的最佳布局相比。
现代硬件上的程序性能以\emph{locality of reference}为特征,即访问地址空间中与最近访问过的数据接近的数据比访问随机位置中的数据更快。这是由于许多体系结构特征,包括高速缓存、预取、虚拟地址转换和硬盘驱动器的物理属性;试图对构成现代机器性能的所有组件进行建模是不可能的,特别是对于一般算法设计目的。如果有人能证明一个算法在所有奖励引用局部性的系统上都是渐近最优的,而不管它在合理的范围内如何表现自己,那会怎么样呢?我们表明,这是可能的,并排除一些病态的情况下,缓存无关的算法是渐近最优的理想缓存模型是渐近最优的任何合理的设置,奖励引用的局部性。这是令人惊讶的,因为高速缓存无关框架设想了一种特定的架构模型,该架构模型涉及阻塞的存储器传输到不同大小的高速缓存的多级层次结构中,并且没有被设计为直接对引用位置相关性能进行建模。
哈希表是字典数据结构的一个普遍存在的类别。然而,标准的哈希表实现不能很好地转换到外部内存模型中,因为它们没有包含插入的局部性。Iacono和Patracsu为外部哈希表建立了一个更新/查询权衡曲线:在$O(λ/B)$分期IO中执行插入的哈希表需要$Ω(\log_λN)$预期的IO用于查询,其中$N$是可以存储在数据结构中的项目的数量,$B$是内存传输的大小,$M$是内存的大小,$λ$是一个调优参数。它们为$λ$提供了一种满足该曲线的散列数据结构,即$Ω(\log\log M + \log_M N)$。他们的数据结构,我们称之为\defn{IP hash table},是复杂的,据我们所知,还没有实现。在本文中,我们提出了一个新的和更简单的最佳外部存储器哈希表,\defn{Bundle of Arrays Hash Table}(BOA)。BOA基于大小分层的LSM,这是一种经过充分研究的数据结构,并且几乎同样容易实现。BOA最适用于较窄范围的$λ$。然而,BOA的简单性允许它们容易地被修改以实现以下结果:\begin{itemize} \item A new external memory data structure, the \defn{Bundle of Trees Hash Table} (BOT), that matches the performance of the …