Choice of Parallelism: Multi-GPU Driven Pipeline for Huge Academic Backbone Network
科学信息网(SINET)是日本800多个研究机构和大学的学术骨干网络。在本文中,我们提出了一个多GPU驱动的流水线处理SINET的巨大的会话数据。我们的管道包括ELK堆栈,多GPU服务器和Splunk。多GPU服务器负责两个过程:判别和直方图。区分是通过子网掩码计算和网络地址匹配将会话数据划分为传入/传出。直方图是指使用map-reduce将传入/传出会话数据分组到bin中。在我们的架构中,我们使用GPU来加速会话数据的入口/出口区分。此外,我们使用平铺设计模式来构建CPU和GPU的两阶段映射缩减。我们的多GPU驱动的流水线已经成功地在24小时内处理了大约12亿到16亿个会话流(500 GB-650 GB)的巨大工作负载。
2021-06-24 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
PPipe: Efficient Video Analytics Serving on Heterogeneous GPU Clusters via Pool-Based Pipeline Parallelism
本文提出 PPipe 推理服务系统,利用基于池的流水线并行、MILP 控制平面和自适应批处理,在异构 GPU 集群上提升视频分析推理吞吐量与低端 GPU 利用率。
2025-07-24 cs.DC
A Programming Model for GPU Load Balancing
我们提出了一个GPU细粒度的负载平衡抽象,从工作处理中提取负载均衡,旨在支持静态和动态调度,并通过可编程接口实现新的负载平衡调度。在我们的工作之前,释放GPU在不规则问题上的潜力的唯一方法是通过特定于应用程序的紧耦合负载平衡技术来实现工作负载平衡。通过我们的开源负载平衡框架,我们希望在GPU上开发不规则并行算法时提高程序员的生产力,并通过允许快速试验各种现有负载平衡技术来提高此类应用程序的整体性能特征。因此,我们也希望通过在我们的抽象中将负载平衡的关注点从工作处理中分离出来,管理现有代码并将其扩展到未来的架构中变得更加容易。
2023-01-12 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
Pipeflow: An Efficient Task-Parallel Pipeline Programming Framework using Modern C++
流水线是一种基本的并行编程模式。主流流水线编程框架依靠数据抽象来执行流水线调度。这种设计对于以数据为中心的流水线应用是方便的,但对于只利用流水线中任务并行性的算法是低效的。因此,我们引入了一个新的任务并行流水线编程框架称为Pipeflow。Pipeflow并没有设计另一个数据抽象,而是专注于流水线调度本身,使任务并行流水线算法的实现比现有的框架更有效。我们已经在微基准测试和实际应用中评估了Pipeflow。例如,Pipeflow在采用流水线并行来加快运行时间的VLSI布局和时序分析工作负载中,分别比oneTBB快24%和10%。
2022-02-01 cs.DC
A Study of Performance Programming of CPU, GPU accelerated Computers and SIMD Architecture
该研究梳理CPU、GPU、SIMD三类并行计算实现方式及现有研究瓶颈,汇总并行编程技术资料,呈现其现状与趋势,为后续研究提供背景支撑。
2024-09-16 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
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
本文探讨使用 C++26 Senders 模型在密集 GPU 系统上开发匿名网络感知图挑战,该方法将 GPU 视为一等资源,在 8 个 NVIDIA A100 上相比串行 GraphBLAS 基线实现高达 55 倍性能提升。
2025-10-15 cs.DC
Efficient executions of Pipelined Conjugate Gradient Method on Heterogeneous Architectures
预条件共轭梯度法(PCG)被广泛用于求解具有稀疏矩阵的线性方程组。PCG的最新版本,流水线PCG,消除了PCG算法的计算中的依赖性,使得非依赖性计算可以与通信重叠。在本文中,我们提出了三种方法,有效地执行流水线PCG算法的GPU加速异构体系结构。前两种方法通过在CPU内核和GPU上异步执行不同的任务来实现任务并行。第三种方法通过基于性能模型的CPU和GPU之间的工作负载分解来实现数据并行。性能模型考虑了CPU核心和GPU的相对性能,使用一些初始执行并执行2D数据分解。我们还实现了优化策略,如GPU的内核融合和CPU的合并向量操作。我们的方法给出了高达8倍的加速比和平均3倍加速比PCG CPU实现的Paralution和PETSc库。他们还提供了高达5倍的加速比,平均1.45倍的加速比PCG GPU实现的Paralution和PETSc库。第三种方法还提供了一种有效的解决方案,用于解决无法适应GPU内存的问题,并为此类问题提供高达2.5倍的加速。
2021-05-13 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
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
SiPipe: Bridging the CPU-GPU Utilization Gap for Efficient Pipeline-Parallel LLM Inference
针对流水线并行 LLM 推理中的执行气泡问题,提出异构流水线设计 SiPipe,利用 CPU 资源卸载辅助计算与通信,显著提升吞吐量并降低延迟。
2025-06-27 cs.DC
GPU-Accelerated Primal Heuristics for Mixed Integer Programming
本研究提出融合GPU加速的混合整数规划原始启发式算法,通过GPU加速PDLP求解器、新增探测缓存并优化多种前沿启发式算法,在MIPLIB2017基准上显著提升了可行解数量与目标质量。
2025-10-30 cs.DC math.OC
Contract-Based General-Purpose GPU Programming
使用GPU作为通用处理器,通过为大量且不断增长的算法集提供台式机上的大规模数据并行化,彻底改变了并行计算。然而,广泛采用的一个障碍是编程的困难和实现良好性能所需的硬件的低级控制。本文提出了一个编程库,SafeGPU,旨在达到程序员的生产力和性能之间的平衡,使GPU的数据并行操作可从一个经典的面向对象的程序设计语言。该解决方案与合同设计方法相结合,通过将可执行程序规范嵌入到程序文本中,提高了对功能程序正确性的信心。我们表明,我们的库导致模块化和维护代码,可访问GPGPU的非专家,同时提供的性能是与手写的CUDA代码。此外,运行时合约检查是可行的,因为合约可以在GPU上执行。
2015-08-21 cs.DC cs.SE
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
Heimdall++: Optimizing GPU Utilization and Pipeline Parallelism for Efficient Single-Pulse Detection
Heimdall++通过优化GPU利用率和流水线并行,提升单脉冲检测效率,实现2.66倍单文件处理速度和2.05倍多文件批量处理速度。
2025-11-29 cs.DC
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
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
PipeFill: Using GPUs During Bubbles in Pipeline-parallel LLM Training
Carnegie Mellon University(卡内基梅隆大学);Amazon Web Services(亚马逊网络服务)
针对流水线并行大语言模型训练中流水线气泡导致GPU利用率低的问题,提出PipeFill方法,通过匹配气泡时长与内存、引入气泡指令等方式用待处理任务填补气泡,可大幅提升GPU利用率且对主训练任务影响极小。
2024-09-23 cs.DC cs.LG
Taking GPU Programming Models to Task for Performance Portability
针对现有GPU编程模型无法保证性能可移植性的问题,本研究对比评估了7种主流GPU编程模型在NVIDIA和AMD GPU上的性能,提出基于Spack脚本的可复现实验方法,并分析性能差异原因、给出部分优化方案。
2025-09-04 cs.DC cs.PF
Computing Treewidth on the GPU
我们提出了一种在GPU上计算图的树宽的并行算法。我们在OpenCL中实现了该算法,并对其性能进行了实验评估。我们的算法是基于一个$O^*(2^{n})$的时间算法,探讨消除排序的图形使用Held-Karp一样的动态规划方法。我们使用Bloom过滤器来检测重复的解决方案。GPU编程提出了独特的挑战和限制,例如对内存使用的限制以及限制分支发散的需要。我们尝试各种优化,看看是否有可能解决这些问题。与在CPU上运行相同的算法相比,我们实现了非常大的速度提升(高达$77\times$)。
2017-09-28 cs.DC
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
Many Cores, Many Models: GPU Programming Model vs. Vendor Compatibility Overview
针对当前HPC领域多厂商GPU、多编程模型并存且支持情况复杂的问题,本文梳理了三大厂商GPU与各编程模型的适配关系,以表格和注释呈现并评估支持程度,为科研程序员提供参考指南。
2023-10-04 cs.DC cs.PL
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
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
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
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
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
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
Zorse: Optimizing LLM Training Efficiency on Heterogeneous GPU Clusters
针对异构GPU集群上LLM训练的负载均衡与通信等挑战,提出首个统一非对称流水线并行与异构数据并行并配备自动规划器的Zorse系统,显著提升了异构训练效率。
2025-07-14 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
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
GigaAPI for GPU Parallelization
GigaAPI是一个简化多GPU编程的用户空间API,通过抽象底层CUDA和C++复杂性提供全面功能,实验证明其能提升并行计算效率,推动GPU计算的普及。
2025-04-02 cs.AR cs.DC cs.PF
Modular GPU Programming with Typed Perspectives
针对GPU编程中线程级控制与集体操作协同的冲突导致模块化代码易出错的问题,提出带类型化视角的GPU语言Prism,可在不损失性能的前提下保障模块化编程的安全性。
2025-11-14 cs.DC cs.PL
Experimenting with Constraint Programming on GPU
New Mexico State University(新墨西哥州立大学)
我的博士论文的重点是探索并行方法来有效地解决由约束建模的问题,并提出了一个新的建议。当前的求解器非常先进;它们经过精心设计,可以有效地管理高级问题的描述,并包含精细的策略以避免无用的工作。尽管如此,找到解决方案可能需要不可接受的时间。当建模的问题实例很大时,并行化可以减轻这个问题,因为它发生在现实世界的问题中。它是通过并行传播约束并同时探索搜索空间的不同部分来完成的。我正在开发一个约束求解器,它利用图形处理器(GPU)上的许多内核来加快搜索速度。
2019-09-19 cs.AI cs.DC
FlexPipe: Adapting Dynamic LLM Serving Through Inflight Pipeline Refactoring in Fragmented Serverless Clusters
Shenzhen Institutes of Advanced Technology, CAS(中国科学院深圳先进技术研究院);UCAS(中国科学院大学);UC San Diego(加州大学圣地亚哥分校);Nanyang Technological University(南洋理工大学);University of Macau(澳门大学)
FlexPipe通过动态重构管道架构,解决无服务器集群中资源碎片化和请求模式变化带来的效率问题,实现8.5倍资源利用率提升和38.3%的延迟降低。
2026-05-09 cs.DC
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
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
Distributed Linear Programming on GPU Clusters at Extreme Scale
SHARDLP是一种分布式GPU线性规划求解器,通过全流程分区和通信优化,在极端规模下显著提升求解效率,并在基准测试中大幅超越现有CPU方法。
2026-09-09 cs.DC math.OC
Scheduling Optimization Techniques for Neural Network Training
Hanyang University(汉阳大学)
神经网络训练需要大量的计算,因此GPU通常用于加速。本文提出了一种用于神经网络训练的有效调度技术--无序反向传播(ooo)。通过利用梯度计算的依赖性,ooo backprop可以重新排序它们的执行,以充分利用GPU资源。我们表明,在单GPU,数据并行,和流水线并行训练的GPU利用率可以通过应用ooo反向传播和优先级的关键操作,通常可以提高。我们提出了三种基于面向对象反向传播的调度算法。对于单GPU训练,我们使用多流乱序计算进行调度,以掩盖内核启动开销。在数据并行训练中,我们对梯度计算进行重新排序,以最大化计算和参数通信的重叠;在流水线并行训练中,我们用十二个神经网络来评估我们的优化,包括一个轻量级的计算机视觉模型(MobileNet)和大型NLP模型(BERT和GPT-3),最多48个V100 GPU。我们的调度算法有效地提高了单GPU训练以及数据和流水线的性能。与现有技术的训练系统的相应状态相比,对于单GPU、数据并行和流水线并行训练,吞吐量显著提高。
2021-10-03 cs.DC cs.LG
Breadth-First Pipeline Parallelism
ServiceNow Research(ServiceNow研究院)
本文提出广度优先流水线并行训练调度方法,通过结合高GPU利用率、小批量与全分片数据并行,在520亿参数模型上相比Megatron-LM实现最高43%的训练吞吐量提升。
2023-07-06 cs.AI cs.CL cs.DC
A Metaprogramming and Autotuning Framework for Deploying Deep Learning Applications
近年来,深度神经网络(DNN)在广泛的应用中取得了很好的效果。图形处理单元(GPU)是导致DNN当前流行的一个关键因素。然而,尽管硬件灵活性和软件编程工具链日益成熟,但高效率的GPU编程仍然很困难:它具有高复杂性、低生产力和低便携性的缺点。像NVIDIA这样的GPU供应商已经花费了大量的精力来编写专用DNN库。然而,在其他硬件目标上,特别是移动GPU,这样的供应商库通常不可用。因此,开发用于DNN操作的可移植、开放、高性能、高能效的GPU代码将使基于DNN的算法得到更广泛的部署。为此,这项工作提出了一个框架,以实现跨硬件平台和编程模型的DNN计算的高效GPU编程。特别是,该框架提供了对元编程、自动调优和DNN定制的数据类型的特定支持。使用我们的框架,我们探索在三个不同的硬件目标上实现DNN操作:NVIDIA,AMD和Qualcomm GPU。在NVIDIA GPU上,我们展示了OpenCL和CUDA之间的可移植性以及与供应商库相比的竞争性能。在Qualcomm GPU上,我们证明了我们的框架能够有效地开发特定于目标的优化,并实现合理的绝对性能。最后,在AMD GPU上,我们展示了初步结果,表明我们的框架可以在新平台上以最小的努力产生合理的性能。
2016-11-21 cs.DC cs.MS cs.NE
Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM
NVIDIA(英伟达);Stanford University(斯坦福大学);Microsoft Research(微软研究院)
大语言模型在一系列任务中实现了最先进的准确性。然而,由于两个原因,有效地训练这些模型是具有挑战性的:a)GPU内存容量有限,使得即使在多GPU服务器上也无法适应大型模型,以及b)训练这些模型所需的计算操作数量可能导致不切实际的长训练时间。因此,新的模型并行方法如张量和流水线并行被提出。不幸的是,这些方法的天真使用导致数千个GPU的基本缩放问题,例如,这是由于昂贵的跨节点通信或设备花费大量时间等待其他设备来取得进展。在本文中,我们将展示如何组合不同类型的并行方法(张量,管道和数据并行),以扩展到数千个GPU和具有数万亿参数的模型。我们调查技术的流水线并行,并提出了一种新的交错流水线并行计划,可以提高吞吐量的10+%的内存占用与现有的方法。我们定量地研究了张量、管道和数据并行之间的权衡,并提供了如何配置大型模型的分布式训练的直观性。我们的方法允许我们在3072个GPU上以502 petaFLOP/s的速度对具有1万亿个参数的模型执行训练迭代,实现了理论峰值的52%的每GPU吞吐量。我们的代码在https://github.com/nvidia/megatron-lm上开源。
2021-08-23 cs.CL cs.DC