Sorting Integers on the AP1000
排序问题是计算机科学的经典问题之一。虽然在顺序机器上很好地理解,但并行系统之间的体系结构的多样性意味着算法在所有平台上的执行并不一致。本文介绍了在富士通AP 1000超级计算机上实现的一种基于基数的正整数排序算法,该算法是作为1994年并行处理联合研讨会(JSPP)并行软件竞赛(PSC 94)的参赛作品而构建的。简要考虑也给了一个完整的基数排序进行并行跨机器。
2000-04-23 cs.DC
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
Parallel Integer Sort: Theory and Practice
UC Riverside(加州大学河滨分校);University of Maryland(马里兰大学)
本文研究并行整数排序的理论与实践,提出理论高效且性能良好的新算法DovetailSort,解决现有算法中检测和利用重复键的难题。
2024-01-01 cs.DC cs.DS
A Performance Comparison of Sort and Scan Libraries for GPUs
排序和扫描是构造高度并行算法的两个基本原语。许多库现在提供了这些原语的GPU实现,但关于这些实现的性能的信息相对较少。我们对七个库进行了32位整数扫描和排序的基准测试,并通过32位整数键对32位值进行排序。我们发现,有一个很大的变化,性能之间的图书馆,没有一个图书馆既有最佳的性能和可移植性。
2016-01-13 cs.DC
Deep Tensor Convolution on Multicores
三维内核的深度卷积神经网络(ConvNets)允许时空特征的联合建模。这些网络提高了视频和体积图像分析的性能,但由于GPU硬件的内存上限较低,因此在大小上受到限制。现有的CPU实现克服了这一限制,但速度慢得不切实际。在这里,我们扩展和优化更快的Winograd类卷积算法的$N$维的情况下,特别是CPU硬件。首先,我们消除了手工手工制作算法的需要,利用宽松的约束和廉价的稀疏访问CPU内存。其次,我们通过将数据矩阵转换为缓存感知的AVX向量宽度的整数倍,最大限度地提高CPU利用率和多核可扩展性。将二维ConvNets视为我们方法的特殊(和最不利)情况,我们证明了与以前的最先进技术相比,吞吐量提高了5到25倍。
2017-06-11 cs.CV cs.DC cs.NE
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
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
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
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
GPU sample sort
在本文中,我们提出了一个示例排序算法的设计,为众核GPU。尽管是分布式内存架构中最有效的基于比较的排序算法之一,但它在GPU上的性能以前是未知的。对于均匀分布的键,我们的样本排序比最好的基于比较的排序算法GPU Thrust merge sort至少快25%,平均快68%,平均比GPU quicksort快2倍以上。此外,对于64位整数键,它至少比直接操作键的二进制表示的高度优化的GPU推力基数排序快63%,平均快2倍。我们的实现对不同的密钥分布和熵水平具有鲁棒性,并且几乎与输入大小呈线性关系。这些结果表明,多路技术,特别是样本排序,实现了更好的性能比双向归并排序和快速排序。
2009-09-30 cs.DC cs.DS
Shared-Memory Range-Tiled CDF Sort for Small-Range Integer Keys on GPUs
Hosei University(法政大学);THIRD Inc.(THIRD公司);Osaka Metropolitan University(大阪公立大学)
该研究针对GPU上小范围整数键排序问题,提出RT-CDF算法,经RTX 4090实验验证其在中小范围场景下性能优于多个基准方法,最大加速比达4.39,但不适用于大范围场景。
2026-09-02 cs.DC
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
The implementation and optimization of Bitonic sort algorithm based on CUDA
本文详细介绍了双调排序算法,并基于cuda架构实现了双调排序算法,同时针对GPU的特点对实现细节进行了两次有效的优化,大大提高了效率。最后,我们通过比较快速排序算法在CPU上的加速比,对GPU上优化的Bitonic排序算法排序算法进行了研究,由于快速排序算法不适合并行实现,但在一定程度上比CPU上的其他排序算法更有效,因此,我们对GPU上的Bitonic排序算法和CPU上的快速排序算法进行了加速比和性能比较。对一系列32位的随机整数,实验结果表明,我们的工作的加速近20倍,当数组大小为216左右时,加速比甚至高达30。
2015-06-04 cs.DC
Low-Depth Parallel Algorithms for the Binary-Forking Model without Atomics
Binary-forking模型是一种并行计算模型,最近由Blelloch等人正式定义,其中线程可以递归和异步地派生并发子线程。该模型产生$Θ(\log n)$的成本来产生或同步$n$任务或线程。二进制分叉模型真实地捕获了在多核共享内存机器上使用现代多线程程序设计语言实现的并行算法的性能。相比之下,广泛研究的理论PRAM模型不考虑产生和同步线程的成本,因此,在PRAM模型中实现最佳性能界限的算法在二进制分叉模型中可能不是最佳的。通常,算法需要重新设计,以达到最佳的性能界限,在二进制分叉模型和非恒定的同步成本使任务具有挑战性。虽然二进制分叉模型允许使用原子{\em test-and-set}(TS)指令来减少一些同步开销,但是假设这样的指令的可用性对硬件提出了更强的要求,并且可能限制使用它们的算法的可移植性。在本文中,我们避免使用锁和原子指令在我们的算法中,除了可能在连接操作,这是由运行时系统实现。在本文中,我们设计了有效的并行算法的二进制分叉模型,没有原子的三个基本问题:Strassen的(和Strassen样)矩阵乘法(MM),基于比较的排序,和快速傅立叶变换(FFT)。我们所有的结果都改善了在二进制分叉模型中的相应问题的已知结果,无论有没有原子。
2020-09-02 cs.DC cs.DS
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
Encoding Schemes for Parallel In-Place Algorithms
本文提出利用输入底层结构获取更多比特的通用编码技术,为合并有序序列和随机打乱序列设计了工作高效且跨度多对数的并行原地算法,并展示了其在整数排序中的应用及合并算法的实际实现。
2025-03-10 cs.DC cs.DS
Parallel Index-Based Structural Graph Clustering and Its Approximation
SCAN(Structural Clustering Algorithm for Networks)是一种研究得很好、应用广泛的图聚类算法。然而,对于大型图,顺序SCAN变体非常慢,并且并行SCAN变体不能在具有不同SCAN参数设置的查询之间有效地共享工作。由于SCAN的用户经常探索许多参数设置来找到好的聚类,因此值得预先计算一个索引来加速查询。本文在最近提出的一种顺序算法GS*-Index的基础上,提出了一种实用的、可证明有效的基于索引的并行SCAN算法。我们的并行算法通过使用整数排序改进了顺序算法的渐近工作。它也是高度并行的,实现了索引构建和聚类查询的对数跨度(并行时间)。此外,我们应用局部敏感哈希(LSH)设计一种新的近似SCAN算法,并证明其聚类行为的保证。我们提出了一个实验评估我们的算法在大型现实世界的图形。在具有双向超线程的48核机器上,我们的并行索引构造比GS*-Index构造实现了50- 151 $\times$的加速。事实上,即使在单线程上,我们的索引构造算法也比GS*-Index快。我们的并行索引查询实现实现了5- 32 $\times$加速GS*-索引查询在一系列的SCAN参数值,我们的实现总是比ppSCAN,一个国家的最先进的并行SCAN算法。此外,我们的实验表明,应用LSH的结果在更快的索引建设,同时保持良好的聚类质量。
2021-03-30 cs.DB cs.DC cs.DS