Performance Assessment of OpenMP Compilers Targeting NVIDIA V100 GPUs
异构系统正变得越来越普遍。为了利用这些系统的丰富计算资源,应用程序开发人员需要健壮的编程模型,以便将遗留代码从今天的系统无缝迁移到明天的系统。在过去十多年中,指令已被确立为解决新兴系统的方案挑战的有希望的途径之一。这项工作的重点是在五个代理应用程序上应用和演示OpenMP卸载指令。我们观察到,性能差异很大,从一个编译器到另一个,我们的工作的一个重要方面是报告最佳实践的应用程序开发人员使用的OpenMP卸载编译器。虽然有些问题可以由开发人员解决,但还有一些问题必须报告给编译器供应商。通过重构OpenMP卸载指令,当使用Clang编译器时,我们在NERSC的Cori系统上获得了su 3代理应用程序的18倍加速,当使用Cori上的Cray-llvm编译器时,通过在拉普拉斯迷你应用程序中切换最大缩减以添加缩减,获得了15.7倍加速。
2020-12-02 cs.DC cs.PF
OpenMP Advisor
随着高性能计算行业异构体系结构的日益多样化,将遗留应用程序移植到不同的体系结构上运行是一个严峻的挑战。在本文中,我们介绍了OpenMP Advisor,这是第一款使用机器学习将代码卸载到带有OpenMP的GPU的编译器工具。虽然该工具目前仅限于GPU,但它可以扩展到支持其他支持OpenMP的设备。该工具有两种模式:训练模式和预测模式。训练模式必须在目标硬件上执行。它将基准代码作为输入,生成并执行可能在目标设备上运行的代码的每个变体,然后从所有执行的代码中收集数据,以训练基于ML的成本模型,用于预测模式。然而,在预测模式下,该工具不需要与目标设备进行任何交互。它接受C代码作为输入,并返回可用于将代码卸载到指定设备的最佳代码变体。该工具可以通过使用基于机器学习的成本模型预测内核的运行时间来确定最适合卸载的内核。此工具的主要目标是维护OpenMP的可移植性。使用我们的Advisor,我们能够为七种不同的架构生成多个应用程序的代码,并正确预测每个架构上每个应用程序的十大最佳变体。初步研究结果表明,该工具可以帮助编译器开发人员和HPC应用研究人员在即将到来的异构计算环境中移植他们的传统HPC代码。
2023-01-09 cs.DC
Unified schemes for directive-based GPU offloading
针对OpenACC和OpenMP target在GPU卸载中的互补优缺点,开发仅含头文件的库Solomon,统一两者接口并提供三种符号以降低学习和实现成本,支持多厂商GPU,已开源且在N体模拟等场景验证。
2024-11-28 astro-ph.IM cs.DC cs.PF
Porting OpenACC to OpenMP on heterogeneous systems
本文档专为图形处理单元(GPU)编程初学者以及希望熟悉OpenACC和OpenMP卸载模型的人员而设计。在这里,我们提出了这两个编程模型以及GPU架构的概述。具体来说,我们提供了一些见解,这些模型的功能,并进行实验,涉及不同的指令,并讨论其性能。这是通过使用基于数值求解拉普拉斯方程的微型应用程序来实现的。这样的实验揭示了使用GPU的好处,在我们的例子中,表现为性能几乎提高了52倍。为了在异构系统上实现OpenACC到OpenMP的转换,我们进一步对OpenACC和OpenMP模型进行了比较研究。在这种情况下,我们提出了一个简短的概述,开源OpenACC编译器Clacc,这是基于翻译OpenACC到OpenMP在Clang。
2022-01-27 cs.DC
An OpenMP translator for the GAP8 MPSoC
采用并行计算的障碍之一是其编程的固有复杂性。开放式多处理(OpenMP)应用编程接口(API)促进了这样的实现,提供了高抽象级别的指令。在另一方面,已经开发了旨在低能耗的新架构,例如Greenwaves Technologies GAP 8,一种基于并行超低功耗(PULP)平台的多处理器片上系统(MPSoC)。GAP 8具有8核群集和结构控制器(FC)主核。使用GAP 8进行并行编程在效率方面非常有前途,但其最近的发展以及缺乏强大的操作系统来处理线程和核心调度,使OpenMP API的简单实现变得复杂。该项目实现了一个源代码到源代码的翻译,解释了一组有限的OpenMP指令,并能够生成并行微控制器代码直接操纵核心。在这项工作中获得的初步结果表明,减少的代码大小,如果与基本实现相比,证明该项目的效率,以减轻编程的GAP 8。为了实现更多的OpenMP指令,需要进一步的工作。
2020-07-20 cs.DC
LLOR: Automated Repair of OpenMP Programs
本文提出名为LLOR的自动化修复工具,通过语言无关的同步构造放置方法修复OpenMP并行程序中的数据竞争错误并移除不必要屏障,在415个程序上验证了其有效性。
2024-12-27 cs.DC cs.SE
The OpenMP Cluster Programming Model
尽管有各种研究计划和提出的编程模型,但HPC集群中并行编程的有效解决方案仍然依赖于不同编程模型的复杂组合(例如,OpenMP和MPI)、语言(例如,C++和CUDA)和专用运行时(例如,Charm++和Legion)。另一方面,任务并行性已被证明是一个高效和无缝的集群编程模型。本文介绍了OpenMP集群(OMPC),任务并行模型,扩展了集群编程的OpenMP。OMPC利用OpenMP的卸载标准在分布式系统的节点之间分发带注释的代码区域。为了实现这一点,它将基于MPI的数据分发和负载平衡机制隐藏在OpenMP任务依赖关系后面。由于OMPC与OpenMP兼容,它允许应用程序使用相同的编程模型来利用节点内和节点间的并行性,从而简化了开发过程和维护。我们评估OMPC使用任务工作台,一个综合的基准集中在任务并行性,比较其性能与其他分布式运行时。实验结果表明,OMPC可以提供高达1.53倍和2.43倍的性能比Charm++的CCR和可扩展性实验,分别。实验还表明,OMPC性能弱规模的任务台和现实世界的地震成像应用。
2022-08-13 cs.DC
Study of Resource Amount Configuration for Automatic Application Offloading
近年来,除了诸如GPU、FPGA或多核CPU的小核CPU之外的异构硬件的利用率正在增加。然而,当使用异构硬件时,诸如OpenMP、CUDA和OpenCL等技术技能的障碍很高。在此基础上,我提出了环境适应软件,根据要放置的硬件,可以自动转换,配置和高性能操作一次编写的代码。然而,尽管到目前为止已经研究了根据迁移目的地环境的代码转换,但是还没有研究适当地设置资源量。本文作为环境自适应软件的一个新元素,为了使应用程序能够以高性价比运行,研究了一种优化CPU资源量和卸载设备的方法。
2020-11-20 cs.DC
MAMoC: Multisite Adaptive Offloading Framework for Mobile Cloud Applications
本文介绍了MAMoC,这是一个框架,它将各种基础设施类型(包括移动设备,cloudlets和远程云资源)汇集在一个统一的API下。MAMoC允许移动应用程序利用多个卸载目的地的功能。MAMoC的智能卸载决策引擎适应这种异构环境中的上下文变化,以减少单站点和多站点卸载场景的总体运行时间。MAMoC是通过一组卸载实验,评估我们的卸载决策引擎的性能进行评估。结果表明,卸载计算使用我们的框架可以减少单站点和多站点卸载场景的整体任务完成时间。
2017-11-15 cs.DC
ParBench: A Benchmark for Reliable Evaluation of LLM Parallel Code Translation
研究针对大语言模型并行代码翻译缺乏可靠评估方法的问题,提出ParBench基准框架,通过声明性规范评估,涵盖多开源套件与跨API翻译方向,经源增强测试,揭示了当前并行代码翻译存在的如方向不对称等障碍。
2026-07-28 cs.AI cs.DC
Porting HPC Applications to AMD Instinct$^\text{TM}$ MI300A Using Unified Memory and OpenMP
本文提出利用统一内存的APU编程模型蓝图,并以OpenFOAM为例展示基于OpenMP指令将生产级HPC应用高效移植到AMD MI300A的方法与优势。
2024-05-01 cs.DC
Performant Automatic BLAS Offloading on Unified Memory Architecture with OpenMP First-Touch Style Data Movement
本文提出SCILIB-Accel工具,利用NVIDIA Grace-Hopper统一内存架构和Device First-Use数据移动策略,实现无需代码修改的自动BLAS卸载,在量子物理代码上获得显著加速。
2025-08-13 cs.DC cs.MS cs.PF
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
AutOMP: An Automatic OpenMP Parallelization Generator for Variable-Oriented High-Performance Scientific Codes
OpenMP是一个跨平台的API,它扩展了C、C++和Fortran,并为这些语言提供了共享内存并行平台。自20世纪90年代以来,许多核心和HPC技术在科学计算中的使用已经普及,现在已经参与了许多研究领域。相对容易实现的OpenMP,以及多核共享内存处理器(如英特尔至强融核)的发展,使OpenMP的并行化在现代化的过程中遗留代码的有利方法。传统的科学代码通常包含大量的物理数组,这些数组被代码例程使用和更新。在大多数情况下,这种代码的并行化集中在循环并行化上。这种并行化的一个关键步骤是决定并行化作用域中的哪些变量应该是私有的(因此每个线程将持有它们的副本),以及哪些变量应该在线程之间共享。另一个重要的步骤是在循环执行后找出哪些变量应该同步。在这项工作中,我们提出了一个自动的预处理器,这些阶段- AutOMP(自动OpenMP)。AutOMP识别循环中的所有变量赋值。这些变量将是私有的,除非赋值是依赖于循环索引变量的数组元素。然后,AutOMP会找到需要线程同步的位置,以及要使用哪个归约运算符。最后,程序提供了并行化命令,用于并行化循环。
2017-07-22 cs.DC
Quantifying OpenMP: Statistical Insights into Usage and Adoption
本文构建含 C/C++/Fortran 的 GitHub 代码数据库 HPCORPUS,统计分析 OpenMP 构造的使用与趋势,发现其占并行 API 的 45% 且持续增长,并揭示语言差异及 simd、target、task 等新采用趋势。
2023-08-17 cs.DB cs.DC
Introducing CQ: A C-like API for Quantum Accelerated HPC
本文提出CQ规范及其参考实现CQ-SimBE,通过运行时卸载实现量子计算向经典HPC代码的增量集成,支持类型安全语言并提供细粒度数据控制。
2025-08-14 cs.DC quant-ph
Frustrated with MPI+Threads? Try MPIxThreads!
针对 MPI+Threads 混合编程存在线程间无法用 MPI 通信、易串行化致性能差的问题,提出 MPIX Thread Communicator 扩展,为线程分配独立 MPI 秩,构建统一并行环境,实现代码更简洁、性能更优。
2024-01-29 cs.DC
Integrating Blocking and Non-Blocking MPI Primitives with Task-Based Programming Models
在本文中,我们提出了任务感知MPI库(TAMPI),集成了阻塞和非阻塞MPI原语与基于任务的编程模型。TAMPI库利用两个新的运行时API来提高混合应用程序的可编程性和性能。第一个API允许根据外部事件暂停和恢复任务的执行。此API用于提高阻塞MPI通信原语和任务之间的互操作性。当在任务内执行的MPI操作阻塞时,任务运行被暂停,以便运行时系统可以在空闲的核心上调度新任务。一旦被阻塞的MPI操作完成,暂停的任务将再次放在运行时系统的就绪队列中,因此最终它将再次被调度,并且其执行将继续。第二个API延迟与任务完成相关的依赖项的释放,直到某些外部事件完成。此API仅由两个函数组成,一个函数用于将外部事件绑定到正在运行的任务,另一个函数用于通知先前绑定的外部事件的完成。TAMPI利用此API将非阻塞MPI操作与任务绑定在一起,延迟释放它们的任务依赖关系,直到任务执行及其所有绑定的MPI操作都完成。我们的实验表明,增强功能的TAMPI不仅简化了开发的混合MPI+OpenMP应用程序,使用阻塞或非阻塞MPI原语,但他们也自然重叠的计算和通信阶段,提高了应用程序的性能和可扩展性,通过消除人为的依赖性跨通信任务。
2020-05-29 cs.DC
Application Experiences on a GPU-Accelerated Arm-based HPC Testbed
本文评估了十个团队在GPU加速的Arm测试平台上移植和基准测试HPC应用的经验,证明当前软件和工具已成熟,足以支持大规模生产部署。
2022-12-19 cs.AR cs.DC