MapReduce for Counting Word Frequencies with MPI and GPUs
在这个项目中,目标是使用Julia程序设计语言和并行化来编写一个快速的map reduce算法,以计算大量文档中的词频。我们首先在一个CPU上使用MPI的两个进程实现词频计数器算法。然后,我们创建另一个实现,但在GPU上使用Julia CUDA库,但不使用FoldsCUDA.jl中的内置map reduce算法。在这样做之后,我们应用我们的CPU和GPU算法来计算乔治·W·布什、巴拉克·H·奥巴马、唐纳德·J·特朗普和约瑟夫·R·拜登总统演讲中的单词频率,目的是找到可以用来唯一识别每一位总统的单词选择模式。我们发现,每一位总统都有一些词,他们使用的频率明显高于其他总统,考虑到当时的政治气候,这些词并不奇怪。这个项目的目标是在CPU和GPU上的Julia中创建比以前编写的更快的MapReduce算法。我们提出了一些简单的情况下,映射函数,我们的GPU算法优于朱莉娅的FoldsCUDA实现。我们还讨论了在计算文档中的词频和这些特定映射函数的情况下进一步优化的想法。
2022-05-21 cs.DC
High-performance xPU Stencil Computations in Julia
我们提出了一种高效的方法,用于在Julia中编写与架构无关的并行高性能模板计算,该方法在包中实例化。强大的元编程、低成本的抽象和多分派功能使您能够编写单个代码,既适合在单个CPU线程上进行生产性原型设计,又适合在多GPU或CPU工作站或超级计算机上进行生产运行。我们展示了接近GPU上的3-D热扩散求解器的理论上限的性能,这是一个巨大的改进与CUDA.jl数组编程的可达性能。
2022-11-28 cs.DC physics.comp-ph physics.geo-ph
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
Parareal Algorithm Implementation and Simulation in Julia
The University of Texas at Austin(德克萨斯大学奥斯汀分校);University of Dayton(代顿大学)
本文介绍了在Julia中实现并行算法的方法,该算法用于并行求解微分方程。研究采用Euler方法和Runge-Kutta方法作为积分器,并通过模拟探讨算法性能。
2018-12-13 cs.DC cs.MS cs.NA
Many Cores, Many Models: GPU Programming Model vs. Vendor Compatibility Overview
针对当前HPC领域多厂商GPU、多编程模型并存且支持情况复杂的问题,本文梳理了三大厂商GPU与各编程模型的适配关系,以表格和注释呈现并评估支持程度,为科研程序员提供参考指南。
2023-10-04 cs.DC cs.PL
Extrae.jl: Julia bindings for the Extrae HPC Profiler
针对Julia需集成高性能分析工具以优化性能的需求,提出Extrae.jl包,实现Julia与Extrae HPC分析器的对接,助力挖掘Julia代码性能潜力。
2025-04-16 cs.DC cs.PF
Modular GPU Programming with Typed Perspectives
针对GPU编程中线程级控制与集体操作协同的冲突导致模块化代码易出错的问题,提出带类型化视角的GPU语言Prism,可在不损失性能的前提下保障模块化编程的安全性。
2025-11-14 cs.DC cs.PL
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
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
A Look at Communication-Intensive Performance in Julia
Julia程序设计语言因其潜在的程序员生产力和在科学代码上令人印象深刻的性能而继续受到欢迎。因此,它具有大规模HPC的潜力,但我们尚未看到这种潜力完全实现。虽然Julia确实拥有大规模运行的机器,而其他人也已经为非常并行的工作负载这样做了,但我们还没有看到Julia在HPC领域中非常常见的通信密集型代码上的性能分析。在本文中,我们调查朱莉娅的性能在这方面,首先与一套微基准内,没有节点,然后使用第一个朱莉娅端口的标准,HPC基准代码,高性能共轭梯度(HPCG)。我们表明,如果程序员适当平衡的计算通信比,朱莉娅实际上可以在集群计算环境中优于C/MPI。
2021-09-28 cs.DC cs.PF
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
EBIC.JL -- an Efficient Implementation of Evolutionary Biclustering Algorithm in Julia
AGH University of Science and Technology(AGH科技大学);University of Pennsylvania(宾夕法尼亚大学)
双聚类是一种在表格数据中寻找局部模式的数据采掘技术,主要应用于生物信息学。该技术在多个领域显示出前景,包括开发癌症生物标志物、疾病亚型鉴定或基因-药物相互作用等。在本文中,我们介绍EBIC.JL -Julia,一个现代的高度并行化的程序设计语言的数据科学中最准确的双聚类算法之一的实现。我们表明,新版本保持相当的准确性,其前身EBIC,同时收敛速度更快的大多数问题。我们希望,这一采用高级程序设计语言的开源软件将促进生物信息学这一有前途领域的研究,并加快开发新的大数据双聚类方法。
2021-05-03 cs.AI cs.DC cs.LG
Lightning: Scaling the GPU Programming Model Beyond a Single GPU
GPU编程模型主要针对运行一个GPU的应用程序的开发。然而,这将GPU代码的可扩展性限制在单个GPU在计算能力和内存容量方面的能力。为了进一步扩展GPU应用程序,通常需要大量的工程工作:工作和数据必须手动分配到多个GPU上,可能在多个节点上,数据必须手动从GPU内存溢出到更高级别的内存。我们介绍Lightning:一个遵循常见GPU编程范式的框架,但可以轻松扩展到大型问题。Lightning支持GPU内核的多GPU执行,甚至跨多个节点,并将数据无缝溢出到更高级别的内存(主内存和磁盘)。现有的CUDA内核可以很容易地适应Lightning,这些内核上的数据访问注释允许Lightning推断其数据需求和后续内核启动之间的依赖关系。Lightning在GPU之间有效地分配工作/数据,并通过重叠调度,数据移动和内核执行来最大限度地提高效率。我们介绍了Lightning的设计和实现,以及在多达32个GPU上进行8个基准测试和1个实际应用的实验结果。评估显示了出色的性能和可扩展性,例如使用Lighting的CPU加速57.2倍,16个GPU,4个节点和80 GB的数据,远远超过一个GPU的内存容量。
2022-03-02 cs.DC
Faster GPU Based Genetic Programming Using A Two Dimensional Stack
遗传编程(GP)是一种计算密集型技术,同时具有高度的自然并行性。并行计算架构已经变得司空见惯,特别是关于图形处理单元(GPU)。因此,已经实现了利用这些高度并行的计算平台的GP版本,使得能够实现GP的计算速度的显著增益。然而,最近使用多核CPU的GP的二维的堆栈方法也表现出相当大的性能增益。事实上,性能相当于或超过了GPU实现的。本文将证明,类似的二维的堆栈方法也可以应用于基于GPU的方法,以更好地利用底层技术。当利用GPU时,性能增益超过标准的一维堆栈方法。总体而言,观察到每秒超过550亿次遗传编程操作的峰值计算速度,比文献中最好的基于GPU的一维堆栈方法提高了两倍。
2016-01-02 cs.DC
Concurrent CPU-GPU Task Programming using Modern C++
在本文中,我们介绍了Heteroflow,一个新的C++库,以帮助开发人员使用任务依赖图快速编写并行CPU-GPU程序。Heteroflow利用了现代C++和基于任务的方法的强大功能来实现异构分解策略的高效实现。我们新的CPU-GPU编程模型允许用户以一种适应有效分离关注点和专业知识封装的方式来表达问题。与现有库相比,Heteroflow在性能扩展、编程效率和解决方案通用性方面更具成本效益。我们已经在VLSI设计自动化的两个实际应用中评估了Heteroflow,并展示了不同CPU-GPU数量和问题大小的性能可扩展性。在百万级任务处理的超大规模集成电路时序分析的一个特定示例中,Heteroflow在具有40个CPU核心和4个GPU的机器上实现了比基线高出7.7倍的运行时速度(99分钟vs 13分钟)。
2022-03-16 cs.DC
GPU Programming for AI Workflow Development on AWS SageMaker: An Instructional Approach
本文介绍一门面向本研学生的GPU编程与AI开发课程,通过AWS平台进行云端GPU配置与RAG优化实践,结果表明该体验式教学有效提升了学生的技术能力与问题解决能力。
2025-09-17 cs.DC
Decoupling GPU Programming Models from Resource Management for Enhanced Programming Ease, Portability, and Performance
应用程序资源规范--一个静态的参数规范,如线程数量和每个线程块的暂存器内存使用量--形成了现代GPU编程模型的关键组成部分。该规范确定了应用程序在执行期间的并行性,从而确定了应用程序的性能,因为相应的片上硬件资源是基于该规范分配和管理的。软件提供的资源规范和硬件中的资源管理之间的这种紧密耦合导致了编程简易性、可移植性和性能方面的重大挑战。Zorua是一个新的资源虚拟化框架,它将程序员指定的GPU应用程序的资源使用与片上硬件资源的实际分配相结合。Zorua通过对程序员透明地虚拟化每个资源来实现这种解耦。我们证明,通过提供更多的资源比物理上可用的通过控制和协调的虚拟化的错觉,Zorua提供了几个重要的好处:(一)编程容易。Zorua减轻了程序员的负担,提供了经过优化以有效利用物理可用的片上资源的代码。(ii)便携性。Zorua强调了在跨GPU代移植应用程序时重新调整应用程序资源使用的必要性。(iii)性能通过动态分配资源并在必要时仔细超额订阅,Zorua提高或保持了已经高度调整以最佳利用资源的应用程序的性能。
2018-05-02 cs.DC
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
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
本研究提出融合GPU加速的混合整数规划原始启发式算法,通过GPU加速PDLP求解器、新增探测缓存并优化多种前沿启发式算法,在MIPLIB2017基准上显著提升了可行解数量与目标质量。
2025-10-30 cs.DC math.OC
Two-Dimensional Batch Linear Programming on the GPU
本文提出了一种新的,高性能的,图形处理单元为基础的算法,有效地解决二维的【形】线性规划的批量。二维的【形】线性规划的域是特别有用的,由于相关的几何问题的流行。批处理线性规划是指在一个操作中解决许多不同的线性规划。通过同时求解多个线性程序并在线程间均匀分配工作负载,可以最大化图形处理单元的利用率。对最先进的图形处理单元和CPU线性程序求解器,分别获得超过22倍和63倍的加速比。
2019-02-13 cs.DC
Contract-Based General-Purpose GPU Programming
使用GPU作为通用处理器,通过为大量且不断增长的算法集提供台式机上的大规模数据并行化,彻底改变了并行计算。然而,广泛采用的一个障碍是编程的困难和实现良好性能所需的硬件的低级控制。本文提出了一个编程库,SafeGPU,旨在达到程序员的生产力和性能之间的平衡,使GPU的数据并行操作可从一个经典的面向对象的程序设计语言。该解决方案与合同设计方法相结合,通过将可执行程序规范嵌入到程序文本中,提高了对功能程序正确性的信心。我们表明,我们的库导致模块化和维护代码,可访问GPGPU的非专家,同时提供的性能是与手写的CUDA代码。此外,运行时合约检查是可行的,因为合约可以在GPU上执行。
2015-08-21 cs.DC cs.SE
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
Taking GPU Programming Models to Task for Performance Portability
针对现有GPU编程模型无法保证性能可移植性的问题,本研究对比评估了7种主流GPU编程模型在NVIDIA和AMD GPU上的性能,提出基于Spack脚本的可复现实验方法,并分析性能差异原因、给出部分优化方案。
2025-09-04 cs.DC cs.PF
Flexible Performant GEMM Kernels on GPUs
Georgia Institute of Technology(佐治亚理工学院);Twentieth Century Fox(二十世纪福克斯);Starfleet Academy(星际舰队学院)
通用矩阵乘法或GEMM内核在高性能计算和机器学习中占据中心位置。最近的NVIDIA GPU包括GEMM加速器,例如NVIDIA的Tensor Cores。它们的开发受到两种语言问题的阻碍:它要么需要低级编程,这意味着程序员的生产力很低,要么使用只提供有限组件集的库。因为根据已建立的组件来改写算法通常会引入开销,库缺乏灵活性限制了探索新算法的自由。因此,使用GEMM的研究人员无法同时享受编程效率、高性能和研究灵活性。在本文中,我们解决这个问题。我们提出了三套抽象和接口的科学朱莉娅程序设计语言内的程序GEMM。接口和抽象是针对研究人员的需求和Julia的功能共同设计的,以实现足够的关注点分离和灵活性,从而以多种不同的方式轻松扩展基本GEMM,而无需付出性能代价。将我们的GEMM与最先进的库cuBLAS和CUTLASS进行比较,我们证明了我们的性能与库相同,在某些情况下甚至超过了它,而无需在CUDA C++或汇编中编写一行代码,并且不会面临灵活性限制。
2021-11-22 cs.DC cs.LG cs.MS
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
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
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
A Study of Performance Programming of CPU, GPU accelerated Computers and SIMD Architecture
该研究梳理CPU、GPU、SIMD三类并行计算实现方式及现有研究瓶颈,汇总并行编程技术资料,呈现其现状与趋势,为后续研究提供背景支撑。
2024-09-16 cs.DC
GigaAPI for GPU Parallelization
GigaAPI是一个简化多GPU编程的用户空间API,通过抽象底层CUDA和C++复杂性提供全面功能,实验证明其能提升并行计算效率,推动GPU计算的普及。
2025-04-02 cs.AR cs.DC cs.PF
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
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
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
Benchmarking the Parallel 1D Heat Equation Solver in Chapel, Charm++, C++, HPX, Go, Julia, Python, Rust, Swift, and Java
本文在 Intel、AMD 和 ARM64FX 架构上基准测试十种语言实现的共享内存并行一维热扩散求解器,发现 C++、Rust、Chapel、Charm++ 和 HPX 性能领先。
2023-07-10 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
Experimenting with Constraint Programming on GPU
New Mexico State University(新墨西哥州立大学)
我的博士论文的重点是探索并行方法来有效地解决由约束建模的问题,并提出了一个新的建议。当前的求解器非常先进;它们经过精心设计,可以有效地管理高级问题的描述,并包含精细的策略以避免无用的工作。尽管如此,找到解决方案可能需要不可接受的时间。当建模的问题实例很大时,并行化可以减轻这个问题,因为它发生在现实世界的问题中。它是通过并行传播约束并同时探索搜索空间的不同部分来完成的。我正在开发一个约束求解器,它利用图形处理器(GPU)上的许多内核来加快搜索速度。
2019-09-19 cs.AI cs.DC
Massively parallel numerical simulations with Julia
University of Augsburg(奥格斯堡大学);University of Cologne(科隆大学);Johannes Gutenberg University Mainz(约翰内斯·古腾堡美因茨大学);RWTH Aachen University(亚琛工业大学);Universidad Politécnica de Madrid(马德里理工大学)
研究用 Julia 开发大规模并行 HPC 应用程序的适用性,通过分析 Julia 代码 Trixi.jl 的并行性能并与 Fortran 代码 FLUXO 比较,展示挑战与解决方案,最终演示其在多达 61440 个 CPU 核心上的并行扩展性。
2026-07-29 cs.DC cs.MS cs.NA
Bringing Together Dynamic Geometry Software and the Graphics Processing Unit
我们为动态几何软件(DGS)配备了一种用户友好的方法,可以在图形处理单元(GPU)上进行大规模并行计算。DGS和GPU的这种相互作用在教育和数学研究中开辟了各种应用。GPU辅助的数学属性发现,代数曲面的交互式可视化(光线投射),实时图像和镜头的数学变形,以及PDE的计算要求高的数值模拟,这些都是我们的方法在DGS中可以访问的新领域的长而多功能列表中的例子。我们简化了复杂(数学)可视化的开发,并为通用计算(GPGPU)提供了快速原型方案。仅使用一种高级(脚本)程序设计语言对CPU和GPU进行编程的可能性是我们概念的一个重要方面。我们将着色器编程无缝地嵌入到高级(脚本)编程环境中。上述需要的高级程序设计语言到GPU的着色器程序设计语言的transcompilation的符号过程,在这篇文章中,我们解决了一个高级程序设计语言的GPU的着色器语言的自动翻译的挑战。为了保持平台独立性和在现代设备上使用我们的技术的可能性,我们专注于通过WebGL实现。
2018-08-14 cs.DC cs.MS cs.SC
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
GPU-Accelerated Conic Quadratic Programming with Local Linear Convergence under Strict Complementarity
Northwestern University(西北大学);Shanghai University of Finance and Economics(上海财经大学);Shanghai Jiao Tong University(上海交通大学);Stanford University(斯坦福大学)
本文提出GPU加速的一阶求解器PDHCG-CQP,其在严格互补性下具备局部线性收敛性,可高效扩展至8个GPU,在多类大规模规划基准上展现出先进鲁棒性。
2026-08-11 cs.DC cs.MS math.OC