Evaluating OpenMP Offloading for Intra-node Multi-GPU Programming across NVIDIA, AMD, and Intel Architectures: A 3D Heat Transfer Case Study
Rudolfovo-Science and Technology Centre Novo mesto(鲁多尔沃夫诺沃梅斯托科学与技术中心);Faculty of Mechanical Engineering, University of Ljubljana(卢布尔雅那大学机械工程学院);Department of Computer Science, FSTM, University of Luxembourg(卢森堡大学科学技术学院计算机科学系)
本研究以3D热传导为例,对比分析OpenMP Offloading在三类GPU上的性能,发现其多GPU实现较单GPU可获2倍、4倍左右性能提升。
2026-09-16 cs.DC
SIMD-X: Programming and Processing of Graph Algorithms on GPUs
凭借高计算能力和内存带宽,图形处理单元(GPU)有助于加速数据密集型分析,尤其是当此类应用程序适合单指令多数据(SIMD)模型时。然而,由于内存访问和控制流的不规则性,诸如宽度优先搜索和k核之类的图形算法通常无法充分利用GPU。为了应对这一挑战,我们开发了SIMD-X,用于在GPU上编程和处理单指令多个复杂数据。具体来说,新的主动计算合并(ACC)模型不仅为程序员提供了编程的便利,更重要的是为系统级优化创造了机会。为此,SIMD-X利用即时任务管理,在运行时过滤掉不活动的顶点,并智能地将各种任务映射到不同数量的GPU核心,以追求工作负载平衡。此外,SIMD-X利用基于推拉的内核融合,在新的无死锁全局屏障的帮助下,将大量的计算内核减少到非常少。使用SIMD-X,用户可以在数十行代码中编写图形算法,同时实现3?,六个?二十四?三个?Gunrock,Galois,CuSha和Ligra的加速。
2018-12-10 cs.DC
How to Correctly Deal With Pseudorandom Numbers in Manycore Environments - Application to GPU programming with Shoverand
随机模拟通常对表征其结果的统计质量的随机性来源敏感。因此,我们需要高度可靠的随机数发生器(RNG)来满足这些应用。最近的发展试图通过越来越多的通用图形处理单元(GP-GPU)来缩短计算时间,以加速随机模拟。这种设备带来了新的并行化的可能性,但它们也引入了新的编程困难。由于RNG是任何随机模拟的基础,因此它们也需要移植到GP-GPU。在GP-GPU平台上仍然缺乏经过质量验证的RNG的精心设计的实现。在本文中,我们介绍了ShoveRand,一个框架定义的共同规则,产生随机数均匀的GP-GPU。我们的框架旨在应对任何支持GPU的开发平台,并向用户公开一个简单的界面。我们还提供了一个现有的RNG实现与此框架,以证明其在开发和易用性的效率。
2014-12-29 cs.DC
Accelerating Communication for Parallel Programming Models on GPU Systems
随着越来越多的领先级系统在向亿级的竞争中采用GPU加速器,GPU数据的有效通信正在成为高性能计算的最关键组件之一。对于并行编程模型的开发人员来说,使用GPU(如CUDA)的本机API实现对GPU感知通信的支持可能是一项艰巨的任务,因为它需要相当大的努力,性能几乎没有保证。在这项工作中,我们展示了统一通信X(UCX)框架组成GPU感知通信层的能力,该层为Charm++生态系统的多个并行编程模型提供服务:Charm++,自适应MPI(AMPI)和Charm4py。我们使用改编自OSU基准测试套件的微基准测试来展示我们设计的性能影响,在Charm++中获得了高达10.1倍的延迟改进,在AMPI中获得了11.7倍的延迟改进,在Charm4py中获得了17.4倍的延迟改进。我们还观察到Charm++的带宽增加了10.1倍,AMPI增加了10倍,Charm4py增加了10.5倍。通过评估Jacobi迭代法的代理应用程序,我们展示了我们的设计对现实世界应用程序的潜在影响,在Charm++中将通信性能提高了12.4倍,在AMPI中提高了12.8倍,在Charm4py中提高了19.7倍。
2022-03-22 cs.DC
Two-Dimensional Batch Linear Programming on the GPU
本文提出了一种新的,高性能的,图形处理单元为基础的算法,有效地解决二维的【形】线性规划的批量。二维的【形】线性规划的域是特别有用的,由于相关的几何问题的流行。批处理线性规划是指在一个操作中解决许多不同的线性规划。通过同时求解多个线性程序并在线程间均匀分配工作负载,可以最大化图形处理单元的利用率。对最先进的图形处理单元和CPU线性程序求解器,分别获得超过22倍和63倍的加速比。
2019-02-13 cs.DC
A Programming Model for GPU Load Balancing
我们提出了一个GPU细粒度的负载平衡抽象,从工作处理中提取负载均衡,旨在支持静态和动态调度,并通过可编程接口实现新的负载平衡调度。在我们的工作之前,释放GPU在不规则问题上的潜力的唯一方法是通过特定于应用程序的紧耦合负载平衡技术来实现工作负载平衡。通过我们的开源负载平衡框架,我们希望在GPU上开发不规则并行算法时提高程序员的生产力,并通过允许快速试验各种现有负载平衡技术来提高此类应用程序的整体性能特征。因此,我们也希望通过在我们的抽象中将负载平衡的关注点从工作处理中分离出来,管理现有代码并将其扩展到未来的架构中变得更加容易。
2023-01-12 cs.DC
Solving Dynamic Programming Problem by Pipeline Implementation on GPU
在本文中,我们展示了在GPU上的动态规划(DP)的流水线实现的有效性。作为一个例子,我们解释了如何解决一个矩阵链乘法(MCM)问题的DP在GPU上。这个问题可以通过DP在$O(n^3)$步骤中顺序地解决,其中$n$是矩阵的数量,因为它的解表的大小为$n \times n$,并且表中的每个元素可以在$O(n)$步骤中计算。为此,典型的加速策略是并行化每个元素的$O(n)$步长计算,这可以通过并行前缀计算容易地实现,即,以锦标赛方式使用$n$线程的$O(\log n)$步骤计算。通过这种标准的并行化方法,我们可以用$n$线程在$O(n^2 \log n)$步骤中解决MCM问题。在我们的方法中,我们以流水线的方式在GPU上解决MCM问题,即,我们使用GPU核心来支持流水线阶段,使得解表的许多元素同时被部分地并行计算。我们的实现确定一个输出值,每一个计算步骤与$n$线程在一个管道的方式和构造的解决方案表完全在$O(n^2)$步骤与$n$线程。
2020-08-05 cs.DC
Gunrock: A High-Performance Graph Processing Library on the GPU
对于GPU上的大规模图形分析,数据访问和控制流的不规则性以及GPU编程的复杂性一直是开发可编程高性能图形库的两个重大挑战。我们的图形处理系统“Gunrock”是专门为GPU设计的,它使用了一个高层次的、批量同步的、以数据为中心的抽象,专注于顶点或边缘边界上的操作。Gunrock通过将高性能GPU计算原语和优化策略与高级编程模型相结合,实现了性能和表现力之间的平衡,该模型允许程序员以较小的代码大小和最少的GPU编程知识快速开发新的图形原语。我们评估Gunrock上的五个关键图形原语,并表明Gunrock平均至少有一个数量级的加速比Boost和PowerGraph,可比的性能最快的GPU硬连线原语,和更好的性能比任何其他GPU的高级图形库。
2016-02-22 cs.DC
Advanced Programming Platform for efficient use of Data Parallel Hardware
图形处理单元(GPU)已经从能够在游戏中渲染高质量图形的专用硬件发展为用于以并行模式有效处理数据块的商品硬件。这种演变对于科学团体来说特别有趣,他们传统上主要使用CPU作为工作机器,现在可以从GPU硬件到HPC集群的到来中获益。这种新的GPU硬件有望提高峰值性能,但使用起来并不轻松。在这篇文章中,提出了一个编程平台,旨在促进直接使用这种专门的硬件。该平台包括一个并行数据流的可视化编辑器,它是面向在分布式集群与GPU的执行。在两个特征问题,快速傅立叶变换和图像压缩的应用程序的例子,也显示。
2012-03-23 cs.DC
Automatic Multi-GPU Code Generation applied to Simulation of Electrical Machines
电气和电子工程已经使用并行编程来解决其大规模的复杂问题的性能的原因。然而,由于并行编程需要任务和数据的非平凡分布,开发人员发现很难有效地实现他们的应用程序。因此,为了降低设计的复杂性,我们提出了一种方法来生成代码的混合架构(如CPU + GPU)使用OpenCL,异构系统的并行编程的开放标准。该方法基于模型驱动工程(MDE)和对象管理组织(OMG)提出的MARTE规范。其目的是为并行编程的非专家提供资源,以实现他们的应用程序。此外,由于模型重用能力,我们可以添加/更改功能或目标架构。因此,这种方法可以帮助行业实现其上市时间限制,并通过实验测试证实,使用多GPU环境可以提高性能。
2011-07-04 cs.DC
Term Rewriting on GPUs
我们提出了一种在GPU上实现项重写的方法。我们通过让GPU重复执行所有子项的大规模并行计算来做到这一点。我们发现,如果长期重写系统表现出足够的内部并行性,GPU重写大大优于CPU。由于我们希望我们的实现可以进一步优化,并且因为在任何情况下,GPU在未来都会变得更加强大,这表明GPU是一个有趣的术语重写平台。由于项重写可以被看作是一种通用的程序设计语言,这也开辟了一条通过项重写对GPU进行编程的途径,特别是对于不规则的计算。
2020-09-15 cs.DC
A Study of Performance Programming of CPU, GPU accelerated Computers and SIMD Architecture
该研究梳理CPU、GPU、SIMD三类并行计算实现方式及现有研究瓶颈,汇总并行编程技术资料,呈现其现状与趋势,为后续研究提供背景支撑。
2024-09-16 cs.DC
Evaluation of Programming Models and Performance for Stencil Computation on Current GPU Architectures
本文在NVIDIA A100和GH200上评估CUDA、OpenACC与OpenMP目标卸载三种编程模型下的模板计算性能,揭示新架构行为并给出优化建议,其中最佳CUDA实现比优化OpenACC快2.1倍。
2024-08-12 cs.DC
GPU PaaS Computation Model in Aneka Cloud Computing Environment
由于产生的数据量的激增以及人工智能(AI)技术(如机器学习和深度学习)的快速发展,现有的传统计算模型已经不足以处理用于提取内在信息的巨大数据量和复杂的应用逻辑。诸如图形处理单元(GPU)的计算加速器已经成为许多大数据和机器学习应用的事实上的SIMD计算系统。另一方面,传统的计算模式也逐渐从传统的基于所有权的计算转向基于订阅的云计算模式。然而,缺乏以无缝方式开发云原生应用程序以利用云中的CPU和GPU资源的编程模型和框架已成为快速应用程序开发的瓶颈。为了支持这种应用程序对同时使用异构资源的需求,需要编程模型和新的框架来有效地管理底层资源。Aneka是一种流行的PaaS计算模型,用于在单个容器.NET平台中使用多个编程模型(如Thread,Task和MapReduce)开发云应用程序。由于Aneka解决了使用基于CPU的资源的MIMD应用程序开发问题,而GPU编程(如CUDA)是为SIMD应用程序开发而设计的,因此本章讨论了Aneka Cloud的GPU PaaS计算模型,以实现.NET平台的快速云应用程序开发。流行的开源GPU库被利用并集成到现有的Aneka任务编程模型中。扩展了调度策略,可以自动识别GPU机器并相应地调度相应的任务。最后,以图像处理为例,介绍了基于PaaS Aneka SDK和CUDA库构建的系统。
2018-08-20 cs.DC
Anonymized Network Sensing using C++26 std::execution on GPUs
Rensselaer Polytechnic Institute(伦斯勒理工学院);Pacific Northwest National Laboratory(太平洋西北国家实验室)
本文探讨使用 C++26 Senders 模型在密集 GPU 系统上开发匿名网络感知图挑战,该方法将 GPU 视为一等资源,在 8 个 NVIDIA A100 上相比串行 GraphBLAS 基线实现高达 55 倍性能提升。
2025-10-15 cs.DC
Effective Extensible Programming: Unleashing Julia on GPUs
GPU和其他加速器是用于加速计算密集型可并行化应用的流行设备。然而,对这些设备进行编程是一项艰巨的任务。编写高效的设备代码是具有挑战性的,并且通常是用低级程序设计语言来完成的。高级语言很少得到支持,或者不与高级语言生态系统的其余部分集成。为了克服这一点,我们提出了编译器的基础设施,有效地增加了对新的硬件或环境的支持,现有的程序设计语言。我们通过在Julia程序设计语言中添加对NVIDIA GPU的支持来评估我们的方法。通过与现有编译器的集成,我们大大降低了实现和维护新编译器的成本,并促进了现有应用程序代码的重用。此外,使用高级Julia程序设计语言可以实现GPU编程的新的动态方法。这大大提高了程序员的工作效率,同时保持与官方NVIDIA CUDA工具包相似的应用程序性能。
2017-12-08 cs.DC cs.PL
Gunrock: GPU Graph Analytics
对于GPU上的大规模图形分析,数据访问和控制流的不规则性以及GPU编程的复杂性对开发可编程高性能图形库提出了两个重大挑战。我们的图形处理系统“Gunrock”是专门为GPU设计的,它使用了一个高层次的、批量同步的、以数据为中心的抽象,专注于顶点或边缘边界上的操作。Gunrock通过将高性能GPU计算原语和优化策略与高级编程模型相结合,实现了性能和表现力之间的平衡,该模型允许程序员以较小的代码大小和最少的GPU编程知识快速开发新的图形原语。我们描述了各种优化策略的性能,并评估了Gunrock在不同GPU架构上的整体性能,这些GPU架构涵盖了从基于矩阵的算法和排名算法到三角形计数和基于二分图的算法的各种图形原语。结果表明,在单个GPU上,Gunrock平均至少比Boost和PowerGraph有一个数量级的加速,与最快的GPU硬连线原语和CPU共享内存图形库(如Ligra和Galois)相当的性能,并且比任何其他GPU高级图形库都更好。
2017-01-04 cs.DC
High-level GPU programming in Julia
GPU是用于加速科学计算的流行设备。然而,由于GPU代码通常是用低级语言编写的,它打破了科学程序员流行的高级语言的抽象。为了克服这一点,我们提出了一个框架的CUDA GPU编程的高级朱莉娅程序设计语言。此框架编译Julia源代码以供GPU执行,并使用现代代码生成技术处理必要的低级交互,以避免运行时开销。评估框架及其API的案例研究,包括跟踪变换领域的图像处理,我们发现,对性能的影响是最小的,同时大大提高了程序员的生产力。Julia语言的元编程能力证明了这一点。我们的框架显着提高了GPU的可用性,使它们能够被广泛的程序员访问。它可以作为自由和开源软件在MIT许可证下获得许可。
2016-04-12 cs.DC cs.PL
On the Limits of Performance Portability in Directive-Based GPU Programming
CINECA;Università degli Studi di Torino(都灵大学)
本文通过将天体物理磁流体动力学代码gPLUTO从OpenACC移植到OpenMP,评估了基于指令的GPU编程在NVIDIA A100和AMD MI250X上的性能可移植性,发现应用级性能差异可达3倍,核函数级可达47倍,主要受内存延迟和编译器限制影响。
2026-06-12 cs.DC
GPGPU Computing
自从第一个将GPU用于通用计算的想法出现以来,多年来事情已经发展,现在有几种GPU编程的方法。GPU计算实际上始于NVIDIA推出的CUDA(计算统一设备架构)和AMD推出的Stream。这些是GPU供应商设计的API,与他们提供的硬件一起使用。OpenCL(Open Computing Language)是一种新兴的标准,它试图统一不同的GPU通用计算API实现,并为编写跨CPU和GPU组成的异构平台执行的程序提供了一个框架。OpenCL使用基于任务和基于数据的并行性提供并行计算。本文将重点介绍NVIDIA推出的CUDA并行计算架构和编程模型。我们将介绍CUDA编程模型的优点。我们还将比较两种主要的方法,CUDA和AMD APP(STREAM)以及试图统一GPGPU计算模型的新框架OpenCL。
2014-08-29 cs.DC
C-for-Metal: High Performance SIMD Programming on Intel GPUs
SIMT执行模型通常用于通用GPU开发。CUDA和OpenCL开发人员编写标量代码,由编译器和硬件隐式并行化。然而,在英特尔GPU上,这种抽象具有深刻的性能影响,因为底层ISA是SIMD,并且无法充分利用重要的硬件功能。为了缩小这一性能差距,我们引入了C-For-Metal(CM),这是一种显式SIMD编程框架,旨在在英特尔GPU上提供接近最佳性能。CM程序设计语言及其向量/矩阵类型提供了一个直观的界面来利用底层硬件功能,允许细粒度寄存器管理、SIMD大小控制和跨通道数据共享。实验结果表明,来自不同领域的CM应用程序的性能优于最知名的基于SIMT的OpenCL实现,在最新的英特尔GPU上实现高达2.7倍的加速。
2021-01-26 cs.DC cs.PL
Computing Treewidth on the GPU
我们提出了一种在GPU上计算图的树宽的并行算法。我们在OpenCL中实现了该算法,并对其性能进行了实验评估。我们的算法是基于一个$O^*(2^{n})$的时间算法,探讨消除排序的图形使用Held-Karp一样的动态规划方法。我们使用Bloom过滤器来检测重复的解决方案。GPU编程提出了独特的挑战和限制,例如对内存使用的限制以及限制分支发散的需要。我们尝试各种优化,看看是否有可能解决这些问题。与在CPU上运行相同的算法相比,我们实现了非常大的速度提升(高达$77\times$)。
2017-09-28 cs.DC
A Multi-GPU Programming Library for Real-Time Applications
我们提出了MGPU,一个针对单节点多GPU系统的C++编程库。这样的系统结合了不成比例的浮点性能与高数据局部性,因此非常适合实现实时的【形】算法。我们描述了库的设计,编程接口和实现细节,在这个特定的问题域。这项工作的核心概念是一种新的容器抽象和类似MPI的通信方法,用于系统内通信。我们进一步展示了如何MGPU是用来作为一个框架,现有的GPU库移植到多设备架构。为了测试我们的库,我们使用多个GPU加速了用于实时的【形】磁共振成像的迭代非线性图像重建算法。我们使用2个GPU实现了约1.7的加速,并使用4个GPU达到最终2.1的加速。这些有希望的结果使我们得出结论,多GPU系统是一个可行的解决方案,实时的【形】MRI重建以及一般的信号处理应用。
2013-01-07 cs.DC cs.PF
GPU-Accelerated Primal Heuristics for Mixed Integer Programming
Nvidia(英伟达)
本研究提出融合GPU加速的混合整数规划原始启发式算法,通过GPU加速PDLP求解器、新增探测缓存并优化多种前沿启发式算法,在MIPLIB2017基准上显著提升了可行解数量与目标质量。
2025-10-30 cs.DC math.OC
Pangolin: An Efficient and Flexible Graph Pattern Mining System on CPU and GPU
图模式挖掘(GPM)问题,如模体计数,有越来越多的兴趣。GPM系统已经开发出来,为这些问题的编程算法提供统一的接口,并在并行系统上运行它们。然而,现有的系统可能需要几个小时才能在中等大小的图形中挖掘简单的模式,这大大限制了它们在现实世界中的可用性。我们提出了Pangolin,一个高性能和灵活的内存GPM框架,目标是共享内存CPU和GPU。Pangolin是第一个为GPU处理提供高级抽象的GPM系统。它提供了一个简单的编程接口的基础上的扩展-减少-过滤器模型,使用户能够指定特定于应用程序的知识,搜索空间修剪和同构测试消除。我们描述了新的优化,利用局部性,减少内存消耗,并减轻动态内存分配和同步的开销。在28核CPU上的评估表明,Pangolin的性能平均分别比现有的GPM框架Arabesque、RStream和Fractal高出49倍、88倍和80倍。V100 GPU上的加速将Pangolin的性能平均提高了15倍。与最先进的手工优化的GPM应用程序相比,Pangolin以更少的编程工作提供了有竞争力的性能。
2020-01-17 cs.DC
Contract-Based General-Purpose GPU Programming
使用GPU作为通用处理器,通过为大量且不断增长的算法集提供台式机上的大规模数据并行化,彻底改变了并行计算。然而,广泛采用的一个障碍是编程的困难和实现良好性能所需的硬件的低级控制。本文提出了一个编程库,SafeGPU,旨在达到程序员的生产力和性能之间的平衡,使GPU的数据并行操作可从一个经典的面向对象的程序设计语言。该解决方案与合同设计方法相结合,通过将可执行程序规范嵌入到程序文本中,提高了对功能程序正确性的信心。我们表明,我们的库导致模块化和维护代码,可访问GPGPU的非专家,同时提供的性能是与手写的CUDA代码。此外,运行时合约检查是可行的,因为合约可以在GPU上执行。
2015-08-21 cs.DC cs.SE
SyclKittens: A Tile Programming Model for Programmers and Coding Agents on Intel GPUs
Massachusetts Institute of Technology(麻省理工学院);Intel Corporation(英特尔公司);Stanford University(斯坦福大学);California Institute of Technology(加州理工学院)
SyclKittens是一种面向Intel GPU的硬件感知瓦片编程模型,通过编码已知高效方法,使编码代理能将核函数性能从57.5%提升至82.1%,并构建达到oneDNN约96%性能的核函数套件。
2026-10-06 cs.DC
Improving the performance of the linear systems solvers using CUDA
并行计算可以为几乎任何领域的大型应用程序提供巨大的性能优势:科学计算、计算机视觉、数据库、数据采掘和经济学。GPU是高性能众核处理器,可以获得非常高的FLOP速率。自从第一个使用GPU进行通用计算的想法以来,事情已经发展,现在有几种GPU编程方法:NVIDIA的CUDA和AMD的Stream。CUDA现在是C/C++程序员在GPU上进行通用计算的流行编程模型。大量应用程序被移植到CUDA编程模型,与优化的CPU实现相比,它们获得了数量级的加速提升。在本文中,我们提出了一个实现的图书馆解决线性系统使用CCUDA框架。我们提出的性能测试结果表明,使用GPU可以获得约80倍的CPU实现相比,加速比。
2015-11-23 cs.DC
Open SYCL on heterogeneous GPU systems: A case of study
本研究评估Open SYCL在异构多GPU系统上的性能与开发效率,以有限时间李雅普诺夫指数计算为例,发现其开销低且开发工作量小于CUDA/HIP,并能轻松同时利用不同供应商的GPU。
2023-10-10 cs.DC
A Hybrid Multi-GPU Implementation of Simplex Algorithm with CPU Collaboration
单纯形算法已成功地用于求解线性规划问题多年。由于所需的密集计算(特别是对于大型LP问题的解决方案),并行方法也得到了广泛的研究。现代GPU提供的计算能力以及多核CPU系统的快速发展,使OpenMP和CUDA编程模型在过去几年中成为首选。然而,通过结合使用上述编程模型,CPU和GPU之间所需的高效协作仍然被认为是一个很难的研究问题。在上述背景下,我们在这里展示了标准单工的高效实现,目标是在具有多个支持CUDA的GPU的多核平台上最大限度地利用所有计算资源的并发使用。更具体地说,我们提出了一种新的混合协作方案,这是基于适当的分散CPU分配(通过多线程)和GPU卸载计算的并发执行。通过在一个非常强大的现代混合平台(由32个核心和两个高规格GPU组成,Titan Rtx和Rtx 2080 Ti)上合作使用OpenMP和CUDA提取的实验结果突出显示,这里提出的混合GPU/CPU协作方案的性能在几乎所有条件下都明显优于仅GPU实现。相应的测量验证了并发使用所有资源的价值,即使是在多GPU配置平台的情况下。此外,给定的实现与参考书目中的其他相关尝试完全相当(在大多数情况下略优于),并且明显优于具有32个内核的本机CPU实现。
2022-11-20 cs.DC
Taking GPU Programming Models to Task for Performance Portability
针对现有GPU编程模型无法保证性能可移植性的问题,本研究对比评估了7种主流GPU编程模型在NVIDIA和AMD GPU上的性能,提出基于Spack脚本的可复现实验方法,并分析性能差异原因、给出部分优化方案。
2025-09-04 cs.DC cs.PF
A Variant of Concurrent Constraint Programming on GPU
Interdisciplinary Centre for Security, Reliability and Trust (SnT)(安全、可靠性与信任跨学科中心(SnT));University of Luxembourg(卢森堡大学)
如今,图形计算单元(GPU)上的核心数量达到数千个,而处理器的时钟速度停滞不前。不幸的是,约束编程求解器还没有利用GPU并行性。一个原因是约束求解器主要是在顺序计算的心理框架内设计的。为了解决这个问题,我们退一步,并有助于一个简单的,本质上是并行的,无锁和形式上正确的程序设计语言的基础上并发约束编程。然后,我们重新审视并行约束求解的GPU在这种形式主义,并开发涡轮,一个简单的约束求解器完全在GPU上编程。Turbo验证了我们的方法的正确性,并积极比较基于CPU的并行求解器。
2022-07-18 cs.AI cs.DC cs.PL
TensorFlow Enabled Genetic Programming
遗传编程是一种演化计算和机器学习算法,在CPU和GPU架构上应用矢量化数据和TensorFlow数值计算库,可以显著受益。开源Python Karoo GP用于6个平台上的190个测试,真实世界的数据集范围从1800万到550万个数据点。这些测试表明,当从标量/SymPy配置迁移到矢量/TensorFlow配置时,以数十个和数百个数据点测量的数据集可以获得2- 15倍的改进,其中单个核心的性能与多个CPU核心和GPU相当或更好。由90,000个数据点组成的数据集显示,单个向量/TensorFlow CPU内核的性能比40个标量/Sympy CPU内核高875倍。包含550万个数据点的数据集显示,GPU配置的性能平均是CPU配置的1.3倍。
2017-08-10 cs.DC
Many Cores, Many Models: GPU Programming Model vs. Vendor Compatibility Overview
针对当前HPC领域多厂商GPU、多编程模型并存且支持情况复杂的问题,本文梳理了三大厂商GPU与各编程模型的适配关系,以表格和注释呈现并评估支持程度,为科研程序员提供参考指南。
2023-10-04 cs.DC cs.PL
GPU-based parallelism for ASP-solving
Università di Udine(乌迪内大学);Università di Perugia(佩鲁贾大学);Libera Università di Bolzano(波尔扎诺自由大学)
答案集编程(ASP)已成为逻辑编程和非单调推理领域的首选范式。由于有效的求解器的可用性,ASP已成功地应用于大量的应用领域。术语GPU计算表示旨在使现代并行图形处理单元(GPU)用于通用计算的最近编程范例。在本文中,我们描述了一种利用GPU并行性解决ASP问题的方法。基于GPU的求解器的设计提出了各种挑战,由于GPU的软件和硬件架构的特殊性和可满足性问题的内在性质。
2019-09-04 cs.AI cs.DC
Iris: First-Class Multi-GPU Programming Experience in Triton
Advanced Micro Devices, Inc.
针对多GPU编程中性能与可编程性难以兼顾的问题,提出基于Python和Triton实现的通信库Iris,通过适配Triton模型的tile对称内存抽象简化开发,性能可媲美甚至超越RCCL等优化库。
2025-11-16 cs.DC cs.LG
GPU Programming - Speeding Up the 3D Surface Generator VESTA
新颖的“体积包围表面提取算法”(VESTA)从计算机断层摄影体积图像和/或三维(3D)模拟数据生成三角形等值面。在这里,我们提出了VESTA和当前最先进的Marching Cubes算法(MCA)的基于GPU的代码实现的各种基准。这项研究的一个主要结果是VESTA运行速度明显快于MCA。
2015-01-26 cs.CG cs.DC cs.GR
Efficient and Scalable Graph Pattern Mining on GPUs
图模式挖掘(GPM)通过搜索感兴趣的小模式来提取大型图中的高阶信息。GPM应用在计算上是昂贵的,因此对于GPU加速是有吸引力的。不幸的是,由于GPM算法和并行硬件的复杂性,手动优化GPM应用程序遭受编程复杂性,而现有的GPM框架牺牲效率的可编程性。此外,在GPU上几乎没有做过将GPM计算扩展到大问题大小的工作。我们描述了G2Miner,第一个在多个GPU上运行的图形模式挖掘(GPM)框架。G2Miner使用模式感知、输入感知和架构感知的搜索策略来在GPU上实现高效率。为了简化编程,它提供了一个代码生成器,可以自动生成模式感知的CUDA代码。G2Miner灵活地支持广度优先搜索(BFS)和深度优先搜索(DFS),以最大限度地提高内存利用率并为GPU生成足够的并行度。为了提高G2Miner的可扩展性,我们使用自定义的调度策略来平衡多个GPU之间的工作。在V100 GPU上的实验表明,G2Miner在两个最先进的单GPU系统Pangolin和PBE上分别实现了5.4倍和7.2倍的平均加速比。在多GPU设置中,G2Miner实现了从1到8个GPU的线性加速,适用于各种模式和数据图。我们还表明,在V100 GPU上的G2Miner比在56核CPU机器上的最先进的基于CPU的系统Peregrine和GraphZero快48.3倍和15.2倍。
2022-07-27 cs.DC
Zorua: Enhancing Programming Ease, Portability, and Performance in GPUs by Decoupling Programming Models from Resource Management
应用程序资源规范--线程数量和每个线程块的暂存器内存使用率等几个参数的静态规范--形成了现有GPU编程模型的关键组成部分。此规范决定了应用程序在执行期间的性能,因为相应的片上硬件资源完全基于此规范进行分配和管理。软件提供的资源规范和硬件资源管理之间的这种紧密耦合导致编程的易用性,可移植性和性能的重大挑战,因为我们在这项工作中证明。我们在这项工作中的目标是减少软件提供的资源规范的性能的依赖,同时减轻上述挑战。为此,我们介绍了Zorua,一个新的资源虚拟化框架,它将程序员指定的GPU应用程序的资源使用从片上硬件资源的实际分配中分离出来。Zorua通过对程序员透明地虚拟化每个资源来实现这种解耦。我们证明,通过提供更多的资源比物理可用的错觉,Zorua提供了几个重要的好处:(一)编程容易:Zorua减轻了程序员的负担,提供的代码是调整,以有效地利用物理可用的片上资源。(ii)可移植性:Zorua强调了在跨GPU代移植应用程序时重新调整应用程序资源使用的必要性。(iii)性能表现:通过动态分配资源并在必要时仔细超额订阅,Zorua提高或保持了已经高度调整以最佳利用资源的应用程序的性能。Zorua提供的整体虚拟化还有许多其他潜在用途,我们将在本文中介绍。
2018-02-07 cs.AR cs.DC
MPIX Stream: An Explicit Solution to Hybrid MPI+X Programming
混合MPI+X编程范式,其中X指的是线程或GPU,在高性能计算领域获得了突出地位。这与系统架构变得更加异构的趋势相对应。当前的MPI标准只指定了MPI和线程运行时之间的兼容性级别。应用程序不存在MPI概念或接口来显式地将线程上下文或GPU流上下文传递给MPI实现。这种缺乏使得性能优化在某些情况下变得复杂,在其他情况下变得不可能。我们在MPI中提出了一个新的概念,称为MPIX流,来表示X运行时中存在的一般串行执行上下文。MPIX流可以直接映射到线程或GPU执行流。将线程上下文传递到MPI允许实现将执行上下文精确地映射到网络端点。将GPU执行上下文传递到MPI允许实现直接对GPU流进行操作,从而降低CPU/GPU同步成本。
2022-08-30 cs.DC cs.PF
Demystifying NVSHMEM: A System-Level Analysis on Symmetric Memory and Device-Initiated Operations in GPU Communication
ETH Zürich(苏黎世联邦理工学院);NVIDIA Corporation(英伟达公司)
本文系统分析了NVSHMEM的编程模型、实现和性能特征,聚焦对称内存、单边操作和设备端集合通信,并通过DeepEP案例研究展示了其在性能关键的稀疏深度学习工作负载中的应用,揭示了其作为系统构建块的作用和设计权衡。
2026-06-04 cs.DC
Leveraging GPU batching for scalable nonlinear programming through massive Lagrangian decomposition
我们提出了一个信赖域牛顿算法ExaTron的实现有界约束非线性规划问题,完全运行在多个GPU上。在CPU和GPU之间没有数据传输的情况下,我们的实现在内存受限的情况下消除了一个主要的性能瓶颈,特别是在批量解决许多小问题时。我们讨论了我们的核函数和核心操作的设计原则和实现细节。不同的设计选择是合理的数值实验。通过使用分布式控制的交流最优潮流,其中一个大的问题被分解成许多较小的非线性程序,使用拉格朗日方法的应用程序,我们证明了ExaTron的计算性能的首脑会议超级计算机在橡树岭国家实验室。我们的数值计算结果显示,相对于批量大小和GPU的数量和超过35倍的加速比在一个节点上的40个CPU上的6个GPU的线性缩放。
2021-06-28 cs.DC cs.MS math.OC
Modular GPU Programming with Typed Perspectives
Massachusetts Institute of Technology(麻省理工学院);University of Pennsylvania(宾夕法尼亚大学)
针对GPU编程中线程级控制与集体操作协同的冲突导致模块化代码易出错的问题,提出带类型化视角的GPU语言Prism,可在不损失性能的前提下保障模块化编程的安全性。
2025-11-14 cs.DC cs.PL
GigaAPI for GPU Parallelization
GigaAPI是一个简化多GPU编程的用户空间API,通过抽象底层CUDA和C++复杂性提供全面功能,实验证明其能提升并行计算效率,推动GPU计算的普及。
2025-04-02 cs.AR cs.DC cs.PF
Experimenting with Constraint Programming on GPU
New Mexico State University(新墨西哥州立大学)
我的博士论文的重点是探索并行方法来有效地解决由约束建模的问题,并提出了一个新的建议。当前的求解器非常先进;它们经过精心设计,可以有效地管理高级问题的描述,并包含精细的策略以避免无用的工作。尽管如此,找到解决方案可能需要不可接受的时间。当建模的问题实例很大时,并行化可以减轻这个问题,因为它发生在现实世界的问题中。它是通过并行传播约束并同时探索搜索空间的不同部分来完成的。我正在开发一个约束求解器,它利用图形处理器(GPU)上的许多内核来加快搜索速度。
2019-09-19 cs.AI cs.DC
A Review of CUDA, MapReduce, and Pthreads Parallel Computing Models
高性能计算(HPC)和图形处理单元(GPU)的出现为需要并行处理以进行鲁棒和及时的数据分析的大数据事务(大数据)提供了巨大的计算资源。虽然已经提出了许多HPC框架,但并行编程模型提出了许多挑战,例如,如何充分利用不同编程模型中的功能,通过CPU和GPU中的多线程来实现和管理并行性。在本文中,我们将概述三种并行编程模型,CUDA,MapReduce和Pthreads。目标是探索有关该主题的文献,并提供编程模型中呈现的功能的高级视图,以帮助高性能用户简明地理解并行编程概念,从而使用高性能计算更快地实现大数据项目。
2014-10-16 cs.DC
OpenCL Actors - Adding Data Parallelism to Actor-based Programming with CAF
Actor计算模型是为无缝支持并发和分布而设计的。然而,它仍然不具体的数据并行程序流,而现代的许多核心硬件,如图形处理单元(GPU)或协处理器的可用处理能力增加了通用计算的数据并行的相关性。在这项工作中,我们介绍了OpenCL启用的演员的C++演员框架(CAF)。这为访问任何OpenCL设备提供了一个高级接口,而无需离开Actor范例。这种新型的Actor被集成到CAF的运行时环境中,并在异构硬件上的分布式系统中产生透明的消息传递。遵循CAF中的actor逻辑,OpenCL内核可以在封装在C++ actor中的同时进行组合,因此可以以多级方式对驻留在GPU上的数据进行操作。因此,开发人员能够从原语构建复杂的数据并行程序,而无需离开Actor范式,也不会牺牲性能。我们对商用GPU、Nvidia TESLA和Intel PHI的评估显示,在卸载较大工作负载时,预期的线性扩展行为。对于亚秒级负载,发现卸载效率在设备之间存在很大差异。此外,我们的研究结果表明,使用本机OpenCL API编程的开销可以忽略不计。
2017-09-22 cs.DC
DynaSOAr: Accelerating Single-Method Multiple-Objects Applications on GPUs
面向对象编程(OOP)长期以来一直被认为对于SIMD高性能计算来说效率太低,尽管许多重要的HPC应用程序都具有固有的对象结构。我们发现了OOP的一个广泛的子集,可以在大规模并行SIMD加速器上有效地实现。我们称之为单方法多对象(SMMO),因为并行性是通过在一种类型的所有对象上运行一个方法来表达的。为了让GPU编程经验不足的领域专家能够快速编程,我们开发了DynaSOAr,这是一个用于SMMO应用程序的CUDA框架。DynaSOAr通过SOA数据布局提高了已分配内存的使用率,并通过无锁分层位图有效管理空闲和已分配内存块来实现低内存碎片。
2019-05-29 cs.DC cs.PL
C Language Extensions for Hybrid CPU/GPU Programming with StarPU
用于高性能计算(HPC)的现代平台包括具有通用CPU和“加速器”(通常以图形处理单元(GPU)的形式)的机器。StarPU是一个利用此类平台的C库。它为用户提供了定义要在CPU或GPU上执行的“任务”的方法,以及它们之间的依赖关系,并通过在所有可用的处理单元上自动调度它们。这样,它还使程序员不必了解底层架构细节:它可以适应可用的CPU和GPU,并根据需要自动在主内存和GPU之间传输数据。虽然StarPU的方法成功地解决了运行时调度问题,但作为一个C库,它的编程接口很差,而且容易出错。本文介绍了2011年开始的一项努力,通过扩展GCC编译器套件,将库导出的一些概念作为C语言结构进行推广。我们的主要贡献是映射到StarPU的任务编程范式的语言扩展的设计和实现。我们认为,所提出的扩展使StarPU更容易入门,消除了使用C库时可能发生的错误,并帮助诊断可能的错误。我们就今后的工作作出结论。
2013-04-10 cs.CE cs.DC cs.MS
Interconnect Bandwidth Heterogeneity on AMD MI250x and Infinity Fabric
对GPU之间低延迟和高带宽数据传输的需求推动了多GPU节点的发展。对此类系统的制造和集成的物理约束已经产生了异构节点内互连,其中并非所有设备都被平等地连接。下一代超级计算平台预计将采用AMD CPU和GPU。这项工作描述了通过具有四个AMD MI250 x GPU的系统上的GPU编程API可见互连异构性的程度,并为此类系统的用户提供了一些见解。
2023-02-28 cs.DC
Heterogeneous Programming with Single Operation Multiple Data
异构在当今的商品计算系统中无处不在,其包括至少一个多核中央处理单元(CPU)和一个图形处理单元(GPU)。尽管如此,所有这些计算能力都没有在主流计算中得到利用,因为这些系统的编程需要底层架构及其不同执行模型的许多细节。目前并行编程的研究正在解决这些问题,但系统的异构性仍然暴露在语言级别。本文提出了一个统一的框架,基于单操作多数据模型,这样的异构系统的编程。该模型是声明性的,使编译器能够从同一源代码为多个架构生成代码。为此,我们设计了Java程序设计语言的一个简单扩展来体现该模型,并开发了一个编译器来为多核CPU和GPU生成代码。一个性能评估证明了该方法的有效性,尽管是基于一个简单的编程模型,是能够提供与手动调优的数据并行多线程Java应用程序的性能增益。
2014-02-15 cs.DC
Distributed Linear Programming on GPU Clusters at Extreme Scale
SHARDLP是一种分布式GPU线性规划求解器,通过全流程分区和通信优化,在极端规模下显著提升求解效率,并在基准测试中大幅超越现有CPU方法。
2026-11-10 cs.DC math.OC
A Performance Study of the 2D Ising Model on GPUs
二维伊辛模型的模拟被用作基准,以显示图形处理单元(GPU)的计算能力。GPU上现在提供的丰富编程环境和灵活的硬件功能使我们能够快速试验几种实现思路:一种简单的基于模板的算法,将模板操作重新转换为矩阵乘法,以利用NVIDIA GPU上提供的Tensor Core,以及高度优化的多自旋编码方法。使用CUDA中提供的托管内存API,可以在多GPU NVIDIA DGX-2服务器上简单高效地分发这些实现。我们表明,即使是一个基本的GPU实现可以优于目前的结果发表在TPU和优化的多GPU实现可以模拟非常大的晶格比自定义FPGA解决方案更快。
2019-06-14 cs.DC
Executing Dynamic Data Rate Actor Networks on OpenCL Platforms
由通用处理器(GPP)和图形处理单元(GPU)组成的异构计算平台在个人移动设备和嵌入式系统中已经变得司空见惯。多年来,这些平台的编程非常繁琐,同时使用所有可用的GPP和GPU资源需要低级编程,以确保处理器之间的高效同步和数据传输。然而,在过去的几年里,出现了一些高级编程框架,这些框架使程序员能够通过抽象的方式来描述应用程序,例如Kahn进程网络,并将并行执行,数据传输和同步交给框架处理。不幸的是,即使是最先进的高级编程框架也有缺点,限制了它们对某些应用程序的适用性。本文提出了一种新的,香喷喷的编程框架,针对异构平台,并从以前的方法不同,允许GPU映射的演员有数据依赖消费的输入/生产的输出。这种灵活性对于信号处理中日益常见的可配置和自适应应用至关重要。在我们的实验中,它表明,该功能允许高达5倍的应用程序吞吐量的增加。该框架通过视频处理和无线通信领域的应用实例进行了验证。在实验中的框架相比,一个众所周知的参考框架,它表明,所提出的框架,使更高程度的灵活性和更好的吞吐量。
2016-11-10 cs.DC