Portability for GPU-accelerated molecular docking applications for cloud and HPC: can portable compiler directives provide performance across all platforms?
基于结构的高通量药物样分子筛选已成为生物医学研究中的常用工具。最近,图形处理单元(GPU)的加速为分子对接程序提供了巨大的性能提升。云计算和高性能计算(HPC)资源都已用于具有分子对接程序的大屏幕;虽然NVIDIA GPU已主导了云计算和HPC资源,但AMD和英特尔等新供应商现在正在进入该领域,从而产生了跨不同GPU的软件可移植性问题。理想情况下,软件生产力可以最大限度地利用可移植的编程模型,这些模型能够在整个体系结构中保持高性能。虽然在许多情况下,编译器指令已被用作将基于CPU的程序的并行区域卸载到GPU加速器的简单方法,但它们也可能是一种有吸引力的编程模型,用于提供跨不同GPU供应商的可移植性,在这种情况下,移植过程可能会以相反的方向进行:从低级的特定于架构的代码到更高级别的基于指令的抽象。MiniMDock是一个新的迷你应用程序(miniapp),旨在捕获分子对接计算中发现的基本计算内核,例如用于药物发现工作,以测试跨GPU架构移植的不同解决方案。在这里,我们将MiniMDock扩展到使用OpenMP指令的GPU卸载,并比较使用CUDA的内核的性能,以及NVIDIA和AMD GPU上的HIP,以及不同的编译器,探索性能瓶颈。我们记录了这个反向移植过程,从高度优化的设备代码到使用指令的更高级别的版本,比较代码结构,并描述了在这项工作中克服的障碍。
2022-03-04 cs.DC q-bio.BM
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
HALO 1.0: A Hardware-agnostic Accelerator Orchestration Framework for Enabling Hardware-agnostic Programming with True Performance Portability for Heterogeneous HPC
Arizona State University(亚利桑那州立大学)
本文介绍了HALO 1.0,一个开放式的可扩展的多代理软件框架,实现了一组建议的硬件无关的加速器编排(HALO)的原则。HALO实现了一种新颖的以计算为中心的消息传递接口(C^2MPI)规范,用于实现跨异构加速器的硬件无关主机应用程序的性能可移植执行。对基于Intel Xeon E5-2620 CPU、Intel Arria 10 GX FPGA和NVIDIA GeForce RTX 2080 Ti GPU的八个广泛使用的HPC子程序进行评估的实验结果表明,HALO 1.0允许主机程序的统一控制流在所有计算设备上运行,并具有一致的最高性能可移植性得分,这比基于OpenCL的解决方案高出五个数量级。
2022-07-06 cs.CL cs.DC cs.PF
Multi-Partner Project: Multi-GPU Performance Portability Analysis for CFD Simulations at Scale
National Technical University of Athens(雅典国立技术大学);KTH Royal Institute of Technology(皇家理工学院);Hewlett Packard Enterprise (HPE)(惠普企业);Technical University of Delft(代尔夫特理工大学);University of Michigan(密歇根大学)
本文分析了SOD2D在不同GPU架构上的性能可移植性,揭示了内存访问优化对加速速度的影响,并强调了多级调优的重要性。
2026-01-20 cs.AR cs.DC
Optimization and Portability of a Fusion OpenACC-based FORTRAN HPC Code from NVIDIA to AMD GPUs
本文介绍了将基于 FORTRAN 和 OpenACC 的融合模拟工具 CGYRO 从 NVIDIA 移植到 AMD GPU 的经验,通过针对 AMD 的代码优化使其达到预期性能,并在 NVIDIA GPU 上获得了意外的速度提升。
2023-05-17 cs.DC cs.PF physics.plasm-ph
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
Productivity in HPC: A Critical Review from SLOC and Performance Portability to AI-Assisted Programming
Parallel Research Lab(平行研究实验室)
本文批判性综述了HPC生产力测量方法,从SLOC到AI辅助编程,指出其缺乏统一定义,并分析了新系统与自动化迁移对评估的挑战。
2026-10-07 cs.DC
Performance and Portability of Accelerated Lattice Boltzmann Applications with OpenACC
越来越多的HPC系统依赖于将传统多核CPU与节能加速器相结合的异构架构。在过去,为这些系统设计有效的应用程序一直很麻烦,因为加速器通常可以使用特定的程序设计语言进行编程,从而威胁到可维护性、可移植性和正确性。一些新的编程环境试图解决这个问题。其中,OpenACC提供了一种基于编译器指令子句的高级方法,用于标记现有C,C++或Fortran代码的区域以在加速器上运行。这种方法直接解决了代码的可移植性,让编译器支持每个不同的加速器,但必须仔细评估可移植方法与计算效率的相对成本。在本文中,我们解决这个问题,作为一个测试台使用大规模并行格子玻尔兹曼算法。我们首先描述我们的多节点实现和优化的算法,使用OpenACC和MPI。然后,我们在各种处理器(包括传统CPU和GPU)上对代码进行基准测试,并与使用CUDA和OpenCL的相同算法的其他GPU实现进行准确的性能比较。我们还评估了与可移植编程相关的性能影响,以及基于OpenACC的应用程序在几种最先进的架构中的实际可移植性和性能可移植性。
2017-03-01 cs.DC
Portability of Fortran's 'do concurrent' on GPUs II
Predictive Science Inc.(预测科学公司);NVIDIA Corporation(英伟达公司);Intel Corporation(英特尔公司);Advanced Micro Devices, Inc.(超威半导体公司)
本文针对NVIDIA、AMD、Intel三大GPU厂商,探究Fortran 'do concurrent'循环在GPU加速Fortran应用中的可移植性,发现纯Fortran代码可被GPU加速,补充指令可提升性能,相关技术正快速进步。
2026-08-24 astro-ph.IM astro-ph.SR cs.CE
OpenMP GPU Acceleration and Portability of TRIMEG-C1 for Electromagnetic Gyrokinetic Simulations in Tokamak Plasmas
Max Planck Institute for Plasma Physics(马克斯·普朗克等离子体物理研究所);Chalmers University of Technology(查尔姆斯理工大学)
采用OpenMP框架在NVIDIA和AMD GPU上加速TRIMEG-C1回旋动理学代码,实现粒子推动和粒子-网格操作的GPU执行,在2个AMD MI300A APU上获得约9倍加速,并验证了ITG模式模拟的正确性。
2026-06-24 cs.DC physics.comp-ph physics.plasm-ph
GPU Acceleration and Portability of the TRIMEG Code for Gyrokinetic Plasma Simulations using OpenMP
TRIMEG代码利用OpenMP和GPU加速提升等离子体模拟的计算效率和可移植性。
2026-01-17 cs.DC physics.comp-ph physics.plasm-ph
An approach to performance portability through generic programming
针对高性能计算硬件多样化带来的软件开发复杂度问题,提出基于C++模板元编程的泛型编程设计方法,将底层工具集成到高层泛型算法,实现跨CPU、GPU的性能可移植性,并通过声波方程有限差分算法在三类硬件上验证了可行性。
2023-11-08 cs.DC cs.SE
PortLBM: A Portable Lattice Boltzmann Tool Leveraging SYCL on AMD, NVIDIA, and Intel GPUs
University of Stuttgart(斯图加特大学)
研究针对GPU加速下LBM的跨平台可移植性问题,提出基于SYCL的PortLBM框架,评估其在不同GPU架构上多种数据布局和算法变体对模拟吞吐量的影响,强调在异构计算环境中便携式LBM软件的必要性。
2026-07-24 cs.DC cs.PF
Stateful Dataflow Multigraphs: A Data-Centric Model for Performance Portability on Heterogeneous Architectures
加速器在高性能计算中的普遍存在已经使编程的复杂性超出了普通领域科学家的技能范围。为了在未来保持性能的可移植性,必须将特定于体系结构的编程范式与底层的科学计算解耦。我们提出了有状态数据流multiGraph(SDFG),一个以数据为中心的中间表示,使分离程序定义从其优化。通过将细粒度的数据依赖性与高级控制流相结合,SDFG既具有表达能力,又适合程序转换,例如平铺和双缓冲。通过使用可扩展的模式匹配、图形重写和图形用户界面,在交互式过程中将这些转换应用于SDFG。我们在CPU,GPU和FPGA上展示了各种图案的SDFG-从基本的计算内核到图形分析。我们表明,SDFG提供了具有竞争力的性能,允许领域科学家自然地开发应用程序,并将其移植到接近峰值硬件性能,而无需修改原始的科学代码。
2020-01-02 cs.DC cs.PF 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
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
Evaluating performance and portability of high-level programming models: Julia, Python/Numba, and Kokkos on exascale nodes
本文在百亿亿次 HPC 节点上评估 Julia、Python/Numba 和 Kokkos 的性能与可移植性,发现 Julia 和 Kokkos 在 CPU 上接近 C/OpenMP,Julia 在 GPU 上接近 CUDA/HIP,而 Python/Numba 性能差距明显。
2023-03-10 cs.DC cs.PL
Achieving near native runtime performance and cross-platform performance portability for random number generation through SYCL interoperability
高性能计算(HPC)是加速科学研究和发现的主要驱动力,从量子模拟到医学治疗。虽然HPC资源的可用性不断提高在许多情况下对成功的科学至关重要,但即使是最大的合作也缺乏最大限度地利用当前硬件功能所需的计算专业知识。需要维护多个特定于平台的代码库进一步使问题复杂化,可能会对可以使用的机器增加限制。幸运的是,许多编程模型正在开发中,旨在促进异构计算的可移植代码。SYCL是一个开放标准的、基于C++的单源代码编程范例。SYCL的特性之一是互操作性,通过这种机制,应用程序和第三方库协调共享数据并协作执行。在本文中,我们利用SYCL编程模型来演示跨异构资源的跨平台性能移植。我们详细介绍了对oneMKL开源接口库的NVIDIA和AMD随机数生成器扩展。性能可移植性是相对于在四个主要硬件平台上使用两个不同的支持SYCL的编译器执行的特定于平台的基线应用程序来测量的。我们的扩展的效用是通过高能物理模拟应用程序在现实世界中的设置举例说明。我们的实现,利用SYCL互操作性的性能与本地实现,证明了跨平台的性能移植性的SYCL为基础的方法,科学的代码。
2021-10-18 cs.DC cs.MS hep-ex
LAPIS: A Performance Portable, High Productivity Compiler Framework
本文提出基于 MLIR 的 LAPIS 编译器框架,通过 Kokkos 风格 dialect 自动降低稀疏与稠密线性代数 kernel,并打通 PyTorch 与 Kokkos,在多种架构上兼顾性能可移植性、生产力和扩展性。
2025-09-30 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
Patterns and Rewrite Rules for Systematic Code Generation (From High-Level Functional Patterns to High-Performance OpenCL Code)
随着组合多核CPU和GPU的异构硬件的出现,计算系统变得越来越复杂。这些并行系统表现出巨大的计算能力,在增加编程工作的成本。这导致了实现性能和代码可移植性之间的矛盾。代码要么使用特定于设备的优化进行调优以实现最大性能,要么用高级语言编写以牺牲性能来实现可移植性。我们提出了一种新的方法,提供高层次的编程,代码的可移植性和高性能。它基于算法模式组合,再加上一组强大而简单的重写规则。这使得能够将高级程序系统地转换和优化为导致高性能代码的低级硬件特定表示。我们在实践中测试我们的设计,通过描述一个子集的OpenCL编程模型与低级别的模式,并通过实现一个编译器,生成高性能的OpenCL代码。我们的实验表明,我们可以系统地从简单的高层次的算法表达式获得高性能的设备特定的实现。生成的OpenCL代码的性能与专家编写的针对多核CPU和GPU的高度调优实现不相上下
2015-02-09 cs.DC cs.PF cs.PL
Cross-Platform Performance Portability Using Highly Parametrized SYCL Kernels
Codeplay Software Ltd.(Codeplay软件有限公司)
近年来,异构系统在HPC系统中变得越来越普遍,TOP500中有100多台超级计算机采用了GPU或其他加速器。这些硬件平台具有不同的性能特征和优化要求。为了充分利用多个加速器,开发人员必须提供针对每个设备调整的算法的实现。硬件供应商提供专门针对其设备的库,这些库提供良好的性能,但通常具有不同的API设计,阻碍了可移植性。SYCL编程模型允许用户使用完全标准的C++编写异构程序,因此开发人员在开发计算内核时可以使用C++模板的强大功能。在本文中,我们表明,通过编写高度参数化的内核矩阵乘法和卷积,我们实现了跨不同架构的供应商实现的性能竞争力。此外,针对新设备进行调优相当于选择在硬件上性能最佳的内核参数组合。
2019-04-10 cs.DC cs.LG cs.MS
Evaluating SYCL as a Unified Programming Model for Heterogeneous Systems
Parallel Research Lab(并行研究实验室)
本文评估SYCL在异构系统中的统一编程能力,分析其跨平台开发的代码可移植性、开发效率和运行时效率,对比USM与buffer-accessor、NDRange与分层内核模型,揭示当前SYCL实现的关键限制。
2026-04-17 cs.DC cs.PL
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
HipBone: A performance-portable GPU-accelerated C++ version of the NekBone benchmark
我们介绍了hipBone,一个用于Nek 5000(和NekRS)CFD应用程序的开源性能便携式代理应用程序。HipBone是原始NekBone CPU代理应用程序的完全GPU加速C++实现,具有几种新颖的算法和实现改进,可优化其在现代细粒度并行GPU加速器上的性能。我们的优化包括转换存储的自由度的问题,以组装的形式,以减少移动的数据量在主迭代和便携式实现的主要泊松算子内核。我们展示了近屋顶性能的运营商内核的三个不同的现代GPU加速器从两个不同的供应商。我们提出了一种新的算法分裂的应用程序的泊松运算符的GPU积极隐藏MPI通信所需的光环交换和组装。我们的最近邻居MPI通信的实现,然后利用几种不同的路由算法和GPU-Direct RDMA功能,当可用时,这提高了基准的可扩展性。我们展示了三个不同的集群在橡树岭国家实验室,即首脑会议的超级计算机和前沿早期访问集群,斯波克和破碎机的hipBone的性能。我们的测试证明了跨不同集群的可移植性和非常好的扩展效率,特别是在大型问题上。
2022-02-25 cs.DC cs.PF
GigaAPI for GPU Parallelization
GigaAPI是一个简化多GPU编程的用户空间API,通过抽象底层CUDA和C++复杂性提供全面功能,实验证明其能提升并行计算效率,推动GPU计算的普及。
2025-04-02 cs.AR cs.DC cs.PF
A Performance-Portable SYCL Implementation of CRK-HACC for Exascale
本文评估了大规模宇宙学应用 CRK-HACC 的 SYCL 实现在 AMD、Intel 和 NVIDIA GPU 上的性能可移植性,通过针对特定目标特化内核,实现了 0.96 的性能可移植性和几乎为 0 的代码差异,证明 SYCL 是百亿亿次计算中性能可移植的可行编程模型。
2023-10-24 astro-ph.CO cs.DC cs.PF
Open SYCL on heterogeneous GPU systems: A case of study
本研究评估Open SYCL在异构多GPU系统上的性能与开发效率,以有限时间李雅普诺夫指数计算为例,发现其开销低且开发工作量小于CUDA/HIP,并能轻松同时利用不同供应商的GPU。
2023-10-10 cs.DC
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
From Task-Based GPU Work Aggregation to Stellar Mergers: Turning Fine-Grained CPU Tasks into Portable GPU Kernels
同时满足可扩展性和性能可移植性要求对于任何HPC应用程序都是一个挑战,特别是对于自适应改进的应用程序。在用于模拟恒星合并的天体物理学应用程序Tiger-Tiger中,我们使用现有的解决方案来实现这一点:我们使用HPX来获得细粒度的任务,以轻松分配工作并精细地重叠通信和计算。对于计算本身,我们使用Kokkos将这些任务转换为能够在从几个CPU内核到强大加速器的硬件上运行的计算内核。然而,有一个缺失的环节:虽然HPX暴露的细粒度并行性对可扩展性很有用,但当任务变得太小而无法使设备饱和时,它可能会阻碍GPU性能,从而导致资源利用率低下。为了弥补这一差距,我们调查了Tiger中多种不同的GPU工作聚合策略,添加了一种新策略,并评估了节点级性能对最新AMD和NVIDIA GPU的影响,实现了明显的加速。
2023-03-04 cs.DC
GPU Programming for AI Workflow Development on AWS SageMaker: An Instructional Approach
本文介绍一门面向本研学生的GPU编程与AI开发课程,通过AWS平台进行云端GPU配置与RAG优化实践,结果表明该体验式教学有效提升了学生的技术能力与问题解决能力。
2025-09-17 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
High-level GPU programming in Julia
GPU是用于加速科学计算的流行设备。然而,由于GPU代码通常是用低级语言编写的,它打破了科学程序员流行的高级语言的抽象。为了克服这一点,我们提出了一个框架的CUDA GPU编程的高级朱莉娅程序设计语言。此框架编译Julia源代码以供GPU执行,并使用现代代码生成技术处理必要的低级交互,以避免运行时开销。评估框架及其API的案例研究,包括跟踪变换领域的图像处理,我们发现,对性能的影响是最小的,同时大大提高了程序员的生产力。Julia语言的元编程能力证明了这一点。我们的框架显着提高了GPU的可用性,使它们能够被广泛的程序员访问。它可以作为自由和开源软件在MIT许可证下获得许可。
2016-04-12 cs.DC cs.PL
Toward Performance-Portable PETSc for GPU-based Exascale Systems
可移植可扩展科学计算工具包(PETSc)库为非线性时变微分和代数方程以及数值优化提供可扩展的求解器。PETSc的性能可移植性设计解决了GPU加速器的基本挑战,并通过将应用程序使用的编程模型与库使用的编程模型分离来强调灵活性和可扩展性,它使应用程序开发人员能够在即将到来的exascale系统上使用他们首选的编程模型,如Kokkos、RAJA、SYCL、HIP、CUDA或OpenCL。提供了从基于PETSC的代码中使用GPU的蓝图,案例研究强调了当前基于GPU的系统所实现的灵活性和高性能。
2021-09-29 cs.DC cs.MS
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
Understanding the Power of Evolutionary Computation for GPU Code Optimization
实现GPU代码的高性能要求开发人员在并行编程和GPU架构方面具有丰富的知识,并对应用程序有深入的了解。这种组合使得为基于GPU的应用程序找到性能优化变得非常具有挑战性,特别是在科学计算中。本文表明,使用GEVO工具可以在两种完全不同的科学工作负载上实现显着的加速,以提高人类优化GPU代码的性能。GEVO使用演化计算来寻找代码编辑,将多序列比对内核和SARS-CoV-2模拟的运行时间分别提高28.9%和29%。此外,当GEVO从序列比对程序的早期未优化版本开始时,它发现了令人印象深刻的30倍加速-与手动调优版本类似的性能改进。这项工作对发现的优化进行了深入分析,揭示了改进的主要来源因应用程序而异;大多数优化都适用于GPU架构;并且几个最重要的优化涉及重要的代码相互依赖性。这些结果展示了自动化程序优化工具的潜力,有助于减轻科学计算开发人员的优化负担,并增强特定领域加速器的性能可移植性。
2022-08-25 cs.DC cs.PF cs.SE
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
GPU-Accelerated Primal Heuristics for Mixed Integer Programming
本研究提出融合GPU加速的混合整数规划原始启发式算法,通过GPU加速PDLP求解器、新增探测缓存并优化多种前沿启发式算法,在MIPLIB2017基准上显著提升了可行解数量与目标质量。
2025-10-30 cs.DC math.OC
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
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
Implementing Multi-GPU Scientific Computing Miniapps Across Performance Portable Frameworks
本文评估了Kokkos、OpenMP、RAJA和OCCA四个性能可移植框架在多GPU环境下的N体和结构化网格模拟表现,发现各框架性能差异显著,并指出未来需在归约算法、数据通信和内存管理等方面进行优化。
2025-11-04 cs.DC cs.MS
Hybrid CPU-GPU generation of the Hamiltonian and Overlap matrices in FLAPW methods
在本文中,我们专注于高性能数值库的从头算代码和性能和可扩展性的可移植性的集成。我们工作的目标是FLEUR,一个电子结构计算软件,在二十年的过程中在Forschungszentrum Jülich开发。所提出的工作是对以前通过重新设计和重写高度优化的库来现代化遗留代码的努力的后续工作。我们说明了如何获得高效和便携式共享内存代码的初步努力,使快速移植的代码新兴的异构体系结构。更具体地说,我们将代码移植到配备多个GPU的节点上。我们将研究分为两部分。首先,我们展示了通过较小且相对简单的代码更改来将计算部分卸载到GPU所获得的相当大的加速。然后,我们确定进一步可能的改进,以实现更高的性能和可扩展性。在一个由16核和2个GPU组成的系统上,我们观察到相对于我们优化的共享内存代码,加速高达5倍,这意味着相对于原始FLEUR代码,加速在7.5倍和12.5倍之间。
2016-10-31 cs.CE cs.DC cs.PF
Accelerating Particle-in-Cell Monte Carlo Simulations with MPI, OpenMP/OpenACC and Asynchronous Multi-GPU Programming
本文通过集成MPI、OpenMP/OpenACC并采用异步多GPU编程扩展BIT1模拟器,在EuroHPC和MareNostrum 5上显著提升性能,最高达8.77倍加速,为百亿亿次聚变等离子体模拟奠定基础。
2025-04-24 cs.DC cs.PF physics.comp-ph
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
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