Cache oblivious storage and access heuristics for blocked matrix-matrix multiplication
我们研究了分块矩阵的排序效应--矩阵乘法。我们发现,子矩阵不必连续存储在内存中,以达到接近最佳的性能。相反,它是子矩阵乘法的执行顺序的选择,导致小块大小的加速高达四倍。这与单个矩阵元素的结果形成对比,该结果显示,随着块大小的增加,连续的内存分配很快变得无关紧要。
2008-08-15 cs.DS
Cache-Oblivious Priority Queues with Decrease-Key and Applications to Graph Algorithms
我们提出了优先级队列中的缓存无关外部存储器模型与块大小$B$和主存储器大小$M$,支持$N$元素,操作\textsc{UPDATE}(\textsc{INSERT}和\textsc{DECREASEKEY}的组合)在$O \left(\frac{1}{B}\log_{\fracλ{B}} \frac{N}{B}\right)$分期I/O和操作\textsc{EXTRACT-MIN}和\textsc{DELETE}在$O \left(\lceil \frac{λ^{\varepsilon}}{B} \log_{\fracλ{B}} \frac{N}{B} \rceil \log_{\fracλ{B}} \frac{N}{B}\right)$分期I/O,使用$O \left(\frac{N}{B}\log_{\fracλ{B}} \frac{N}{B}\right)$块,为用户定义的参数$λ\in [2, N ]$和任何真正的$\varepsilon \in (0,1)$。我们的结果改进了以前的I/O高效缓存无关和缓存感知优先级队列[Chowdhury和Ramachandran,TALG 2018],[Brodal等人,SWAT 2004],[Kumar和Schwabe,SPDP 1996],[Arge等人,SICOMP 2007],[Fadel等人,TCS 1999]。我们还提出了缓…
2020-08-04 cs.DS
Balanced Partitioning of Several Cache-Oblivious Algorithms
Frigo等人提出了一种理想的缓存模型和递归技术,以缓存无关的方式设计顺序缓存高效算法。Ballard等人指出,将该技术扩展到任意架构是一个基本的开放问题。Ballard等人提出了另一个悬而未决的问题,即如何在任意数量的处理器上准确有效地并行化Strassen算法。我们提出了一种新的方式分区的高速缓存不经意的算法,以实现完美的强缩放任意数量,甚至是素数,在一定范围内的共享内存设置的处理器。我们的方法是处理器感知但缓存不经意(PACO)。我们展示了我们的方法在几个重要的高速缓存无关算法,包括LCS,一维,GAP,经典的矩形矩阵乘法的半环,和Strassen的算法。我们将讨论如何将我们的方法扩展到分布式内存架构,甚至异构计算系统。因此,我们的工作可能会提供一个新的角度上的基本开放的问题,扩展递归缓存无关技术的任意架构。我们提供了一个几乎精确的解决方案,并行化Strassen的开放问题。我们的方法可能会提供一个新的角度扩展递归缓存无关技术的任意架构。我们的所有算法都比最著名的算法表现出更好的可扩展性或更好的总体并行缓存复杂性。初步的实验证明了我们的理论预测,PACO算法可以显着优于最先进的处理器不经意(PO)和处理器感知(PA)的同行。
2020-11-03 cs.DC cs.DS
Cache Oblivious Algorithms for Computing the Triplet Distance Between Trees
本文研究了两棵具有$n$标记叶子的根无序树之间的三元组距离的计算问题。由Dobson在1975年引入,三元组距离是在两棵树中引起不同拓扑的叶三元组的数量。目前理论上最好的算法是Brodal等人的$\mathrm{O}(n \log n)$时间算法(SODA 2013)。最近Jansson和Rajaby提出了一种新的算法,虽然理论上较慢,需要$\mathrm{O}(n \log^3 n)$时间,但实际上它优于理论上更快的$\mathrm{O}(n \log n)$算法。这两种算法都不能扩展到外部存储器。我们提出了两个高速缓存不经意的算法,结合了这两个世界的最好的。第一个算法是当两个输入树是二叉树的情况下,第二个任意度的两个输入树的广义算法。在RAM模型下分析,两种算法都需要$\mathrm{O}(n \log n)$时间,而在缓存不经意模型下分析,两种算法都需要$\mathrm{O}(\frac{n}{B} \log_{2} \frac{n}{M})$ I/O,它们相对简单,并且可以扩展到外部存储器,这使得它们具有最佳的实际性能。我们注意到,这些是第一个算法,扩展到外部存储器,在理论和实践中,这个问题。
2019-11-07 cs.DS
Cache-Friendly Search Trees; or, In Which Everything Beats std::set
虽然理论计算机科学中的大量工作已经进入优化数据结构的运行时间和空间使用,但是这样的工作经常忽略现代计算机的非常重要的组件:高速缓存。在这样做时,经常开发的数据结构实现了理论上良好的运行时间,但是由于大量的高速缓存未命中而在实践中很慢。在1999年,Frigo等人提出了高速缓存不经意算法的概念:一种利用高速缓存的算法,不管高速缓存的大小或结构如何。从那时起,许多作者设计了高速缓存无关算法和数据结构,用于从矩阵乘法到数组排序的问题。在这项工作中,我们专注于高速缓存不经意的搜索树,即实现一个有序的字典在一个高速缓存友好的方式。我们将首先介绍高速缓存无关数据结构的概述,特别是高速缓存无关搜索树。然后,我们给出了在现代机器上使用这些缓存无关结构的实际结果,将它们与标准std::set和其他缓存友好的字典(如B树)进行比较。
2019-07-02 cs.DS cs.IR
Cache-Oblivious Parallel Convex Hull in the Binary Forking Model
本文在 Binary Forking 模型中提出两种缓存无关并行凸包算法,分别针对预排序点集和一般输入,达到相应的工作、跨度与缓存复杂度界。
2023-07-17 cs.CG cs.DS
An Empirical Study of Cache-Oblivious Priority Queues and their Application to the Shortest Path Problem
近年来,外部存储器计算的Cache-Oblivious模型为海量数据集上的算法分析提供了一个有吸引力的理论基础。在发现渐近最优或接近最优的算法方面已经取得了很大的进展。然而,迄今为止,成功的实验研究仍然相对较少。在本文中,我们比较了两种不同的基于漏斗和桶堆的Cache-Oblivious优先级队列,并将它们应用于具有正边权重的图上的单源最短路径问题。我们的研究结果表明,当RAM是有限的,数据交换到外部存储,缓存不经意的优先级队列实现了数量级的加速比标准的内部存储器技术。然而,对于模拟和真实世界的图形数据上的单源最短路径问题,由于访问图形邻接列表本身所需的时间,这些加速比明显较低。
2008-02-07 cs.DS cs.SE
Cache-Oblivious Peeling of Random Hypergraphs
随机生成超图中剥离顺序的计算是许多构造中最耗时的步骤,例如完美散列方案、随机$r$ -SAT求解器、纠错码和近似集编码。虽然有一个简单的线性时间算法,其I/O性能差,使其不切实际的超图的大小超过可用的内部存储器。我们展示了如何减少剥离顺序的计算,以少量的顺序扫描和排序,并分析其I/O复杂性的高速缓存遗忘模型。所得到的算法需要$O(\mathrm{sort}(n))$ I/O和$O(n \log n)$时间来剥离具有$n$边的随机超图。我们实验评估我们的实现该算法在现实世界中的情况下,使用最小完美哈希函数(MPHF)的建设作为我们的测试用例的性能:我们的算法建立了一个MPHF的$7.6$十亿键在不到$21$小时在一台机器上。所得到的数据结构比用当前最先进的用于大规模密钥集的MPHF构造所获得的数据结构更节省空间并且更快。
2013-12-02 cs.DS
Persistent Cache-oblivious Streaming Indexes
在[SPAA 2007]中,Bender等人将流B树(或索引)定义为支持摊销的$o(1)$ IO中的更新的B树,并提出了实现摊销的$O((\log N)/B)$ IO和$O(\log N)$ IO中的查询的结构。我们将他们的结果推广到部分持续生存的情形。对于版本$v$,设$N_v$为在$v$上可访问的密钥数,$N$为更新总数。我们给出了一个数据结构,使用空间$O(N)$,支持更新到一个叶版本$v$与$O((\log N_{v})/B)$分期IO和回答范围查询返回$Z$元素与$O(\log N_{v} + Z/B)$ IO的平均值(其中的平均值是在所有的查询覆盖不相交的关键字范围在一个给定的版本)。这是我们知道的第一个持久的“流”索引,即支持$o(1)$ IO中的更新并支持有效的范围查询。
2017-07-25 cs.DS
Efficient cache oblivious algorithms for randomized divide-and-conquer on the multicore model
在本文中,我们提出了随机算法的排序和凸包,实现最佳性能(加速和缓存未命中)的多核模型与私有缓存模型。我们的算法是高速缓存不经意和概括的随机划分和征服的策略,由Reischuk和Reif和Sen。虽然这种方法产生了最佳的速度在PRAM模型,我们需要额外的技术来优化高速缓存未命中在一个不经意的设置。在对输入和处理器数量的温和假设下,我们的算法将具有最佳的时间和高速缓存未命中的高概率。虽然类似的结果已经得到最近排序,我们觉得我们的方法是简单和一般的,我们应用它来获得一个最佳的并行算法的三维凸包具有类似的界限。我们还提出了一个简单的随机处理器分配技术,没有明确的知识的处理器的数量,很可能会发现额外的应用程序在资源遗忘的环境。
2012-05-27 cs.CG cs.DC cs.DS
CacheShuffle: An Oblivious Shuffle Algorithm Using Caches
我们认为,不经意的洗牌和K-不经意的洗牌,是其中的一种改进。我们提供了有效的算法,并讨论了它们的应用程序的设计不经意的RAM。K-Oblivious Shuffling的任务是对服务器上随机分配的N个加密块进行Oblivious Shuffling,使得对手对新的块分配一无所知。安全保证也应该保持相对于已经学习了N个块中的K个被触摸的块的初始位置的对手。当K = N时,得到了不经意洗牌的经典概念.我们提出了一个家庭的算法不经意洗牌。我们的第一个构造CacheShuffleRoot是为具有$O(\sqrt{N})$内存块的客户端量身定制的,并为每个$ε> 0$使用$(4+ε)N$带宽块。CacheShuffleRoot比之前关于N的实际大小的最佳已知结果提高了4.5倍。我们还提出了CacheShuffle,它使用O(S)块的客户端内存和$O(N\log_S N)$块的带宽进行随机洗牌。然后,我们转向K-不经意的洗牌,并给出算法,需要2N + f(K)块的带宽,为一些功能f。也就是说,高于2N下限的任何额外带宽仅取决于K。我们提出了KCacheShuffleBasic,它使用O(K)客户端存储和正好2N块带宽。对于较小的客户端存储需求,我们展示了KCacheShuffle,它使用O(S)客户端存储,并需要$2N+(1+ε)O(K\log_S K)$带宽块。最后,我们考虑的情况下,除了N…
2017-10-17 cs.CR cs.DC cs.DS
Fully De-Amortized Cuckoo Hashing for Cache-Oblivious Dictionaries and Multimaps
字典(或映射)是一种要求所有键都是唯一的键值存储,而多映射是一种允许多个值与同一个键相关联的键值存储。我们为字典和多重映射设计基于哈希的索引方案,以实现最坏情况下的查找和更新的最佳性能,数据结构需要哈希操作的概率很小或可以忽略不计,这取决于我们是否在外部存储器(I/O)模型或随机存取机(RAM)模型的一个众所周知的版本中工作。我们的构造的主要特征之一是它们是\emph{fully de-amortized},这意味着它们的性能边界保持不变,而无需使用某些性能参数来调整它们的构造,例如故障概率指数中的常数因子,或者在外部存储器模型的情况下,块或高速缓存行的大小以及内部存储器的大小(即,我们的外部存储器算法是高速缓存不经意的)。我们的解决方案是基于一个完全de-amortized实现布谷鸟散列,这可能是独立的利益。该哈希方案使用两个布谷鸟哈希表,一个“嵌套”在另一个内部,其中一个作为主要结构,另一个作为辅助支持队列/存储结构,其相对于传统辅助结构是超大的,但仍然向我们的方案增加了可忽略不计的存储。这种辅助结构使得cuckoo hashing的成功概率非常高,这在加密或数据密集型应用中非常有用。
2011-07-21 cs.DS
Resource Oblivious Sorting on Multicores
我们提出了一个确定性排序算法,SPMS(样本,分区,合并排序),交错的样本排序与合并的分区。按顺序,它对$O(n \log n)$时间缓存中的$n$元素进行排序,并具有最佳的缓存未命中数量。该算法的并行复杂度(或关键路径长度)是$O(\log n \cdot \log\log n)$,它改进了以前的最佳缓存不经意排序的界限。该算法还具有较低的虚假共享成本。当在具有全局共享存储器和$p$核的多核计算环境中由工作窃取调度器调度时,由于该并行执行而导致的附加高速缓存未命中和假共享未命中的成本分别由$O(S\cdot M/B)$和$O(S \cdot B)$高速缓存未命中的成本限制,其中每个$p$核具有以大小为$B$的块组织的大小为$M$的高速缓存,其中,$S$是在执行期间执行的窃取次数。最后,SPMS算法是资源无关的,对机器参数的依赖性只出现在对算法性能的分析中,而不是算法本身。
2017-11-02 cs.DC cs.DS
Deterministic Cache-Oblivious Funnelselect
本文提出确定性缓存遗忘的 funnelselect 算法,通过基于查询秩熵的递归反向漏斗计算替代随机采样,在不使用随机化的情况下达到与随机化版本相同的最优 I/O 复杂度。
2024-02-27 cs.DS
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(上海市智能信息处理重点实验室)
PACO提出一种完全缓存无关的并行FFT框架,通过延迟递归布局变换并融合为一次全局数字反转排列,实现单次全局重分布下的最优缓存与通信复杂度。
2026-09-09 cs.DC cs.DS
Efficient Resource Oblivious Algorithms for Multicores
我们考虑设计一个多核计算环境的有效算法与全局共享内存和p个核心,每个有一个大小为M的高速缓存,并与数据组织在大小为B的块。我们描述了多核的“层次平衡并行(HBP)”多线程计算类。HBP计算类似于最近工作中考虑的分层分治算法,但具有一些额外的功能,即使在考虑由于错误共享导致的缓存未命中时也能保证良好的性能。我们的HBP算法大多来自已知的高速缓存不经意的算法具有高并行性,但我们采用了新的技术,减少假共享的影响。我们解决虚假共享成本(或者更一般地说,块未命中)的方法是确保任何可能被窃取的任务与其他任务共享O(1)块。我们使用一个缺口技术的计算,有大于O(1)块共享。我们还将在配套文件中分析的有限访问写入的属性,我们绑定的任务的执行堆栈上访问共享块的成本。我们提出了优先工作窃取(PWS)调度程序,我们建立,给定一个足够高的高速缓存,PWS确定性地调度几个高度并行的HBP算法,包括扫描,矩阵计算和FFT,与高速缓存未命中的顺序复杂性的限制,当占传统的高速缓存未命中和虚假共享。我们还提出了一个列表排序算法几乎最优的界限。PWS调度不使用缓存或块大小信息,并使用处理器的知识,仅在确定任务可能被窃取的可用位置的程度上,因此它调度资源遗忘。
2011-03-21 cs.DC cs.DS
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)的最佳布局相比。
2004-07-28 cs.DS
Locality
现代硬件上的程序性能以\emph{locality of reference}为特征,即访问地址空间中与最近访问过的数据接近的数据比访问随机位置中的数据更快。这是由于许多体系结构特征,包括高速缓存、预取、虚拟地址转换和硬盘驱动器的物理属性;试图对构成现代机器性能的所有组件进行建模是不可能的,特别是对于一般算法设计目的。如果有人能证明一个算法在所有奖励引用局部性的系统上都是渐近最优的,而不管它在合理的范围内如何表现自己,那会怎么样呢?我们表明,这是可能的,并排除一些病态的情况下,缓存无关的算法是渐近最优的理想缓存模型是渐近最优的任何合理的设置,奖励引用的局部性。这是令人惊讶的,因为高速缓存无关框架设想了一种特定的架构模型,该架构模型涉及阻塞的存储器传输到不同大小的高速缓存的多级层次结构中,并且没有被设计为直接对引用位置相关性能进行建模。
2022-01-12 cs.DS
Cache-Oblivious Representation of B-Tree Structures
本文提出缓存遗忘数据结构CORoBTS,结合vEB布局与压缩内存数组动态存储类B树,在保持最优搜索I/O复杂度的同时,支持子树插入删除并改进部分持久数组的空间复杂度。
2024-09-30 cs.DS
Optimal Cache-Oblivious Mesh Layouts
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(波士顿大学)
本文针对d维网格的更新操作,提出了一种缓存无关的布局方法,使得在任意缓存参数下内存传输次数渐近最优,并给出了两种高效的布局算法。
2009-10-05 cs.CE cs.DS cs.MS
Data Oblivious Algorithms for Multicores
随着诸如英特尔SGX(具有超线程)等安全处理器的广泛采用,对大数据的私人分析的需求越来越大。大多数数据不经意算法的工作采用经典的PRAM模型来捕获并行性。然而,人们普遍认为PRAM并不能最好地捕捉现实的多核处理器,也不能反映实际中采用的并行编程模型。在本文中,我们开始研究并行数据不经意算法在现实的多核,最好的捕获的二进制fork-join模型的计算。我们首先证明了数据无关排序可以通过具有最佳总工作和最佳(缓存无关)缓存复杂度的二进制fork-join算法来完成,并且在O(log n log log n)跨度(即,并行时间)匹配最著名的不安全算法。使用我们的排序算法作为核心原语,我们展示了如何在二进制fork-join模型中以非平凡的效率模拟一般PRAM算法。我们还提出了几个应用程序,包括列表排名,欧拉之旅,树收缩,连接组件,最小生成森林的结果。对于这些应用程序的一个子集,我们的数据无关算法渐近优于最知名的不安全算法。对于其他应用程序,我们展示了数据不经意的算法,其性能界限匹配最知名的不安全算法。补充这些渐近有效的结果,我们提出了一个实际的变种,我们的排序算法,是独立的和潜在的实现。它具有最佳的缓存成本,它是从最佳的工作和关于一个log n的因素关闭的跨度,而且,它实现了小的常数因子在其边界。
2021-06-29 cs.CR cs.DC cs.DS
Optimal Offline ORAM with Perfect Security via Simple Oblivious Priority Queues
该研究提出一种具有完美安全性的简单不经意优先级队列构造,首次实现了最优的离线ORAM,还给出了缓存感知与缓存无关场景下的高效外存实例及对应I/O复杂度。
2024-12-13 cs.CR cs.DS
Network-Oblivious Algorithms
提出了一个框架的设计和分析的\emph{network-oblivious algorithms},即算法,可以运行不变,但有效地,在各种机器上,其特征在于不同程度的并行性和通信能力。该框架规定,一个网络无关的算法被指定在一个并行计算模型,其中唯一的参数是问题的输入大小,然后评估模型与两个参数,捕获并行粒度和通信延迟。结果表明,对于广泛的一类网络无关的算法,后者模型中的最优性意味着最优性的可分解BSP模型,这是已知的有效地描述了广泛的和重要的一类并行平台。所提出的框架可以被视为一种尝试,端口的遗忘,以及建立在高速缓存层次结构的上下文中,并行计算的领域的概念。它的有效性说明了一些关键问题提供最佳的网络不经意的算法。讨论了不经意方法的局限性。
2014-04-12 cs.DC cs.DS
Sorting with Asymmetric Read and Write Costs
新兴的存储器技术在写入存储器与从存储器读取的成本(在时间和能量两者上)之间具有显著的差距。在本文中,我们提出的模型和算法,占这种差异,重点是写效率排序算法。首先,我们考虑PRAM模型与非对称写成本,并表明,排序可以在$O\left(n\right)$写,$O\left(n \log n\right)$读,对数深度(并行时间)。接下来,我们考虑外部存储器(EM)模型的一个变体,该模型向$ω> 1$收取将大小为$B$的块写入到辅助存储器的费用,并提出三种EM排序算法(多路合并排序,样本排序和使用缓冲区树的堆排序)的变体,这些算法渐进地减少了原始算法的写入次数,并对每个块写入大致执行$ω$块读取。最后,我们定义了一个变种的理想缓存模型与不对称的写成本,并提出写效率高,缓存无关的并行算法排序,FFT和矩阵乘法。将工作窃取和并行深度优先缓存器的先验边界调整到非对称设置,这些分别为具有私有缓存或共享缓存的机器产生并行缓存复杂性边界。
2016-03-11 cs.DS
Nested Dataflow Algorithms for Dynamic Programming Recurrences with more than O(1) Dependency
动态规划问题在现实世界中有着广泛的应用,在串行和并行环境下都得到了广泛的研究。1994年,Galil和Park基于闭包法和矩阵乘积法,提出了求解几个重要动态规划问题的有效次线性时间算法。然而,在同一篇论文中,他们提出了一个悬而未决的问题,即这种算法是否存在于一般的GAP问题中。在本文中,我们回答了他们的问题,开发了第一个工作有效的和亚线性时间的GAP算法的基础上关闭方法和嵌套数据流方法。我们还改进了经典的工作有效的,缓存遗忘和缓存有效的算法的时间界限的一维问题和GAP问题,分别。
2019-11-13 cs.DC cs.DS
Analysis of Randomized Work Stealing with False Sharing
本文分析了在并行环境中使用随机工作窃取(RWS)调度算法时的缓存未命中代价,并考虑了假共享的影响。首先,先前的分析(由于Acar等人)扩展到包含虚假共享。然而,为了控制可能的延迟,由于假共享,对算法的一些限制似乎是必要的。在此基础上,介绍了层次树算法,并分析了其性能。此外,本文分析了一个子类的层次树算法,称为HBP算法,使用RWS调度时的性能,改进的复杂性界限,得到这个子类。这个类是在一个同伴论文中介绍的,考虑到了高效的资源不经意计算。最后,我们注意到,在一个场景中,没有虚假的共享本文中的结果匹配缓存未命中的先验边界,但减少了假设,特别是不需要一个边界凹函数的缓存未命中的成本在先前的工作由弗里戈和Strumpen。这允许在这种情况下获得更大类算法的非平凡缓存未命中边界。
2011-03-21 cs.DC cs.DS
Is competitive online paging an artifact?
Università degli Studi di Padova(帕多瓦大学)
本文指出Sleator-Tarjan分页模型忽略新计算数据的首次访问成本,导致在线分页算法无法具有竞争性,即使使用随机化或资源增强,从而质疑竞争分析的实际有效性。
2026-06-24 cs.DS
The Input/Output Complexity of Triangle Enumeration
我们考虑一个著名的问题,即枚举无向图的所有三角形。我们的重点是确定这个问题的输入/输出(I/O)的复杂性。令$E$为边数,$M<E$为内部存储器的大小,$B$为块大小。先前获得的最佳结果是排序$(E^{3/2})$ I/O(Dementiev,博士论文2006)和$O(E^2/(MB))$ I/O(Hu等人,SIGMOD 2013),其中排序$(n)$表示用于对$n$项进行排序的I/O数量。我们将I/O复杂度提高到$O(E^{3/2}/(\sqrt{M} B))$预期I/O,这将以前的界限提高了一个因子$\min(\sqrt{E/M},\sqrt{M})$。我们的算法是高速缓存无关的,也是I/O最优的:我们表明,任何算法枚举$t$不同的三角形必须始终使用$Ω(t/(\sqrt{M} B))$ I/O,并有图$t=Ω(E^{3/2})$。最后,我们给出了一个使用$O(E^{3/2}/(\sqrt{M} B))$ I/O的确定性缓存感知算法,假设$M\geq E^\varepsilon$为常数$\varepsilon > 0$。我们的研究结果是基于一种新的颜色编码技术,这可能是独立的利益。
2014-03-22 cs.DS
Query-Oblivious Coresets for Softmax Attention: Improved Bounds and Efficient Constructions
Tel Aviv University(特拉维夫大学)
本文提出改进的查询无关softmax注意力coreset构造,通过球面提升和Chevet不等式将大小降至O(e^ρ(√d_v+√d_k√log(1+ρ))/ε),并给出完整证明及通信下界转移。
2026-11-05 cs.CL cs.DS
I/O-Efficient Similarity Join
我们提出了一个I/O高效的算法计算相似连接基于局部敏感哈希(LSH)。与通常建议的过滤方法相比,我们的方法对数据大小具有可证明的次二次依赖性。此外,与外部存储器上已知的基于LSH的算法的直接实现相比,我们的方法能够充分利用可用的内部存储器:而经典算法的时间复杂度包括因子$N^ρ$,其中$ρ$是所使用的LSH的参数,我们的算法的I/O复杂度仅包括因子$(N/M)^ρ$,其中,$N$是数据大小,$M$是内部存储器的大小。我们的算法是随机的,并以高概率输出正确的结果。这是一个简单的,递归的,不受缓存影响的过程,我们相信它在其他计算环境中也会很有用,比如并行计算。
2017-03-28 cs.DS
Parallel Triangle Counting in Massive Streaming Graphs
图中三角形的数量是一个基本的度量,用于社会网络分析、链接分类和推荐等。在这些应用程序和现代图形数据集都是大型和动态的趋势的驱动下,我们提出了一个快速和高速缓存高效的并行算法的设计和实现,用于估计三角形的数量在一个巨大的无向图的边缘到达流。它结合了流算法和并行算法的优点。通过构建流算法框架,该算法具有较小的内存占用。通过利用Cache-Oblivious框架,它可以有效地利用现代多核机器的存储层次结构,而无需知道其特定参数。我们证明了理论界的准确性,内存访问成本,并行运行时的复杂性,以及经验表明,该算法产生准确的结果和大幅加速相比,优化的顺序实现。(This是CIKM'13论文的扩展版本。
2013-08-09 cs.DB cs.DC cs.DS
Memory Hierarchy Sensitive Graph Layout
由于大量的图结构化数据变得可用,挖掘大型图的信息正成为越来越重要的工作量。图算法的一个方面,迄今尚未收到很大的兴趣是访问的存储层次结构的效果。当今的典型系统在存储层次结构中具有多个级别,这些级别具有不同的局部性单元;范围跨越高速缓存行、TLB条目和DRAM页。我们假设可以在主内存中分配图结构数据,以提高数据的空间局部性。以前的提高高速缓存局部性的方法只集中在单个局部性单元上,或者是高速缓存行,或者是虚拟内存页。另一方面,高速缓存无关算法可以优化存储层次结构的所有级别的布局,但不幸的是,需要为各个数据结构专门设计。在本文中,我们探讨了分层块作为一种技术,用于缩小这一差距。我们需要作为输入的存储层次结构中的局部性单元的规范,并通过使用广度优先搜索的层次结构复制其节点来相应地布置输入图。我们从一个基本的算法,这是有限的树,然后将其扩展到任意图形。我们最高效的版本只需要恒定的额外空间。我们已经实现了不同版本的算法在各种环境中:C程序接口的宏,作为一个扩展的Boost面向对象的图形库,最后作为一个修改的遍历阶段的半空间垃圾收集器在Jikes Java虚拟机。我们的研究结果表明,显着改善的访问时间的各种结构的图。
2012-03-26 cs.DB cs.DS cs.PF
The Cost of Address Translation
现代计算机不是随机存取机(RAM)。它们具有存储层次结构、多核和虚拟内存。本文讨论了虚拟内存中地址转换的计算开销问题。我们工作的出发点是观察到,在RAM模型或EM模型(外部存储器模型)中的一些简单算法(数组的随机扫描,二进制搜索,堆排序)的分析不能正确预测实际运行时间的增长率。我们提出了VAT模型(虚拟地址转换)来考虑地址转换的成本,并分析了模型中的上述算法和其他算法。预测与测量结果一致。我们还分析了增值税成本的缓存无关算法。
2014-04-14 cs.CC cs.DS cs.PF
DPMC: Weighted Model Counting by Dynamic Programming on Project-Join Trees
Rice University(莱斯大学)
我们提出了一个统一的动态规划框架来计算精确的文字加权模型计数的公式合取范式。在我们的框架的中心是项目连接树,它指定了有效的项目连接顺序,以应用加法投影(变量消除)和连接(子句乘法)。在这个框架中,模型计数分两个阶段进行。首先,计划阶段从公式构造项目连接树。第二,执行阶段计算公式的模型计数,采用由项目连接树引导的动态规划。我们经验评估规划阶段的各种方法,并比较约束满意度算法与树分解工具。我们还调查了不同的数据结构的执行阶段的性能和比较代数决策图与张量。我们表明,我们的动态编程模型计数框架DPMC是最先进的精确加权模型计数器cachet,c2d,d4和miniC2D的竞争力。
2020-08-20 cs.AI cs.DS cs.LO
Fast Stencil Computations using Fast Fourier Transforms
时空计算被广泛用于模拟物理系统在多个时间步长上跨多维网格的状态变化。该领域的最新技术分为三类:缓存感知的平铺循环算法,缓存无关的分治梯形算法和Krylov子空间方法。在本文中,我们提出了两个有效的并行算法进行线性模板计算。目前在这个领域的直接求解器计算效率低下,Krylov方法需要手工劳动和数学训练。我们解决这些问题的线性stenestrant通过使用DFT预处理的Krylov方法实现直接求解器,这是快速和通用的。事实上,虽然所有目前可用的算法,用于解决一般的线性stentleman执行$Θ(NT)$工作,其中$N$是空间网格的大小和$T$是时间步的数量,我们的算法执行$o(NT)$工作。据我们所知,我们给出了第一个算法,使用快速傅立叶变换来计算最终的网格数据,通过不断演变的初始数据为许多时间步长一次。我们的算法处理周期性和非周期性边界条件,并实现多项式更好的性能界限(即,计算复杂性和并行运行时间)。初步的实验结果表明,我们的算法,大约$10^5$时间步长的演变网格$10^7$细胞运行的数量级快于国家的最先进的实现周期性的模板问题,和1.3 $\times$到8.5 $\times$更快的非周期性的模板问题。
2021-05-14 cs.DC cs.DS
Evaluating the Cost of Atomic Operations on Modern Architectures
原子操作(atomics),如比较和交换(CAS)或提取和添加(FAA)在并行编程中无处不在。然而,这些操作和这些系统的各种特性,如高速缓存的结构之间的性能权衡是不清楚的,并没有得到彻底的分析。在本文中,我们建立了一个评估方法,开发了一个性能模型,并提出了一套详细的基准测试不同的原子的延迟和带宽。我们考虑各种最先进的x86架构:Intel Haswell、Xeon Phi、Ivy Bridge和AMD Bulldozer。结果揭示了令人惊讶的性能之间的关系所考虑的原子和架构属性,如访问的高速缓存行的一致性状态。一个关键的发现是,所有测试的原子都具有可比的延迟和带宽,即使它们的特征是不同的共识数。另一个观点是,即使在发出的操作之间没有依赖关系,原子的硬件实现也会阻止任何指令级并行。最后,我们讨论了在分析的架构中发现的性能问题的解决方案。我们的分析可以实现更简单,更有效的并行编程,并加速在现成的机器和大型计算系统中部署的各种架构上的数据处理。
2020-10-19 cs.AR cs.DC cs.DS