Robust Massively Parallel Sorting
我们调查分布式内存并行排序算法,规模最大的可用机器和强大的输入大小和分布的输入元素。主要的结果是,四个排序算法涵盖了整个范围的可能的输入大小。对于三个算法,我们设计了新的低开销机制,使他们强大的重复键和倾斜的输入分布。其中之一,专为中等规模的投入,是一个快速的高品质的枢纽选择快速排序的新变种。同时,渐近分析提供了性能保证,并指导算法的选择和配置。我们验证这些假设使用广泛的实验7算法,10个输入分布,多达262144个核心,和不同的输入大小超过9个数量级。对于困难的输入分布,我们的算法是唯一有效的算法。除了最大的输入大小,我们是第一个在如此大的机器上进行实验的人,我们的算法明显优于传统上认为的算法。
2020-01-16 cs.DC
BSP Sorting: An experimental Study
批量同步并行计算模型已被用于架构无关的设计和分析的并行算法,其性能表示不仅在问题的大小n,但也在并行机的性能。在本文中,确定性和随机BSP排序算法的实现的性能进行了检查。确定性算法使用确定性规则过采样和并行样本排序,并增强以最佳渐近效率透明地处理重复密钥。随机算法是基于样本排序的,并使用过采样和确定性算法引入的思想。由此产生的随机化设计,然而,不同于传统的基于并行样本排序的算法,也增加了透明地处理重复的密钥与最佳的渐近效率,从而消除了需要标记所有输入密钥和加倍的通信/计算时间。这两种算法被证明是平衡的工作负载之间的处理器和使用和精确调整过采样的BSP分析允许结合透明的重复键处理,确保定期和平衡的通信。
2014-08-28 cs.DC
Engineering Parallel String Sorting
我们讨论如何字符串排序算法可以在现代多核共享内存机器上并行化。作为最好的顺序字符串排序算法和原子对象的成功的并行排序算法的综合,我们首先提出了字符串样本排序。该算法有效地利用了存储层次结构,使用了额外的字级并行性,并在很大程度上避免了分支误预测。然后,我们专注于NUMA架构,并开发并行多路LCP合并和合并排序,以减少随机访问远程节点的内存访问的数量。此外,我们并行化多键快速排序和基数排序的变体,这些变体在某些情况下也很有用。五个当前的多核平台上的综合实验,然后报告和讨论。实验表明,我们的实现规模非常好的现实世界的输入和现代机器。
2014-03-09 cs.DC cs.DS
A study of integer sorting on multicores
多核和GPU上的并行排序可以通过多种方法来实现,包括基于分布的方法的变体,例如基数排序,面向比较的算法,例如确定性规则采样和随机采样并行排序,以及基于网络的算法,例如Batcher的双调排序算法。在这项工作中,我们提出了一个多核处理器上的整数排序的实验研究。我们已经实现了串行和并行基数排序的各种基数,确定性规则过采样和随机过采样并行排序,也有一些以前很少探索或未探索的变种的bitonic排序和奇偶换位排序。该研究使用多线程和多处理并行编程库,C语言实现在Open MPI,MulticoreBSP和BSPlib下使用相同的源代码。一个次要的目标是试图模拟这些算法实现的性能下的多存储器BSP(多存储器BSP)模型。我们首先提供一些一般的高层次的观察这些实现的性能。如果我们可以得出任何结论的话,那就是通过考虑架构相关的特征(例如多个存储层次结构的结构和特性)来准确预测性能是困难的,并且通常是站不住脚的。在某种程度上,这受到编程工作中使用的高级库所带来的开销的影响。然而,我们仍然可以得出一些可靠的结论和理由,这些实现的性能使用MBSP模型,从而使MBSP有用和可用。
2018-08-29 cs.DC
Sorting, Searching, and Simulation in the MapReduce Framework
在本文中,我们从算法的角度研究MapReduce框架,并通过设计和分析基本排序,搜索和模拟问题的高效MapReduce算法来证明我们的方法的有用性。本研究的目的是最终将MapReduce框架置于与著名的PRAM和BSP并行模型相同的理论基础上,这将有利于MapReduce算法的理论和实践。我们描述了高效的MapReduce算法排序,多搜索,并在BSP和CRCW PRAM模型中指定的并行算法的模拟。我们还提供了一些应用这些结果的问题并行计算几何的MapReduce框架,从而导致有效的MapReduce算法排序,2-和3-维凸包,和固定维线性规划。对于映射器和归约器的内存/消息I/O大小为$M=Θ(N^ε)$的情况,对于一个小的常量$ε>0$,我们为这些应用程序设计的所有MapReduce算法都以常量轮数运行。
2011-01-10 cs.DC
Practical Massively Parallel Sorting
以前的并行排序算法不能扩展到最大的可用机器,因为它们要么有禁止通信量或禁止关键路线长度。我们描述的算法是一个可行的妥协,并克服这一差距,在理论和实践中。该算法是已知算法样本排序和多路归并排序的多级推广。特别是,我们的样本排序变体被证明是非常可扩展的。我们开发的一些工具可能是独立的兴趣-一个简单,实用,灵活的排序算法,用于对数时间内工作的小输入,一个近似线性时间的最佳算法,用于解决约束装箱问题,以及一个用于数据传输的算法,保证每个处理器上的消息启动数量很少。
2015-02-25 cs.DC cs.DS
Parallel Sorting System for Objects
传统的排序算法使用诸如数组、文件和列表的数据结构,这些数据结构定义了要排序的项目的访问方法。传统的交换排序、分治排序、选择排序、插入排序等方法都需要监控程序。监督控制程序可以访问这些项目,并负责将它们按正确的顺序排列。本文提出了一种不同的排序算法,不需要监督控制程序。对象会自行排序,并且在排序完成时能够终止。该算法还采用了并行处理机制,以提高其效率和有效性。本文对传统的排序方法进行了回顾,找出了它们的优缺点,并提出了一种基于概念组合的不同设计。设计的算法在Java桌面应用程序中实现和测试
2012-09-13 cs.DC cs.DS
Parallel String Sample Sort
我们讨论如何字符串排序算法可以在现代多核共享内存机器上并行化。作为对原子对象的最佳顺序字符串排序算法和成功的并行排序算法的综合,我们提出了字符串样本排序。该算法有效地利用了存储层次结构,使用额外的字级并行,并在很大程度上避免了分支误预测。此外,我们并行化多键快速排序和基数排序的变体,这些变体在某些情况下也很有用。
2013-05-06 cs.DC cs.DS
Integer sorting on multicores: some (experiments and) observations
对于在多核/GPU上对整数进行排序,已经有许多提议,包括基数排序及其变体或利用特定多核架构的专用硬件特征的其他方法。还使用了基于比较的算法。基于网络的算法也已经与主要示例Batcher的双调排序算法一起使用。虽然后一种方法在理论上是“低效的”,但如果要排序的键很少,它可以导致更好的运行时间,因为它具有低开销并且易于实现。在这项工作中,我们进行了实验研究,整数排序的多核处理器上使用不仅多线程,但也多处理并行编程方法。我们的实现在Open MPI,MulticoreBSP和BSPlib下工作。我们已经实现了串行和并行基数排序的各种基数,也有一些以前很少探索或未探索的变种的双调排序和奇偶换位排序。我们提供我们的观察性能评估使用MBSP模型的算法实现在多个平台和架构和多个编程库。如果我们可以得出任何结论的话,那就是通过考虑架构相关的特征(如多个存储层次结构的结构和特征)来对其性能进行建模是困难的,并且通常是不成功或不可靠的。然而,我们仍然可以得出一些非常简单的结论,使用传统的架构无关的并行建模。
2017-08-30 cs.DC
$\varepsilon$-differential agreement: A Parallel Data Sorting Mechanism for Distributed Information Processing System
在分布式信息处理系统(DIPS)中,输入信息的顺序起着非常重要的作用。提出了一种新的支持并行数据排序的ε-差分协议(EDA)数据排序机制。EDA采用协同共识机制,这不同于传统的共识机制,使用竞争机制,如PoS,PoW等。在系统中,采用EDA机制,所有参与者一起工作,计算输入信息的顺序,通过使用统计和概率的原则,对参与者的比例。初步结果表明,可变的容错率和共识延迟的系统,具有不同的配置时,达成共识,因此,它表明,它是可能的,在系统中使用EDA和定制这些参数的基础上,不同的要求。由于EDA的独特机制,它不仅适用于旋转中心的决策簇,也适用于多中心决策簇的DIPS。
2019-03-01 cs.DB cs.DC
Optimal Round and Sample-Size Complexity for Partitioning in Parallel Sorting
本文研究并行排序中均衡划分的采样与直方图统计轮数及样本量复杂度,证明$O(\log^* p)$轮且每轮$O(p/\log^* p)$样本的上界及匹配下界,并证明一轮算法的最优样本下界为$\Omega(p \log p)$。
2023-05-28 cs.DC
Parallel Integer Sort: Theory and Practice
UC Riverside(加州大学河滨分校);University of Maryland(马里兰大学)
本文研究并行整数排序的理论与实践,提出理论高效且性能良好的新算法DovetailSort,解决现有算法中检测和利用重复键的难题。
2024-01-01 cs.DC cs.DS
Optimal Metastability-Containing Sorting via Parallel Prefix Computation
Friedrichs等人(TC 2018)表明,当对时间数字转换器产生的输入进行排序时,可以包含亚稳态,即,测量值可以被正确地分类,而无需首先使用同步器解决亚稳态。然而,这项工作是否可以通过小电路来完成尚不清楚。我们表明,这确实是可能的,通过提供一个电路,排序格雷码输入(可能包含一个亚稳态位),并具有渐近最佳的深度和大小。我们的解决方案利用并行前缀计算(PPC)框架(JACM 1980)。我们通过任意$f \geq 3$约束其扇出来改进这种构造,而不影响深度,并且仅通过一个小的常数因子来增加电路尺寸。因此,我们获得了第一个PPC电路具有渐近最佳的大小,恒定扇出,和最佳的深度。为了表明应用PPC框架的排序任务是可行的,我们证明了后者可以,尽管潜在的亚稳定性,被分解,使核心操作是关联的。我们得到了渐近最优的亚稳态包含排序网络。我们补充这些结果与模拟,独立验证的正确性,以及我们的电路的小尺寸和延迟。
2019-11-01 cs.AR cs.DC
Merge Path - A Visually Intuitive Approach to Parallel Merging
合并两个已排序数组是排序和其他函数的重要构建块。其高效的并行化要求在计算核心之间平衡负载,最大限度地减少并行化带来的额外工作,并最大限度地减少线程间同步要求。有效使用内存也很重要。我们提出了一种新颖的、视觉上直观的方法,将两个输入排序数组划分为成对的连续元素序列,每个数组一个,使得1)每对包括任何所需的元素总数,以及2)每对的元素在输出合并排序数组中形成连续序列。虽然所得到的分区和计算复杂性类似于某些以前的算法,我们的方法是不同的,非常直观,并提供了有趣的见解。在此基础上,我们提出了一个无同步,高速缓存效率的合并(和排序)算法。虽然我们使用共享内存架构作为基础,我们的算法很容易适应其他架构。事实上,我们的方法甚至与高速缓存高效顺序排序有关。算法,以及重要的高速缓存相关的见解。
2014-06-20 cs.DC
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
Engineering In-place (Shared-memory) Sorting Algorithms
我们目前的排序算法,代表了最快的已知技术的输入大小,输入分布,数据类型,和机器的范围很广。速度优势的一部分是由于就地工作的特性。以前,就地特性通常意味着性能损失。我们的主要算法贡献是一个blockwise方法,就地数据分布,可证明是高速缓存效率。我们还并行化这种方法,考虑到动态负载均衡和内存局部性。我们的比较为基础的算法,就地超标量样本排序(IPS $^4$ o),结合了这种技术与无分支决策树。考虑到许多相同的元素的情况下,并通过动态适应的分布度,我们得到了一个非常强大的算法,优于最好的并行比较为基础的竞争对手的几乎三个因素。IPS $^4$ o在就地或非就地、并行或顺序设置中的性能也优于基于比较的最佳竞争产品。IPS $^4$ o在很多情况下甚至优于最好的整数排序算法。在其余的许多情况下(通常涉及近似均匀的输入分布,小键或顺序设置),我们的新就地基数排序器是最好的算法。在某种意义上,声称拥有“最好”的排序算法可以在许多论文中找到,但这些论文并不都是真的。因此,我们的结论是基于广泛的实验,涉及21个国家的最先进的排序代码,6个数据类型,10个输入分布,4台机器,4个内存分配策略,和输入大小变化超过7个数量级的交叉产品的很大一部分。这证实了我们的算法的强大性能,同时揭示了在相关出版物中报告的具体测量集之外的许多竞争对手的主要性能问题。
2021-02-03 cs.DC
Methods for Partitioning Data to Improve Parallel Execution Time for Sorting on Heterogeneous Clusters
本文的目的是介绍一般的技术,以优化排序的并行执行时间的分布式体系结构与处理器的各种速度。这样的应用程序需要一个分区步骤。对于均匀相关的处理器(处理器的速度是由一个恒定的因素),我们开发了一个恒定的时间技术掌握处理器的负载和执行时间在异构环境中,也是一种技术来处理未知的成本函数。对于非一致相关的处理器,我们使用一种基于动态规划的技术。大多数情况下,解决方案都是O(p)(p是处理器的数量),与问题大小n无关。因此,关于我们处理的问题有一个小的开销,但是它固有地受到分区之后的代码部分的时间复杂度的限制。
2006-07-10 cs.DC cs.PF
Parallelize Bubble Sort Algorithm Using OpenMP
排序算法一直是算法研究者关注的一个重要领域,人们投入了大量的资源来研究排序算法。为了这个目的,许多现有的排序算法的算法复杂性的效率方面进行了观察。在本文中,我们实现了气泡排序算法使用多线程(OpenMP)。在两个不同大小的标准数据集(文本文件)上进行了测试。该算法的主要思想是将输入数据集的元素根据每个单词中的字符数量分布到许多额外的临时子数组中。每个子数组的大小取决于输入数组中具有相同字符数的元素的数量。我们使用Intel Core i7- 3610 QM(8个CPU),使用两种方法(字符串向量和数组3D)实现了OpenMP。最后,我们得到了数据结构对算法性能的影响,因为我们选择了第二种方法。
2014-07-24 cs.DC
Scalable String and Suffix Sorting: Algorithms, Techniques, and Tools
本文主要研究两个基本的排序问题:字符串排序和后缀排序。第一部分考虑共享内存多核机器上的并行字符串排序,第二部分使用归纳排序原理进行外部内存后缀排序,第三部分使用新的分布式算法大数据框架Thrill进行分布式外部内存后缀排序。
2018-08-02 cs.DC cs.DS
Parallel bi-objective evolutionary algorithms for scalable feature subset selection via migration strategy under Spark
用于分类的特征子集选择(FSS)本质上是一个双目标优化问题,其中的任务是获得一个特征子集,该特征子集以最小的基数产生最大可能的受试者操作者特征曲线(AUC)下的面积。在当今世界,人类的所有活动都会产生大量的数据。为了挖掘这种大量的数据,这往往是高维的,有必要开发并行和可扩展的框架。在第一次的同类研究中,我们提出并开发了一个迭代MapReduce为基础的框架的双目标进化算法(EA)的包装下Apache火花与迁移策略。为了实现这一目标,我们对基于非支配排序的算法(NSGA-Ⅱ)和非支配排序粒子群优化算法(NSPSO)以及基于分解的算法(MOEA-D)进行了并行化,分别命名为P-NSGA-II-IS、P-NSPSO-IS和P-MOEA-D-IS。我们提出了一种改进的MOEA-D,通过将非支配排序原则合并到并行化中。我们在各种数据集上测试了所提出的方法的有效性。值得注意的是,P-NSGA-II在大多数数据集上都处于前2位,具有统计学意义。我们还报告了经验达到图,加速分析,和平均AUC获得的最重复的特征子集和最少的基数特征子集具有最高的AUC,和多样性分析使用hypervolume。
2022-05-19 cs.DC
Performance Evaluation of Parallel Sortings on the Supercomputer Fugaku
本研究在超级计算机Fugaku上实现了两种基于样本排序的多线程并行排序算法,并证明结合BlockQuicksort与选择树的第二种算法在各类数据下均实现高速度与高并行效率。
2023-05-09 cs.DC cs.NA cs.PF
Multithreaded Fine-Grained Asynchronous BSP for Integer Sorting with LCI and OpenMP
Advanced Micro Devices, Inc.(超威半导体公司)
针对BSP模型在非规则负载下的通信瓶颈,提出结合LCI和OpenMP的多线程细粒度异步BSP方法,通过细粒度零拷贝主动消息实现计算通信重叠,在NAS整数排序基准测试中显著优于传统同步MPI实现。
2026-05-25 cs.DC
Parallelized Kendall's Tau Coefficient Computation via SIMD Vectorized Sorting On Many-Integrated-Core Processors
Georgia Institute of Technology(佐治亚理工学院)
成对关联度量是数据分析中的一个重要操作。Kendall的tau系数是一种广泛使用的相关系数,用于识别有序变量之间的非线性关系。本文研究了一种基于Intel Xeon Phis的单指令多数据(SIMD)向量化排序并行算法,该算法利用多个处理核和512位SIMD向量指令,加速所有对Kendall的tau系数计算。为了促进工作负载平衡和克服片上存储器的限制,我们提出了一个通用的框架,对称所有对计算之间的作业标识符和坐标空间的可证明双射函数。性能评估表明,我们的算法在一个5110 P Phi实现了两个数量级的加速比16线程的MATLAB和三个数量级的加速比顺序R,都运行在高端CPU。此外,我们的算法表现出相当好的分布式计算的可扩展性方面的Phis的数量。源代码和数据集可在http://lightpcc.sourceforge.net上公开获取。
2017-04-12 cs.AI cs.DC
FLiMS: a Fast Lightweight 2-way Merger for Sorting
在本文中,我们提出了FLiMS,一个高效和简单的并行算法合并两个排序表驻留在银行和/或宽内存。在FPGA上,由于减少了比较器的数量并消除了先前尝试中发现的冗余逻辑,因此其实现比最先进的替代方案使用更少的硬件资源。结合选择器级的分布式特性,对于相同数量的并行性或更高的并行性,可以实现更高的性能。这在许多应用中是有用的,例如在并行合并树中实现高吞吐量排序,其中合并的资源利用对于构建大型树和内部化工作负载以实现快速计算是至关重要的。还提出了FLiMS的有效变化,用于优化偏斜数据集的吞吐量,实现稳定的排序或使用更少的出队信号。此外,FLiMS在支持单指令多数据(SIMD)指令的现代CPU上表现得与传统软件一样好,超过了一些标准库的排序性能。
2022-03-07 cs.AR cs.DC
Parallelize Bubble and Merge Sort Algorithms Using Message Passing Interface (MPI)
排序算法一直是算法研究者关注的一个重要领域,人们投入了大量的资源来研究排序算法。为了这个目的,许多现有的排序算法的算法复杂性的效率方面进行了观察。在本文中,我们实现了气泡和合并排序算法使用消息传递接口(MPI)的方法。在两个不同大小的标准数据集(文本文件)上进行了测试。该算法的主要思想是将输入数据集的元素根据每个单词中的字符数量分布到许多额外的临时子数组中。每个子数组的大小取决于输入数组中具有相同字符数的元素的数量。我们使用Intel Core i7- 3610 QM(8个CPU),使用两种方法(字符串和数组3D向量)实现MPI。最后,我们得到了数据结构对算法性能的影响,因为我们选择了第二种方法。
2014-11-19 cs.DC
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
Communication-Efficient String Sorting
令人惊讶的是,在分布式内存并行机上对字符串进行排序的算法很少。我们开发了有效的算法,这个问题的基础上的多路合并原则。这些算法只检查确定排序顺序所需的字符。此外,还通过(粗略地)仅传送那些字符以及通过仅传送相同前缀的重复一次来减少通信量。在多达1280个核上的实验表明,这些算法通常比以前的算法快5倍以上。
2020-01-23 cs.DC cs.DS
High-Performance Sorting-Based k-mer Counting in Distributed Memory with Flexible Hybrid Parallelism
针对现有分布式内存k-mer计数方法缓存效率低、内存消耗高、并行灵活性不足的问题,提出基于排序的HySortK计数器,通过优化通信与混合并行实现性能提升与内存降低,并验证了实际集成效果。
2024-07-10 cs.DC q-bio.GN
Even faster sorting of (not only) integers
本文介绍了基于基数算法的最快并行排序器RADULS 2。它经过优化,可以利用现代多核CPU处理大量数据。主要创新包括:非常优化的算法,用于处理可能出现数十亿次的小数组(多达约100个记录),作为子问题处理,并改进了更大子数组的处理,更好地使用非临时内存存储。
2017-03-02 cs.DC cs.DS
Aggregating over Dominated Points by Sorting, Scanning, Zip and Flat Maps
本文证明常数维空间中支配点聚合可通过排序、zip、前缀聚合和 flat map 等 O(1) 个基本操作实现,从而表明前缀聚合足以表达其多维推广,并便于迁移到分布式架构。
2023-05-26 cs.DC
High Performance Parallel Sort for Shared and Distributed Memory MIMD
我们提出了四种高性能的混合排序方法开发的各种并行平台:共享内存多处理器,分布式多处理器,集群利用共享和分布式内存的存在。合并排序以其稳定性而闻名,被用于设计我们的几个算法。我们通过将其与快速排序相结合来提高其并行性能。我们提出了两个模型设计的共享内存MIMD(OpenMP):(a)一个非递归的合并排序和(b)混合快速排序和合并排序。第三个模型是设计用于分布式内存MIMD(MPI)使用混合快速排序和合并排序。我们的第四个模型的目的是利用共享内存的各个节点的今天的集群系统,并消除所有的内部数据传输之间的不同节点,我们的模型实现了一个一步MSD-Radix分发数据在10个包(MPI),而每个节点的并行核心使用Quicksort排序他们的数据分区顺序,然后合并和排序他们在并行采用OpenMp。所有开发的模型的性能优于基线性能。在对小数据进行排序时,混合快速排序和合并排序的性能优于集群平台中使用混合MSD-Radix和快速排序的混合内存并行合并排序,但对于较大的数据,集群平台中使用混合MSD-Radix和快速排序的混合内存并行合并排序的加速比变得更大并且不断改进。其中分布存储并行混合快速排序和归并排序的加速比最好。
2020-03-02 cs.DC
A Randomised Approach to Distributed Sorting
本文提出一种基于随机选择下标对进行局部排序的调和排序器,其时间复杂度为 O(n(log n)^2),并展示了其在异步与同步环境下的线性加速并行化能力,适用于分布式计算场景。
2025-02-07 cs.DC cs.DM cs.DS
Scalable Distributed-Memory External Sorting
我们设计算法,在大规模并行机器上对庞大的数据集进行排序。该算法是基于多路合并范式。我们首先概述了一个算法,其I/O的要求是接近下限。因此,与多路合并的天真实现和我们已知的所有其他方法相比,即使对于最大的可想象的输入,该算法也只对数据进行两次传递。第二种算法减少了通信开销,并以略微增加I/O要求为代价使用更传统的结果规范。一个实现在几个类别中赢得了众所周知的排序基准,并在很大程度上超过了它的竞争对手。
2009-10-14 cs.DC cs.DS cs.PF
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
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
Comparative Analysis for Quick Sort Algorithm under four Different Modes of Execution
本文对顺序排序算法在四种不同的执行模式下的性能进行了比较,即顺序处理模式、传统的多线程实现、使用OpenMP库的多线程以及最后在超级计算机上的并行处理。快速排序算法被选择来运行由该努力执行的实验,并且该算法使用不同的数组大小和不同数量的处理器来运行。结果和调查结果进行了分析,揭示的局限性,以及使用并行顺序排序算法的增强潜力。
2021-09-03 cs.CC cs.DC
Sorting and Permuting without Bank Conflicts on GPUs
在本文中,我们看看在图形处理单元(GPU)的共享内存中没有任何银行冲突的设计算法的复杂性。给定$n$、$w$处理器和$w$存储体大小的输入,我们研究了三个基本问题:排序、置换和$w$路划分(定义为对包含$[w]$中每个整数的$n/w$副本的输入进行排序).我们解决了最佳的$O(\frac{n}{w} \log n)$时间排序。当使用$n \ge w^2$时,我们在$O(n/w)$时间内最优地解决了划分问题。我们还提出了一个一般的解决方案的分区问题,需要$O(\frac{n}{w} \log^3_{n/w} w)$的时间。最后,我们使用随机算法在$O(\frac{n}{w} \log\log\log_{n/w} n)$时间内解决置换问题。我们的研究结果表明,当工作与银行的内存架构,有这些问题之间的分离和排列和分区问题是不容易的简单的并行扫描。
2015-07-06 cs.DC cs.DS
Work-stealing for mixed-mode parallelism by deterministic team-building
我们展示了如何扩展经典的工作窃取处理数据并行任务,可以要求任何数量的线程r >= 1的执行。我们详细解释了这样介绍的想法,工作盗窃与确定性的团队建设,在一个自然的方式概括了经典的工作盗窃。给出了广义工作窃取算法的一个C++原型实现,并对其进行了简要描述。在此基础上,一个严重的,众所周知的竞争者最好的并行快速排序算法已经实现,这自然依赖于任务和数据并行。例如,对2^27-1随机生成的整数进行排序,我们可以在32核Intel Nehalem EX系统上将速度从5.1提高到8.7,始终优于经过调优的任务并行Cilk++系统。
2010-12-22 cs.DC
In-place Parallel Super Scalar Samplesort (IPS$^4$o)
我们提出了一个排序算法,工作在原地,并行执行,是高速缓存效率,避免分支预测失误,并执行工作O(n log n)的任意输入的高概率。主要的算法贡献是新的方法,使基于分布的算法到位:在实践方面,通过使用粗粒度的基于块的排列,在理论方面,我们展示了如何消除递归堆栈。大量的实验表明,我们的算法IPS $^4$ o的规模以及各种多核机器。我们的表现超过我们最接近的竞争对手高达3倍。即使作为一个顺序算法,我们也比最接近的顺序竞争对手BlockQuicksort快1.5倍。
2017-06-29 cs.DC
AcceleratedKernels.jl: Cross-Architecture Parallel Algorithms from a Unified, Transpiled Codebase
AcceleratedKernels.jl是Julia中并行计算的后端不可知库,通过独特的编译架构原生针对NVIDIA,AMD,Intel和Apple加速器。它以统一、紧凑的代码库编写,可以实现高效的并行编程,最大限度地降低实现和使用的复杂性。算术重内核的基准测试显示,性能与C和OpenMP多线程CPU实现相当,Julia有时提供比传统C编译器更一致和可预测的数值性能。卓越的可组合性是突出的,因为同时CPU-GPU协同处理是可实现的-例如CPU-GPU协同排序-透明使用硬件专用的MPI实现。在Baskerville Tier 2 UK HPC集群上进行的测试表明,使用200个NVIDIA A100 GPU,可以实现538-855 GB/s的世界级排序吞吐量,与文献报道的在262,144个CPU内核上实现的900 GB/s的最高数据相当。直接NVLink GPU到GPU互连的使用导致平均4.93倍的加速;通过综合资本,运行和环境成本进行标准化,如果采用GPUDirect互连,通信繁重的HPC任务只有在GPU上才具有经济可行性。
2025-07-22 cs.DC cs.PF
LGRASS: Linear Graph Spectral Sparsification for Final Task of the 3rd ACM-China International Parallel Computing Challenge
本文介绍了我们的解决方案,第三届ACM-China IPCC的优化任务。通过复杂度分析,找出了原算法的三个耗时子程序:边标记、伪逆计算和边排序。这些子程序由于其超线性的时间复杂度而成为主要的性能瓶颈。为了解决这个问题,我们提出了LGRASS,一个线性图谱稀疏算法,运行在严格的线性时间。LGRASS利用生成树的特性和有效的算法来优化瓶颈子程序。此外,我们精心设计了一个并行处理方案LGRASS充分利用多处理器的硬件。实验表明,我们提出的方法完成任务在几十毫秒的正式测试用例,并保持其线性的图大小的随机测试用例的规模。
2022-12-14 cs.DC
GPU Multisplit: an extended study of a parallel algorithm
Multissplit是一种非常有用的并行原语,它将其输入数据排列到连续的桶或箱中,其中将元素分类到桶中的函数由程序员提供。由于GPU上缺乏有效的多分割,程序员通常选择使用排序来实现多分割。一种方法是首先生成桶ID的辅助数组,然后基于它对输入数据进行排序。如果索引较小的桶具有较小值的键,则多分裂的另一种方法是直接对输入数据进行排序。这两种方法都是低效的,并且需要更多的工作:前者需要更昂贵的数据移动,而后者在每个桶中对元素进行排序时花费了不必要的努力。在这项工作中,我们提供了一个并行模型和多个实现的多分裂问题。我们主要关注的是少量(最多256个)桶的多分割。我们使用线程束同步编程模型,并强调线程束范围内的通信,以避免分支发散和减少内存使用。我们还对输入元素进行了分层重新排序,以更好地合并全局内存访问。在GeForce GTX 1080 GPU上,对于仅键(或键值)多拆分,我们可以达到18.93 Gkeys/s(或11.68 Gpairs/s)的峰值吞吐量。最后,我们演示了如何multisplit可以用作基数排序的构建块。在我们的基于多拆分的排序实现中,我们实现了与最快的GPU排序例程相当的性能,对32位键(和键值对)进行排序,吞吐量为3.0 G keys/s(和2.1 Gpair/s)。
2017-05-19 cs.DC
Onesweep: A Faster Least Significant Digit Radix Sort for GPUs
我们提出了Onesweep,一个最低有效位(LSD)基数排序算法的大型GPU排序问题驻留在全局内存。我们的并行算法采用了一种方法,单程前缀和,只需要~2n的全球读/写操作的每一个数字装箱迭代。与当代GPU基数排序实现相比,这表现出最后一级内存流量的显着减少,其中数字分箱的每次迭代需要通过数据集两次,总计约3 n次全局内存操作。在NVIDIA A100 GPU上,我们的方法在排序256 M随机32位密钥时达到29.4 GKey/s。与当前最先进的GPU LSD基数排序CUB相比,我们的方法提供了约1.5倍的加速比。对于具有不同分布的32位密钥,与HRS(当前最先进的GPU MSD基数排序)相比,我们的方法提供了更一致的性能,并且在几乎所有情况下都优于HRS。
2022-06-03 cs.DC cs.DS
A fast vectorized sorting implementation based on the ARM scalable vector extension (SVE)
开发人员实现其算法的方式以及这些实现在现代CPU上的行为方式由这些算法的设计和组织管理。向量化单元(SIMD)是为数不多的可以并且必须被显式控制的CPU部件之一。在HPC社区中,x86 CPU及其向量化指令集事实上是几十年来的标准。指令集的每一个新版本通常是向量长度的加倍,并伴随着新的操作。每一代人都在努力适应和改进以前的实现。ARM可扩展向量扩展(SVE)的发布从根本上改变了事情,原因有几个。首先,我们预计ARM处理器将在未来几年装备许多超级计算机。其次,SVE的接口在几个方面与x86扩展不同,因为它提供不同的指令,使用谓词来控制大多数操作,并且具有仅在执行时才知道的向量大小。因此,使用SVE为如何调整算法带来了新的挑战,包括那些已经在x86上进行了良好优化的算法。本文在快速排序和双调排序算法的基础上提出了一种混合排序算法。我们使用Bitonic排序来处理小分区/数组,并使用矢量化分区实现来划分分区。我们解释了如何使用谓词以及如何管理非静态向量大小。我们解释我们如何有效地实现排序内核。我们的方法只需要一个数组的O(log N)的递归调用在分区阶段,在顺序和并行的情况下。我们测试我们的方法在现代ARMv8.2上的性能,并通过对整数、双浮点数和整数的键/值对进行排序/分区来评估我们实现的不同层。我们的方法比GNUC ++排序算法平均快4倍。
2021-11-19 cs.DC
A Fast Parallel Median Filtering Algorithm Using Hierarchical Tiling
NVIDIA(英伟达)
提出一种基于分层分块的并行中值滤波算法,含寄存器内数据无关与内存数据感知两变体,在 GPU 上显著优于现有方法。
2025-07-26 cs.CV cs.DC
Improved Parallel Construction of Wavelet Trees and Rank/Select Structures
现有的并行小波树构造算法的工作复杂度为$O(n\logσ)$。本文提出了该问题的并行算法,改进了工作复杂度。我们的第一个算法是基于并行整数排序,并具有$O(n\log\log n\lceil\logσ/\sqrt{\log n\log\log n}\rceil)$工作和多对数深度,或$O(n\lceil\logσ/\sqrt{\log n}\rceil)$工作和次线性深度。我们还描述了另一种算法,具有$O(n\lceil\logσ/\sqrt{\log n} \rceil)$工作和$O(σ+\log n)$深度。然后,我们将展示如何使用类似的想法来构造小波树(任意形状的二叉树和多叉树)的变种,以及小波矩阵的并行与较低的工作复杂度比以前的算法。最后,我们表明,二进制序列和多进制序列,这是存储在小波树节点上的秩和选择结构,可以并行构造改进的工作范围,匹配现有的最好的顺序算法的秩和选择结构的构造。
2020-01-16 cs.DC
Bandwidth-Optimized Parallel Algorithms for Sparse Matrix-Matrix Multiplication using Propagation Blocking
稀疏矩阵-矩阵乘法(Sparse matrix-matrix multiplication,SpGEMM)是各种图、科学计算和机器学习算法中广泛使用的核心。众所周知,SpGEMM是一个内存受限的操作,其峰值性能预计将受到内存带宽的限制。然而,现有的算法未能饱和的内存带宽,导致在Roofline模型下的次优性能。在本文中,我们现有的SpGEMM算法的特点,其内存访问模式的基础上,开发实用的下限和上限的SpGEMM性能。然后,我们开发了一个基于外积矩阵乘法的SpGEMM算法。新开发的算法称为PB-SpGEMM饱和内存带宽通过使用传播阻塞技术,并通过执行在缓存排序和合并。对于许多实际矩阵,PB-SpGEMM在现代多核处理器上的运行速度比最先进的堆和散列SpGEMM算法快20%-50%。最重要的是,PB-SpGEMM达到了Roofline模型预测的性能,并且其性能在矩阵大小和稀疏性方面保持稳定。
2020-02-26 cs.DC
Simulating Parallel Algorithms in the MapReduce Framework with Applications to Parallel Computational Geometry
在本文中,我们描述了高效的MapReduce模拟的BSP和PRAM模型中指定的并行算法。我们还提供了一些应用这些模拟结果的问题,并行计算几何的MapReduce框架,从而导致有效的MapReduce算法排序,1维所有最近邻,2维凸包,3维凸包,和固定维线性规划。对于reducer的缓冲区大小为$B=O(n^ε)$的情况,对于一个小的常数$ε>0$,我们所有的MapReduce算法都以恒定的轮数运行,并且具有线性大小的消息复杂度,同时以高概率保证所有reducer列表的大小为$O(B)$。
2010-04-27 cs.CG cs.DC cs.DS
Vectorized and performance-portable Quicksort
最近的工作表明,使用向量CPU指令的快速排序的实现可以在广泛使用的非向量化算法。然而,这些实现通常是单线程的,针对特定的指令集实现,并且限于一小组键类型。我们解除了这三个限制:我们提出的“vqsort”算法集成到最先进的并行排序器“ips 4 o”中,几何平均加速比为1.59。相同的实现在四个平台上的七个指令集(包括SVE和RISC-VV)上工作。它还支持浮点和16-128位整数键。据我们所知,这是CPU上最快的非元组键排序,比标准库中实现的排序算法快20倍。本文重点介绍了实际的工程方面,使速度和可移植性,我们还没有看到一个快速排序实现证明。此外,我们还引入了紧凑和无转置的排序网络,用于小数组的寄存器内排序,以及一种对对抗性输入具有鲁棒性的向量友好枢轴采样策略。
2022-05-12 cs.DC cs.IR
Parallel Algorithms for Butterfly Computations
蝴蝶是二分图中最小的非平凡子图,因此有效地分析它们对于提高二分图的某些应用的质量至关重要。在本文中,我们设计了一个框架,称为ParButterfly,包含新的并行算法处理蝴蝶的以下问题:全局计数,每顶点计数,每边计数,尖端分解(顶点剥离),和翅膀分解(边缘剥离)。这些算法的主要组成部分是聚合事件上的顶点子集的楔形,我们的框架支持不同的方法楔形聚合,包括排序,哈希,直方图,和排序。此外,ParButterfly还支持不同的顶点排序方式来加速计数,包括边排序、近似和精确度排序以及近似和精确补核排序。对于计数,ParButterfly还支持精确计算以及通过图稀疏化的近似计算。我们证明了强有力的理论保证的工作和跨度的算法ParButterfly。我们使用48核机器对ParButterfly中的所有算法在真实世界的二分图集合上进行全面评估。我们的计数算法获得了显着的并行加速比,优于最快的顺序算法的高达13.6倍的自相关加速比高达38.5倍。与一般的子图计数解决方案相比,我们快了几个数量级。我们的剥离算法实现了高达10.7倍的自相关加速比,并优于最快的顺序基线高达几个数量级。
2020-06-17 cs.DC
Encoding Schemes for Parallel In-Place Algorithms
本文提出利用输入底层结构获取更多比特的通用编码技术,为合并有序序列和随机打乱序列设计了工作高效且跨度多对数的并行原地算法,并展示了其在整数排序中的应用及合并算法的实际实现。
2025-03-10 cs.DC cs.DS
Reconfigurable Heterogeneous Parallel Island Models
异构并行岛模型(Heterogeneous Parallel Island Models,HePIM)在其岛中运行不同的生物启发算法(Bio-Inspired Algorithm,BA)。从各种通信拓扑结构和迁移策略微调同质PIM(HoPIM),在其所有岛屿上运行相同的BA,以前的工作介绍了HePIM,提供了有竞争力的质量解决方案,最适合BA在HoPIM。这项工作向前迈进了一步,保持了HePIM提供的种群多样性,并增加了它们的灵活性,允许在执行过程中对岛屿进行BA重新配置:根据它们的性能,岛屿可以在进化过程中动态地替换它们的BA。实验与引入的架构(RecHePIM)被施加到NP-hard问题的排序排列的逆转,使用四种不同的BA,即简单的遗传算法,双点交叉遗传算法,差分进化,和自调整粒子群优化。结果表明,新的可重构异构模型计算质量更好的解决方案比HePIM关闭与HoPIM运行最佳适应BA的差距。
2022-05-05 cs.DC cs.DM cs.NE
Synthesis of signal processing algorithms with constraints on minimal parallelism and memory space
在最小并行性和内存空间约束下,本研究提出高效信号处理算法和实现方案,提升低功耗计算硬件的能效。
2025-12-27 cs.AR cs.DC cs.NA
Parallel Scan on Ascend AI Accelerators
Huawei Zurich Research Center(华为苏黎世研究中心)
本文提出基于Ascend AI加速器的并行扫描算法,利用立方单元和向量单元提升性能,实现单核和多核加速,应用于AI工作负载中的排序、张量掩码和top-k采样。
2026-01-02 cs.DC cs.DS