An Agglomeration Law for Sorting Networks and its Application in Functional Programming
在本文中,我们将提出一个一般的凝聚法排序网络。聚合是设计并行程序时的常用技术,用于控制计算的粒度,从而在算法和算法运行的机器之间找到更好的匹配。通常,这是通过将较小的任务分组并在一个并行进程中整体计算它们来完成的。在排序网络的情况下,这可以通过用一个进程计算网络的更大部分来完成。本文中的凝聚法则追求一种不同的策略:将输入数据分组,并在保持算法原始结构的情况下将算法推广到凝聚输入。这将导致一个新的访问机会,排序网络非常适合在现代多核计算机,计算机网络或GPGPU编程的有效并行化。此外,这使我们能够使用排序网络作为任意排序算法的(并行或分布式)合并阶段,从而轻松创建新的混合排序算法。函数式程序设计语言的表达能力帮助我们将这一定律应用于系统构建的排序网络,从而产生高效且易于适应的排序算法。最后,用Eden程序设计语言给出了一个应用实例,说明了该方法的有效性。不同的并行排序算法的运行时行为的实现进行了比较。
2017-01-03 cs.DS
Towards Parallel Learned Sorting
我们介绍了一种新的排序算法,即ML增强排序与原地超级标量样本排序(IPS4o)的组合。我们的工作的主要贡献是实现并行ML增强排序,因为以前的算法仅限于顺序实现。我们介绍了就地并行学习排序(IPLS)算法,并广泛比较它对其他排序方法。IPLS将IPS4o框架与使用最快最小冲突度算法训练的线性模型相结合,以划分数据。实验结果并没有证明IPLS是最快的算法。然而,他们确实表明IPLS在同行中具有竞争力,并且使用IPS4o框架是一种有前途的并行学习排序方法。
2022-08-14 cs.DC cs.DS
Sort Race
排序是最古老的计算问题之一,在大数据时代仍然非常重要。已经提出了各种算法和实现技术。在这项研究中,我们专注于比较为基础,内部排序算法。我们创建了12种不同大小的数据类型用于实验,并在单个设置中广泛测试了各种实现。使用一些有效的技术,我们发现快速排序是自适应的近排序的输入,仍然是最好的整体排序算法。我们还确定了哪些技术在timsort中有效,timsort是基于自然mergesort的最流行和最有效的排序方法之一,并创建了我们的mergesort版本,它在接近排序的实例上运行速度比timsort快。我们的quicksort和mergesort实现与所有教科书或研究文章中报道的其他实现不同,比任何版本的C库qsort函数都快,不仅适用于随机生成的数据,而且适用于各种类型的近似排序数据。这个实验可以帮助用户选择最好的排序算法来处理手头的困难排序工作。这项工作提供了一个平台,任何人都可以测试自己的排序算法对最好的领域。
2016-09-14 cs.DS
Engineering Parallel String Sorting
我们讨论如何字符串排序算法可以在现代多核共享内存机器上并行化。作为最好的顺序字符串排序算法和原子对象的成功的并行排序算法的综合,我们首先提出了字符串样本排序。该算法有效地利用了存储层次结构,使用了额外的字级并行性,并在很大程度上避免了分支误预测。然后,我们专注于NUMA架构,并开发并行多路LCP合并和合并排序,以减少随机访问远程节点的内存访问的数量。此外,我们并行化多键快速排序和基数排序的变体,这些变体在某些情况下也很有用。五个当前的多核平台上的综合实验,然后报告和讨论。实验表明,我们的实现规模非常好的现实世界的输入和现代机器。
2014-03-09 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
Parallel Integer Sort: Theory and Practice
UC Riverside(加州大学河滨分校);University of Maryland(马里兰大学)
本文研究并行整数排序的理论与实践,提出理论高效且性能良好的新算法DovetailSort,解决现有算法中检测和利用重复键的难题。
2024-01-01 cs.DC cs.DS
Parallel $\mathcal O(\sqrt n)$ Overhead LSD Radix Sort
Zuse Institute Berlin(柏林齐泽研究所)
提出LSD基数排序变体Radsort,用 $\mathcal O(\sqrt n)$ 额外空间排序,具有稳定、实现简单且易并行化的特点,在处理超过约2MiB大小数组时优于传统非原位LSD基数排序。
2026-07-07 cs.DB cs.DS
Parallel Sorting System for Objects
传统的排序算法使用诸如数组、文件和列表的数据结构,这些数据结构定义了要排序的项目的访问方法。传统的交换排序、分治排序、选择排序、插入排序等方法都需要监控程序。监督控制程序可以访问这些项目,并负责将它们按正确的顺序排列。本文提出了一种不同的排序算法,不需要监督控制程序。对象会自行排序,并且在排序完成时能够终止。该算法还采用了并行处理机制,以提高其效率和有效性。本文对传统的排序方法进行了回顾,找出了它们的优缺点,并提出了一种基于概念组合的不同设计。设计的算法在Java桌面应用程序中实现和测试
2012-09-13 cs.DC cs.DS
Dualheap Sort Algorithm: An Inherently Parallel Generalization of Heapsort
提出了堆排序算法的一个推广。双堆排序算法比堆排序多了大约50%的比较和移动操作,但它提供了几个优于堆排序的优点:提高了缓存性能,如果输入碰巧已经排序,则性能更好,并且更容易并行实现。
2007-06-20 cs.CC cs.DC cs.DS
Shorter and faster than Sort3AlphaDev
针对AlphaDev声称3个数字排序需17条汇编指令且无更短程序的声明,本文提出两个反例及更快的C/C++实现。
2023-07-23 cs.DS
Practical Massively Parallel Sorting
以前的并行排序算法不能扩展到最大的可用机器,因为它们要么有禁止通信量或禁止关键路线长度。我们描述的算法是一个可行的妥协,并克服这一差距,在理论和实践中。该算法是已知算法样本排序和多路归并排序的多级推广。特别是,我们的样本排序变体被证明是非常可扩展的。我们开发的一些工具可能是独立的兴趣-一个简单,实用,灵活的排序算法,用于对数时间内工作的小输入,一个近似线性时间的最佳算法,用于解决约束装箱问题,以及一个用于数据传输的算法,保证每个处理器上的消息启动数量很少。
2015-02-25 cs.DC cs.DS
DialSort: Non-Comparative Integer Sorting via the Self-Indexing Principle: Architecture, Implementation, and Substrate-Aware Analysis
Universidad EAFIT(埃阿菲特大学)
DialSort通过自索引原理实现非比较整数排序,消除了传统计数排序和基数排序中的前缀和遍历步骤,采用冲突解决网络实现并行处理,实测性能优于多种排序算法,适用于受限宇宙域工作负载。
2026-05-15 cs.DS
Sorting Data on Ultra-Large Scale with RADULS. New Incarnation of Radix Sort
本文介绍了一种基于基数排序算法的并行排序器RADULS,它可以有效地组织超大型数据集。例如,在基于Intel Xeon的工作站上,可以使用16个线程在不到15秒的时间内对4G 16字节记录进行排序。RADULS的实现不仅经过高度优化以获得如此出色的性能,而且还以高速缓存友好的方式并行化以充分利用现代多核架构。此外,我们的并行调度程序在运行时启动几个不同的过程,根据当前的执行参数,适当的工作负载管理。所有的实验表明,RADULS是优于竞争算法。
2016-12-08 cs.DS cs.PF
BlockQuicksort: How Branch Mispredictions don't affect Quicksort
自Kaligosi和Sanders(2006)的工作以来,众所周知,Quicksort-通常被认为是最快的就地排序算法之一-在本质上受到分支错误预测的影响。我们提出了一种新的方法来解决这个问题,通过部分解耦控制从数据流:为了执行分区,我们分裂的输入块的恒定大小(我们建议128个数据元素),然后,在一个块中的所有元素与枢轴和比较的结果存储在一个缓冲区。在第二遍中,重新布置相应的元件。通过这样做,我们完全避免了基于比较结果的条件分支(除了最后的Insertionsort)。此外,我们证明,对于静态分支预测的分支误预测的平均总数是最多$εn \log n + O(n)$一些小的$ε$取决于块大小排序时,$n$元素。我们的实验结果是有希望的:当对随机整数数据进行排序时,我们实现了比C++ std::sort的GCC实现速度提高80%。对于许多其他类型的数据和非随机输入,仍然比std::sort有显著的加速。只有在少数特殊情况下,如排序或几乎排序的输入,std::sort可以击败实现。此外,即使在随机输入排列上,我们的实现甚至比高度调优的Super Scalar Sample Sort的实现稍快,后者使用线性量的额外空间。
2016-06-23 cs.DS
LCP-Aware Parallel String Sorting
当对字符串进行字典排序时,并不总是需要检查所有符号。例如,“europar”在字符串“eureka”、“eurasia”和“excells”中的词典排名仅取决于其所谓的相关前缀“euro”。一组字符串的区别前缀大小$D$是建立所有字符串的字典序时实际需要检查的符号数。有效的字符串排序器应该是$D$感知的,即它们的复杂性应该取决于$D$而不是所有字符串中所有符号的总数$N$。虽然在顺序设置中有许多$D$感知的排序器,但在PRAM模型中似乎没有这样的结果。我们提出了一个框架,产生一个$D$感知修改任何现有的PRAM字符串排序。导出的算法相对于其原始算法是工作最优的:如果原始算法需要$O(w(N))$工作,则导出的算法需要$O(w(D))$工作。执行时间仅增加一个小的因子,该因子是最长相关前缀长度的对数。我们的框架普遍适用于PRAM模型的所有变体中的确定性和随机算法,因此未来($D$ -不知道)并行字符串排序的改进将直接导致$D$ -知道并行字符串排序的改进。
2020-06-03 cs.DC cs.DS
Parallel External Sorting of ASCII Records Using Learned Models
本文提出ELSAR,一种基于学习数据分布模型的并行外部排序算法,通过等深分区避免多路合并,在SSD和Optane上排序速率分别提升1.65倍和5.31倍,能效提升41%。
2023-05-08 cs.DB cs.DS
A Curious Link Between Prime Numbers, the Maundy Cake Problem and Parallel Sorting
我们提出了新的理论算法,总结了n元比较器的输出,以获得排列索引,以排序的序列。通过对并行排序算法的分析,我们发现它所处理的元素的特殊比较器数除以待排序的元素数。使用分治法,我们可以将排序问题表示为取素数元素的比较器的输出求和,假定这个素数除以初始无序序列长度。和的数量与濯足蛋糕问题直接相关。此外,我们提供了一个新的序列,计数算法中使用的比较器的数量。
2019-11-04 cs.CC cs.DS math.NT
Zig-zag Sort: A Simple Deterministic Data-Oblivious Sorting Algorithm Running in O(n log n) Time
我们描述和分析曲折排序-一个确定性的数据不经意的排序算法运行在O(n log n)的时间,可以说是简单的比以前已知的算法具有类似的属性,这是基于AKS排序网络。因为它是数据不经意和确定性的,所以曲折排序可以实现为一个简单的O(n log n)大小的排序网络,从而为Incerpi和Sedgewick在1985年提出的一个开放问题提供了解决方案。此外,Zig-zag Sort是Shellsort的一个变体,实际上是第一个在O(n log n)时间内运行的确定性Shellsort变体。Plaxton等人在1992年和Sedgewick在1996年提出了这样一个算法的存在性问题。然而,与今天更相关的事实是,在O(n log n)时间内运行的简单数据不经意确定性排序算法的存在简化了几种提议的遗忘RAM模拟方法(其利用AKS排序网络)中的内部循环计算,并且这反过来意味着在几种云计算应用中用于隐私保护数据外包的简化机制。我们提供了曲折排序的建设性和非建设性的实现,基于被称为ε-halver的电路的存在,使得在我们的建设性实现中的常数因子比AKS排序网络的建设性变体的常数因子小几个数量级,AKS排序网络的建设性变体也基于ε-halver的使用。
2014-03-11 cs.DS
The Geometry of Tree-Based Sorting
该研究建立了BST模型与一大类排序算法的代价等价关系,利用BST的几何解释提出排列复杂度的对数交错界,还设计了对应并行排序算法并证明相关离线BST算法的存在性。
2023-05-04 cs.DS
Spin-the-bottle Sort and Annealing Sort: Oblivious Sorting via Round-robin Random Comparisons
我们研究基于随机循环比较的排序算法。具体来说,我们研究旋转瓶排序,其中比较是不受限制的,和退火排序,其中比较被限制到一个由\emph{temperature}参数界定的距离。这两种算法都是简单的,随机的,数据无关的排序算法,这是有用的隐私保护计算,但正如我们所示,退火排序是更有效的。我们表明,有一个输入置换,导致旋转瓶排序需要$Ω(n^2\log n)$预期的时间,以成功,并在$O(n^2\log n)$时间,该算法成功的概率很高的任何输入。我们还展示了退火排序的一个实现,它在$O(n\log n)$时间内运行,并且以非常高的概率成功。
2010-11-10 cs.DS
Optimizing Search Strategies: A Study of Two-Pointer Linear Search Implementation
本研究对比三种基础搜索算法的复杂度与性能,提出一种新型双指针搜索实现,经多硬件测试验证其效率显著提升,可适配有序与无序数据集,后续将拓展至更复杂场景。
2024-06-24 cs.DS
Generalized Leapfrogging Samplesort: A Class of $O(n \log^2 n)$ Worst-Case Complexity and $O(n \log n)$ Average-Case Complexity Sorting Algorithms
原始的蛙跳采样排序对大小为$s$的排序样本和大小为$s+1$的未排序部分进行操作。我们将其推广到大小为$s$的排序样本和大小为$(2^k-1)(s+1)$的未排序部分,其中$k = O(1)$。我们提出了这类算法的实际实现,我们表明,最坏情况下的复杂性是$O(n \log^2 n)$和平均情况下的复杂性是$O(n \log n)$。关键词:样本排序,快速排序,蛙跳样本排序,排序,算法分析。
2018-01-29 cs.DS
Methods of computing deque sortable permutations given complete and incomplete information
确定哪些排列可以使用某些开关站网络排序的问题可以追溯到1968年的Knuth。在这项工作中,我们感兴趣的排列是可排序的双端队列(称为双端队列),或两个并行堆栈。1982年,Rosenstiehl和Tarjan提出了一个O(n)算法,用于测试给定的置换是否在并行堆栈上可排序。在同一篇论文中,他们还提出了一个修改,给出了O(n)的可排序性测试。我们展示了一个轻微的错误,在他们的算法版本测试双端可排序性,并提出了解决这个问题。这两类排列的一般计数问题仍然没有解决。已知的是,这两个类的增长率大约是Theta(8^n),所以计算长度为n的可排序排列的数量,即使是对于小的n值,也很难使用任何必须单独评估每个可排序排列的方法来完成。据我们所知,双排可排序排列的个数只知道n=14。这是使用有效地生成所有可排序排列的算法计算的。利用Tarjan算法执行中固有的对称性,我们开发了一种新的动态规划算法,它可以在O(n^5 2^n)时间内计算两类中可排序排列的数量,允许计算双端队列和并行堆栈的可排序排列的数量,n值比以前可能的要高得多。
2012-08-07 cs.DS math.CO
Parallel Sort-Based Matching for Data Distribution Management on Shared-Memory Multiprocessors
本文研究了两组d维轴平行矩形的交点识别问题。这是一个常见的问题,出现在许多基于代理的仿真研究,并在高层体系结构(HLA)的背景下,它是在数据分布管理(DDM)服务的核心是至关重要的。已经提出了几种DDM服务的实现;然而,它们中的许多要么效率低下,要么固有地是顺序的。这些都是严重的限制,因为多核处理器现在无处不在,而DDM算法-CPU密集型-可以从额外的计算能力中受益。我们提出了一个并行版本的基于排序的匹配算法的共享内存多处理器。基于排序的匹配算法是解决DDM问题的最有效的串行算法之一,但由于数据依赖性,并行化非常困难。我们描述的算法,并计算其渐近运行时间,我们完成了分析,通过评估其性能和可扩展性,通过广泛的实验两个商品多核系统的基础上双插槽英特尔至强处理器,和单插槽英特尔酷睿i7处理器。
2018-08-07 cs.DC cs.DS cs.MA
Scalable String and Suffix Sorting: Algorithms, Techniques, and Tools
本文主要研究两个基本的排序问题:字符串排序和后缀排序。第一部分考虑共享内存多核机器上的并行字符串排序,第二部分使用归纳排序原理进行外部内存后缀排序,第三部分使用新的分布式算法大数据框架Thrill进行分布式外部内存后缀排序。
2018-08-02 cs.DC cs.DS
QuickXsort - A Fast Sorting Scheme in Theory and Practice
QuickXsort是一种高效的就地顺序排序方案,它将Hoare的Quicksort算法与X混合在一起,其中X可以从更广泛的其他已知排序算法中选择,如Heapsort,Insertionsort和Mergesort。它的主要优点是QuickXsort可以在X没有的情况下就位。在这项工作中,我们提供了一般的转移定理表示的比较的QuickXsort的X的数量的比较。更具体地说,如果选择枢轴作为(不太快)增长大小样本的中位数,则QuickXsort和X的平均比较次数仅相差$o(n)$项。对于某些常数$k$的$k$的中值主元选择,差是一个线性项,我们精确计算其系数。例如,三个QuickMergesort的中位数最多使用$n \lg n - 0.8358n + O(\log n)$比较。此外,我们还研究了使用更少比较的其他算法对基本情况进行排序的可能性。通过这样做,比较的平均情况数量可以减少到$n \lg n- 1.4106n + o(n)$,剩余的间隙仅为$0.0321n$与已知下限的比较(同时总体上仅使用$O(\log n)$额外空间和$O(n \log n)$时间)。这些排序策略的实现表明,这些算法挑战了成熟的库实现,如Musser的Introsort。
2018-11-03 cs.DS
Symmetry Partition Sort
在本文中,我们提出了一个有用的替代快速排序风格的效用函数。这种替换被称为对称划分排序,它与比例扩展排序的原理基本相同。它们之间的最大区别是,新算法在进入分区例程时总是将已经部分排序的输入(用作比例扩展的基础)放在两端。这有利于加速分区例程。基于新算法的库函数比2004年引入的Psort库函数更有吸引力。其实现机制简单。源代码更清晰。时间复杂度为O(n),时间复杂度为O(n)。鲁棒性和自适应性均较好。作为图书馆的一项职能,它具有竞争力。
2007-06-01 cs.DS
High-Performance and Flexible Parallel Algorithms for Semisort and Related Problems
本文提出一种高性能、接口灵活的并行半排序算法,并扩展至直方图与收集-归约,在多种设置和真实应用中优于现有并行排序方法。
2023-04-20 cs.DS
An Efficient Multiway Mergesort for GPU Architectures
排序是一个基本的操作,是无数算法的构建块。因此,设计在一系列硬件架构上接近峰值性能的排序算法非常重要。图形处理单元(GPU)是特别有吸引力的架构,因为它们提供了巨大的并行性和计算能力。然而,其计算和存储层次结构的复杂性使得设计GPU高效算法具有挑战性。在这项工作中,我们提出了GPU多路合并排序(MMS),一个新的GPU高效的多路合并排序算法。MMS采用了一种新的分区技术,可以暴露现代GPU架构所需的并行性。据我们所知,MMS是GPU的第一个排序算法,它在全局内存访问方面是渐进最优的,并且完全没有共享存储体冲突。我们实现了MMS的初始实现,评估其性能的三个现代GPU架构,并比较它的竞争力的实现,可在国家的最先进的GPU库。尽管这些实现被高度优化,MMS比较有利,实现大多数随机输入的性能改进。此外,与MMS不同,最先进的算法容易受到银行冲突的影响。我们发现,对于某些输入,导致这些算法产生大量的银行冲突,MMS可以实现高达37.6%的加速比其最快的竞争对手。总的来说,尽管MMS当前的实现没有完全优化,但由于它有效地使用了存储层次结构,MMS的性能优于迄今为止最快的基于比较的排序实现。
2017-03-30 cs.DS
Massively-Parallel Heat Map Sorting and Applications To Explainable Clustering
Sharif University of Technology(谢里夫理工大学)
本文提出了热图排序问题以在保持簇连通性的前提下重排与合并点及维度,证明了其NP难性,并给出了大规模并行计算模型下的常数轮次固定参数算法及NP难特例的近似算法,实证表明其优于k-means和DBSCAN。
2023-09-14 cs.DC cs.DS cs.LG
Hash sort: A linear time complexity multiple-dimensional sort algorithm
排序和散列是计算机科学中两个完全不同的概念,并且相互排斥。哈希是一种使用数据作为关键字来映射到内存中的位置的搜索方法,用于快速存储和检索。排序是将数据从随机排列组织成有序排列的过程,并且是在各种应用中频繁执行的常见活动。几乎所有传统的排序算法都是通过比较来工作的,并且在这样做的时候,算法时间复杂度有一个线性最大下限。排序算法的理论时间复杂度的任何改进都可能导致实现性能的整体更大增益。对于使用排序算法的应用程序来说,算法性能的提高会带来更大的速度提高。这种排序算法需要使用一种替代方法来对数据进行排序,而不是比较,以超过算法性能上的线性时间复杂度边界。散列排序是一种通用的基于散列的非比较排序算法,它具有一些传统排序算法所没有的有趣特性。散列排序的性能逐渐优于最快的传统排序算法快速排序。散列排序算法具有线性时间复杂度因子--即使在最坏的情况下也是如此。散列排序为进一步的工作和研究其他排序方法开辟了一个领域。
2004-08-17 cs.DS
Scalable Distributed String Sorting
针对现有分布式字符串排序算法无法扩展到大规模并行机器的问题,提出延迟约为 $p^{1/k}$ 的高效算法,在多达 49152 个核心上实现高达 5 倍加速。
2024-04-25 cs.DS
QR Sort: A Novel Non-Comparative Sorting Algorithm
本文提出QR Sort,一种基于商余定理与计数排序的非比较整数排序算法,通过设定参数实现线性时间复杂度,并在大范围输入序列上优于既有算法。
2024-11-12 cs.DS
Hybridizing Non-dominated Sorting Algorithms: Divide-and-Conquer Meets Best Order Sort
许多生产级算法受益于将用于解决大问题实例的渐进有效算法(通过将它们拆分为较小的问题实例)与用于解决小子问题的具有非常小的实现常数的渐进低效算法相结合。一个著名的例子是稳定排序,其中合并排序通常与插入排序相结合,以实现恒定但明显的速度提升。我们把这个想法应用到非支配排序中。也就是说,我们结合了分治算法,它具有目前最好的已知的渐近运行时间的$O(N (\log N)^{M - 1})$,与最佳顺序排序算法,它具有运行时间的$O(N^2 M)$,但展示了最好的实际性能的二次算法。经验评估表明,混合动力的运行时间通常不会比两个原始算法差,而对于大量的点,它优于他们至少20%。对于较少数量的目标,加速可以高达四倍。
2017-04-13 cs.DS
Faster Sorting Networks for $17$, $19$ and $20$ Inputs
我们提出了新的并行排序网络的$17$到$20$的输入。对于$17, 19,$和$20$输入,这些新网络更快(即,它们需要比先前已知的最佳网络更少的计算步骤)。因此,我们改进了$17, 19,$和$20$通道上的最小深度排序网络的已知上界。这些网络是使用手工制作的第一层和排序网络的SAT编码的组合获得的。
2014-10-10 cs.DM cs.DS
QuickXsort: Efficient Sorting with n log n - 1.399n +o(n) Comparisons on Average
在本文中,我们推广的QuickHeapsort的想法导致QuickXsort的概念。给定一个外部排序算法X,如果X满足某些自然条件,QuickXsort会产生一个内部排序算法。对于QuickWeakHeapsort和QuickMergesort,我们给出了QuickXsort构造的两个示例。这两种算法都是有效的,平均产生大约n log n - 1.26n +o(n)次比较。最坏情况下的n log n + O(n)比较可以实现,而不会显着影响平均情况。此外,我们描述了一个实现的合并插入小n。以MergeInsertion为基础,建立了一个最坏情况下的排序算法,该算法平均需要进行n log n - 1.3999n + o(n)次比较.具有恒定大小基本情况的QuickMergesort在实际输入上表现出最好的性能:当对整数排序时,它只比STL-Introsort慢15%。
2013-07-11 cs.DS
An $O(N)$ Sorting Algorithm: Machine Learning Sort
University of Science and Technology of China(中国科学技术大学);Lanzhou University(兰州大学);State University of New York at Stony Brook(纽约州立大学石溪分校)
本文提出了一种基于机器学习的$O(N\cdot M)$排序算法,该算法在大数据排序方面具有巨大的潜力。该排序算法可应用于并行排序,适用于GPU或TPU加速。并讨论了该算法在稀疏哈希表中的应用。
2018-08-15 cs.DS cs.LG stat.ML
Histogram Sort with Sampling
为了最小化数据移动,最先进的并行排序算法使用基于采样和直方图的技术来在重新分配之前对键进行分区。采样使分区能够使用键的代表性子集来完成,而直方图使给定分区的评估和迭代改进成为可能。我们引入了采样直方图排序(HSS),它结合了采样和迭代直方图,以最小的数据移动和高的实际性能找到高质量的分区。与用于找到这些分区的最知名(最近引入的)算法相比,我们的算法需要的通信少了Θ(log(p)/ log log(p))的因子,并且与样本排序和直方图排序的标准变体相比时少得多。我们提供了一个分布式内存实现的算法,比较其性能,现有的两个实现,并提供了一个简短的应用研究显示新算法的好处。
2019-04-29 cs.DC cs.DS
FractalSortCPU: Bandwidth-Efficient Compressed Radix Sort on CPU
University of Toronto(多伦多大学);Eonforge Labs(Eonforge实验室)
本文提出FractalSortCPU,通过CPU适配的直方图压缩方案,实现任意精度键值的高效基数排序,降低直方图增长,提升带宽效率,适用于大规模数据集。
2026-05-12 cs.DC cs.DS
Bucket Oblivious Sort: An Extremely Simple Oblivious Sort
我们提出了一个概念上简单的不经意排序和不经意随机置换算法,称为桶不经意排序和桶不经意随机置换。桶不经意排序使用$6n\log n$时间(由内存访问次数测量)和$2Z$客户端存储,错误概率在$Z$中呈指数级小。上面的运行时只比非遗忘合并排序基线慢$3\times$;对于$2^{30}$元素,它比双调排序快$5\times$,双调排序是实际实现中事实上的遗忘排序算法。
2021-04-29 cs.CR cs.DS
Leyenda: An Adaptive, Hybrid Sorting Algorithm for Large Scale Data with Limited Memory
排序是现代数据管理系统的基本任务之一。随着磁盘I/O成为最受指责的性能瓶颈和更多计算密集型工作负载,我们注意到,在异构环境中,性能瓶颈可能因基础设施而异。因此,排序内核需要适应不断变化的硬件条件。在本文中,我们提出了Leyenda,一个混合的,并行的和高效的基数最高有效位(MSB)合并排序算法,利用本地线程级CPU缓存和高效的磁盘/内存I/O。Leyenda能够根据不同的I/O和处理条件有效地进行内部或外部分拣。我们使用Sort Benchmark的三种不同工作负载对Leyenda进行了基准测试,针对三种独特的用例,包括内部,部分内存和外部排序,我们发现Leyenda的性能超过GNU的并行内存快速/合并排序实现多达三倍。Leyenda还在ACM 2019 SIGMOD编程竞赛中排名第二,总体排名第四。
2019-09-17 cs.DB cs.DC cs.DS
Searching and Sorting with O(n^2) processors in O(1) time
并行计算机系统中处理元件(PE)数量的激增,以及更广泛的算法并行化的使用,导致处理器间通信主导VLSI芯片空间。本文提出了一种新的架构,以克服这个问题,使用简单的交叉点开关配对PE,而不是一个复杂的互连网络。基于在\cite{oruc2016self}中描述的循环置换布线思想,这种配对导致$n(n-1)/2$处理元件的线性交叉点阵列和同样多的交叉点。我们证明了这种新的并行架构的多功能性,通过设计快速搜索和排序算法,特别是,我们发现,找到一个最小值,最大值,并搜索一个列表的$n$元素都可以在$O(1)$时间与$O(n)$扇入基本逻辑门,并在$O(\lg n)$时间与$O(1)$扇入。我们进一步表明,排序的$n$元素的列表也可以进行$O(1)$时间使用基本逻辑门与$O(n)$扇入和阈值逻辑门。如果仅使用具有$O(1)$扇入的基本逻辑门,则排序时间增加到$O(\lg n\lg\lg n)$。该算法能在$O(1)$时间内找到$n$元素间的最大值,在$O(\lg n (\lg\lg n))$时间内对$n$元素进行排序.此外,我们展示了其他基本查询可以处理相同的顺序内的时间复杂度。
2020-11-23 cs.DM cs.DS
A Randomised Approach to Distributed Sorting
本文提出一种基于随机选择下标对进行局部排序的调和排序器,其时间复杂度为 O(n(log n)^2),并展示了其在异步与同步环境下的线性加速并行化能力,适用于分布式计算场景。
2025-02-07 cs.DC cs.DM cs.DS
New Bounds on Optimal Sorting Networks
我们提出了新的并行排序网络的$17$到$20$的输入。对于$17, 19,$和$20$输入,这些新网络更快(即,它们需要比先前已知的最佳网络更少的计算步骤)。因此,我们改进了$17, 19,$和$20$通道上的最小深度排序网络的已知上界。此外,我们表明,我们的排序网络的$17$输入是最佳的,在这个意义上,没有排序网络使用较少的层存在。这解决了[D. Bundala & J. Zavodnov. Optimal sorting networks,Proc.LATA 2014].
2015-01-27 cs.DM cs.DS
Scalable Distributed-Memory External Sorting
我们设计算法,在大规模并行机器上对庞大的数据集进行排序。该算法是基于多路合并范式。我们首先概述了一个算法,其I/O的要求是接近下限。因此,与多路合并的天真实现和我们已知的所有其他方法相比,即使对于最大的可想象的输入,该算法也只对数据进行两次传递。第二种算法减少了通信开销,并以略微增加I/O要求为代价使用更传统的结果规范。一个实现在几个类别中赢得了众所周知的排序基准,并在很大程度上超过了它的竞争对手。
2009-10-14 cs.DC cs.DS cs.PF
Even faster sorting of (not only) integers
本文介绍了基于基数算法的最快并行排序器RADULS 2。它经过优化,可以利用现代多核CPU处理大量数据。主要创新包括:非常优化的算法,用于处理可能出现数十亿次的小数组(多达约100个记录),作为子问题处理,并改进了更大子数组的处理,更好地使用非临时内存存储。
2017-03-02 cs.DC cs.DS
Deterministic Sample Sort For GPUs
我们提出和评估GPU桶排序,一个并行的确定性样本排序算法的众核GPU。我们的方法比推力合并快得多(Satish等人,Proc. IPDPS 2009),最好的基于比较的GPU排序算法,它与Leischner等人的GPU随机样本排序一样快(将出现在Proc. IPDPS 2010)。我们的确定性样本排序的优点是,桶的大小得到保证,因此它的运行时间没有输入数据依赖的波动,可以发生随机样本排序。
2010-02-24 cs.CC cs.DC cs.DS
A Hybrid Vectorized Merge Sort on ARM NEON
本文提出 ARM NEON 上的混合向量化归并排序 NEON-MS,通过优化寄存器使用、排序网络及串行与向量化归并结构,在 FT2000+ 单核上显著优于 std::sort 与 boost::block_sort。
2024-09-06 cs.DC cs.DS
Communication-Efficient String Sorting
令人惊讶的是,在分布式内存并行机上对字符串进行排序的算法很少。我们开发了有效的算法,这个问题的基础上的多路合并原则。这些算法只检查确定排序顺序所需的字符。此外,还通过(粗略地)仅传送那些字符以及通过仅传送相同前缀的重复一次来减少通信量。在多达1280个核上的实验表明,这些算法通常比以前的算法快5倍以上。
2020-01-23 cs.DC 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
Analysis of Sorting Algorithms by Kolmogorov Complexity (A Survey)
近年来,利用Kolmogorov复杂性(不可压缩性方法)得到了许多关于排序算法计算复杂性的结果。特别是对通常比较困难的平均情况分析,也适用于该方法。在这里,我们调查这样的结果Bubberort,堆排序,Shellsort,Dobosiewicz排序,Shakersort,排序与堆栈和队列在顺序或并行模式。特别是在Shellsort的情况下,Kolmogorov复杂性的使用令人惊讶地轻松解决了那些尽管受到猛烈攻击但仍然开放了很长时间的问题。
2009-05-27 cs.CC cs.DS
Cache Analysis of Non-uniform Distribution Sorting Algorithms
我们分析了平均情况下的缓存性能的分布排序算法的情况下,键是独立的,但不一定均匀分布。该分析适用于“就地”和“不就地”分布排序算法,比\cite{RRESA00}中的分析更准确。特别是,这种新的分析产生更严格的上限和下限时,从一个均匀分布的密钥。当整数排序算法MSB基数排序用于对独立均匀浮点数(浮点数)进行排序时,我们使用此分析来调整其性能。当从$[0, 1)$中对均匀浮点数进行排序时,我们的优化MSB基数排序算法轻松地优于缓存优化的桶排序\cite{RR99}和快速排序实现。
2007-08-13 cs.DS cs.PF
On Asynchronous Non-Dominated Sorting for Steady-State Multiobjective Evolutionary Algorithms
在并行和分布式环境中,世代进化算法往往不利用计算系统的全部潜力,因为它们必须等到整个人口进行评估,然后才开始选择程序。稳态算法通常被视为解决这个问题的一种方法,因为适应度评估可以由多个线程以异步方式完成。但是,如果算法以复杂的方式更新其状态,线程最终将不得不等待更新完成。在多目标进化算法中,状态更新过程的计算开销很大。我们已经实现了一个异步稳态版本的NSGA-II算法。它最昂贵的部分,非支配排序,决定了更新状态所需的时间。我们把现有的增量非支配排序算法变成一个异步的使用几个并发技术:一个单一的入口级锁,细粒度的锁与非支配级别,和一个非阻塞的方法,使用比较和设置操作。我们的实验结果揭示了算法的工作效率和实现的并行量之间的权衡。
2018-04-14 cs.DS cs.NE
Sorting Networks: to the End and Back Again
本文研究了排序网络的前端和后端的新性质,并说明了在寻找最优排序网络的新边界时这些性质的实用性。搜索首先关注网络的“外部”,然后关注内部。所有以前的作品只关注网络前端的属性,以及如何应用这些来打破搜索中的对称性。新的由外向内的性质有助于理解排序网络如何排序,并促进最优排序网络的新边界的计算。我们提出了新的并行排序网络的17至20个输入。对于17、19和20个输入,这些网络比以前已知的最佳网络更快。对于17个输入,新的排序网络在不存在使用较少层的排序网络的意义上是最优的。
2015-07-06 cs.DM cs.DS