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
A Performance Comparison of CUDA and OpenCL
CUDA和OpenCL是两种不同的GPU编程框架。OpenCL是一种开放标准,可用于对来自不同供应商的CPU、GPU和其他设备进行编程,而CUDA则专用于NVIDIA GPU。虽然OpenCL承诺为GPU编程提供一种可移植的语言,但其通用性可能会带来性能损失。在本文中,我们使用来自量子蒙特卡罗应用程序的复杂的,几乎相同的内核来比较CUDA和OpenCL的性能。我们表明,使用NVIDIA编译器工具时,将CUDA内核转换为OpenCL内核涉及最小的修改。使用ATI的构建工具编译这样的内核涉及到更多的修改。我们的性能测试测量并比较了CUDA和OpenCL的GPU之间的数据传输时间、内核执行时间以及端到端应用程序执行时间。
2011-05-16 cs.DC cs.PF physics.comp-ph
OpenCL + OpenSHMEM Hybrid Programming Model for the Adapteva Epiphany Architecture
有兴趣探索混合OpenSHMEM + X编程模型,以扩展OpenSHMEM接口的适用性,更多的硬件架构。我们提出了一种混合OpenCL + OpenSHMEM编程模型,用于Adapteva Epiphany众核RISC阵列处理器等架构的设备级编程。Epiphany架构包括由2D网状片上网络(NoC)连接的具有最小非核心功能的低功耗RISC核心的2D阵列。Epiphany架构为整数和浮点计算以及并行可扩展性提供了高计算能效。Epiphany-III可作为一个协处理器在平台上,也利用了ARM CPU主机。OpenCL提供了支持协同设计编程模型的良好功能,其中主机CPU将并行工作卸载到协处理器。然而,OpenCL内存模型与Epiphany内存架构不一致,并且缺乏对内核间通信的支持。我们提出了一个混合编程模型,其中OpenSHMEM提供了一个更好的解决方案,通过取代非标准的OpenCL扩展,以实现高性能的主显节架构。我们展示了基于Cannon算法的矩阵-矩阵乘法的拟议编程模型,表明该混合模型解决了单独使用OpenCL实现良好基准性能的缺陷。
2016-08-11 cs.DC
ParBench: A Benchmark for Reliable Evaluation of LLM Parallel Code Translation
研究针对大语言模型并行代码翻译缺乏可靠评估方法的问题,提出ParBench基准框架,通过声明性规范评估,涵盖多开源套件与跨API翻译方向,经源增强测试,揭示了当前并行代码翻译存在的如方向不对称等障碍。
2026-07-28 cs.AI cs.DC
Model Coupling between the Weather Research and Forecasting Model and the DPRI Large Eddy Simulator for Urban Flows on GPU-accelerated Multicore Systems
在这份报告中,我们提出了一种新的方法来模型耦合共享内存多核系统托管OpenCL兼容的加速器,我们称之为格拉斯哥模型耦合框架(GMCF)。我们讨论了GMCF的原型及其应用程序的实现耦合天气研究和预报模型和OpenCL加速版本的城市流(LES)在DPRI开发的大涡模拟器。这项工作的第一阶段涉及LES的OpenCL端口。用于OpenCL移植的方法是自动分析和代码生成以及基于规则的手动并行化的组合。为了进行评估,使用gfortran、fort和pgfortran}编译非OpenCL LES代码,在每种情况下都具有自动并行化和自动向量化。OpenCL加速版本的LES在NVIDIA GeForce GTX 480 GPGPU上实现了7倍的速度提升,而在12核Intel Xeon E5-2640上运行的原始代码的最快编译速度。在这项工作的第二阶段,我们构建了格拉斯哥模型耦合框架,并成功地使用它来耦合一个OpenMP并行WRF实例与OpenCL LES实例,该实例在GPGPI上运行LES代码。该系统只需要对原始代码进行非常小的更改。报告讨论了这项工作的理由、目标、方法和执行细节。
2015-04-09 cs.DC
Distributed OpenMP Offloading of OpenMC on Intel GPU MAX Accelerators
本研究基于前期GPU适配基础,通过分布式OpenMP卸载将OpenMC蒙特卡罗代码扩展适配至Intel Data Center Max 1100 GPU,基准测试显示其相较第四代至强CPU实现显著加速,计算负载越高优势越明显。
2024-03-12 cs.DC
OpenCLIPER: an OpenCL-based C++ Framework for Overhead-Reduced Medical Image Processing and Reconstruction on Heterogeneous Devices
医学图像处理常常受到所涉及算法的计算成本的限制。虽然专用计算设备(特别是GPU)的存在确实提供了显着的效率提升,但它们在内务任务(设备选择和初始化,数据流,与CPU的同步等)方面具有额外的使用成本,这可能会阻碍开发人员使用它们。本文介绍了一种基于OpenCL的框架,能够无缝地处理专用计算设备,并允许开发人员专注于图像处理任务。该框架自动处理设备发现和初始化、设备和文件系统之间的数据传输以及内核加载和编译。数据结构只需要独立于计算设备定义一次;因此,代码对于每个设备(包括主机CPU)都是唯一的。固定内存/缓冲区映射用于实现数据传输的最大性能。本文中包含的代码片段显示了计算设备如何几乎立即且毫不费力地提供给用户算法,因此他们可以专注于生产性工作。设备选择和初始化、数据加载和流式传输以及内核编译所需的代码非常少,而且系统化。算法可以被认为是数学运算符(称为过程),具有输入,输出和参数,并且它们可以轻松有效地一个接一个地链接。同样为了提高效率,进程可以将其初始化工作从其核心工作负载中分离出来,因此进程链和循环不会带来性能损失。算法代码与目标器械类型无关。
2018-07-31 cs.DC eess.IV
Machine Learning-Driven Adaptive OpenMP For Portable Performance on Heterogeneous Systems
Lawrence Livermore National Laboratory(劳伦斯利弗莫尔国家实验室)
异构系统已经成为构建高性能计算系统的主流架构设计选择。然而,异构性对实现执行的性能可移植性提出了重大挑战。使程序适应新的异构平台是费力的,并且需要开发人员手动探索大量的执行参数。为了应对这些挑战,本文提出了新的扩展,以自主的,机器学习驱动的自适应OpenMP。我们的解决方案包括一组新颖的语言结构,编译器转换和运行时支持。我们提出了一种生产者-消费者模式,以灵活地定义多个不同的OpenMP代码区域变体,从而实现自适应。这些区域在运行时被透明地分析,以自主学习优化动态选择最快变体的机器学习模型。该方法利用机器学习技术和OpenMP编译的代码生成功能,大大减少了用户在异构体系结构上编写自适应应用程序的工作量。使用Clang/LLVM中的完整参考实现,我们评估了自适应CPU-GPU执行的三个用例。与HPC代理应用程序和基准测试的实验表明,建议的自适应OpenMP扩展自动选择最佳性能的代码变体的各种适应的可能性,在几个不同的异构平台的CPU和GPU。
2023-03-15 cs.DC cs.LG cs.PL
cf4ocl: a C framework for OpenCL
OpenCL是一种用于异构计算设备(如GPU、CPU、DSP或FPGA)并行编程的开放标准。但是,其C主机API的冗长可能会阻碍应用程序开发。在本文中,我们提出了cf4ocl,一个软件库的快速开发的OpenCL程序在纯C。它旨在减少OpenCL API的冗长,提供简单的存储管理,集成的事件分析(例如,内核执行和数据传输),简单但可扩展的设备选择机制和用户友好的错误管理。我们比较了两个版本的概念性应用程序示例,一个基于cf4ocl,另一个直接使用OpenCL主机API开发。结果表明,前者更容易实现,并提供更多的功能,在一个有效的计算开销可以忽略不计的成本。此外,cf4ocl提供的工具允许快速分析如何优化应用程序。
2017-05-12 cs.DC
Exploring Thread Coarsening on FPGA
在过去的几年里,人们越来越有兴趣在数据中心和高性能计算集群中使用FPGA以及GPU和其他加速器。因此,为CPU、GPU和FPGA提供统一的高级编程接口变得越来越重要。这导致了编译器工具链的开发,以在FPGA上部署OpenCL代码。然而,GPU和FPGA之间的基本架构差异导致了性能可移植性问题:已经表明,针对GPU优化的OpenCL代码不一定能很好地映射到FPGA,通常需要手动优化来提高性能。在本文中,我们探讨了使用线程粗化-一种编译器技术,将多个线程的工作合并到一个线程-在FPGA上运行的OpenCL代码。虽然这种优化已经在CPU和GPU上进行了探索,但FPGA的体系结构特征及其提供的并行性的性质导致了不同的性能考虑,因此有必要对FPGA上的线程粗化进行分析。我们的评估,在我们的微基准测试和一组应用程序从开源基准测试套件,表明线程粗化可以产生性能优势(高达3- 4倍的加速)在FPGA上运行的OpenCL代码在有限的资源利用成本。
2022-09-12 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
Programming CUDA and OpenCL: A Case Study Using Modern C++ Libraries
我们提出了几个现代的C++库提供高层次的接口编程多核和众核架构上的CUDA或OpenCL的比较。比较的重点是解决常微分方程,是基于odeint,一个框架的解决方案系统的常微分方程。Odeint以非常灵活的方式设计,可以很容易地适应使用CUDA或OpenCL技术的Thrust,MTL4,VexCL或ViennaCL等库的有效使用。我们发现CUDA和OpenCL同样适用于大规模的问题,而OpenCL对于较小的问题具有更高的开销。此外,我们表明,现代的高级库允许有效地使用多核GPU或多核CPU的计算资源,而无需太多的底层技术的知识。
2013-04-26 cs.DC cs.MS physics.comp-ph
Parallelize Bubble Sort Algorithm Using OpenMP
排序算法一直是算法研究者关注的一个重要领域,人们投入了大量的资源来研究排序算法。为了这个目的,许多现有的排序算法的算法复杂性的效率方面进行了观察。在本文中,我们实现了气泡排序算法使用多线程(OpenMP)。在两个不同大小的标准数据集(文本文件)上进行了测试。该算法的主要思想是将输入数据集的元素根据每个单词中的字符数量分布到许多额外的临时子数组中。每个子数组的大小取决于输入数组中具有相同字符数的元素的数量。我们使用Intel Core i7- 3610 QM(8个CPU),使用两种方法(字符串向量和数组3D)实现了OpenMP。最后,我们得到了数据结构对算法性能的影响,因为我们选择了第二种方法。
2014-07-24 cs.DC
Towards making the most of NLP-based device mapping optimization for OpenCL kernels
National Technical University of Athens(雅典国家技术大学)
如今,我们生活在一个设备极端异构的时代。尽管传统的CPU架构种类繁多,但加速器设备(如GPU和FPGA)也出现在前台,从而使执行应用程序的可用解决方案池激增。然而,由于硬件和软件之间的抽象关系,根据应用需求选择合适的设备是一项极具挑战性的任务。需要精确的自动优化算法来应对当前硬件和软件的复杂性和多样性。最佳执行一直依赖于耗时的试错方法。机器学习(ML)和自然语言处理(NLP)在过去十年中蓬勃发展,研究重点是深度架构。在这种情况下,使用自然语言处理技术的源代码,以进行自动调优任务是一个新兴的研究领域。本文推广了Cummins等人的工作,即Deeptune,它解决了加速OpenCL内核的最佳设备选择(CPU或GPU)问题。我们确定了Deeptune的三个主要局限性,并在此基础上提出了四种不同的DNN模型,这些模型提供了增强的源代码上下文信息。实验结果表明,我们提出的方法优于康明斯等人的工作,提供高达4%的预测精度的提高。
2022-08-30 cs.DC cs.LG
Performance Analysis of CP2K Code for Ab Initio Molecular Dynamics
使用一个现实的分子催化剂系统,我们进行缩放研究的从头算分子动力学模拟使用CP2K代码在英特尔至强CPU和NVIDIA V100 GPU架构。我们探索使用进程放置和亲和力来获得额外的性能改进。我们还使用统计方法来了解性能的变化,尽管在每个分子动力学时间步长的运行时的变化。我们发现CPU运行的理想条件包括每个节点至少有四个MPI等级,每个套接字之间均匀绑定,并且每个核心有一个OpenMP线程,充分利用处理核心,为系统保留核心没有任何好处。只有CPU的模拟扩展到理想的70%或更多,扩展到10个计算节点,之后回报开始更快地减少。与最快的单36核节点仅CPU版本相比,在具有两个NVIDIA V100 GPU的单个40核节点上进行的模拟加速实现了超过3.7倍的加速,并且在我们在五个仅CPU节点上实现的最快时间内显示了13%的加速。
2021-09-09 cs.DC cs.PF
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
DPP-PMRF: Rethinking Optimization for a Probabilistic Graphical Model Using Data-Parallel Primitives
提出了一种新的概率图模型优化并行算法。该算法依赖于数据并行原语(DPP),它提供了硬件架构上的可移植性能。我们评估CPU和GPU的图像分割问题的结果。与串行基线相比,我们观察到高达13倍(CPU)和44倍(GPU)的运行时加速。我们还将我们的性能与基于OpenMP的参考算法进行了比较,并发现加速高达7倍(CPU)。
2018-09-13 cs.DC
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
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
Comparison of Different Parallel Implementations of the 2+1-Dimensional KPZ Model and the 3-Dimensional KMC Model
我们表明,有效的模拟Kardar-Parisi-Zhang界面生长在2 + 1维和3维动力学蒙特卡罗的热激活扩散可以实现在GPU和现代CPU。在本文中,我们将介绍使用CUDA和OpenCL在GPU上以及使用OpenCL和MPI在CPU上实现的不同结果。我们研究了不同体系结构上的运行时间和缩放行为,以找到解决统计物理和材料科学领域当前模拟问题的最佳解决方案。
2012-07-25 cond-mat.mtrl-sci cond-mat.stat-mech cs.DC
TREES: A CPU/GPU Task-Parallel Runtime with Explicit Epoch Synchronization
我们已经开发了一个任务并行运行时系统,称为TREES,这是专为CPU/GPU平台上的高性能。在具有多个CPU的平台上,Cilk的“工作优先”原则是任务并行应用程序如何实现性能的基础,但工作优先不适合GPU。我们以工作第一为基础,创建了“协同工作”原则,以解决GPU的具体优势和劣势。协同工作原则扩展了工作优先原则,指出:(a)关键路线上的间接费用应由整个系统立即支付;(b)工作间接费用应由合作支付。我们在OpenCL中实现了TREES运行时,并在CPU/GPU平台上对TREES应用程序进行了实验评估。
2016-08-01 cs.DC cs.OS cs.PL
A Benchmark Set of Highly-efficient CUDA and OpenCL Kernels and its Dynamic Autotuning with Kernel Tuning Toolkit
与性能相关的源代码参数的自动调优允许在没有硬编码优化的情况下自动调优应用程序,从而有助于保持性能的可移植性。在本文中,我们介绍了一个基准集的10个自动可调内核的重要计算问题,在OpenCL或CUDA实现。使用我们的内核调优工具包,我们表明,通过自动调优,大多数内核在各种GPU上都达到了接近峰值的性能,并且在CPU和Xeon Phis上的性能优于基准实现。我们的评估还表明,自动调优是性能可移植性的关键。除了离线调优之外,我们还引入了在应用程序运行时对代码优化参数的动态自动调优。通过动态调优,Kernel Tuning Toolkit使应用程序能够在运行时根据需要(例如,当输入数据更改时)重新调优性能关键型内核。虽然人们普遍认为,自动调整空间往往是太大,在应用程序运行时搜索,我们表明,这是不一定的情况下,调整空间的合理设计。我们的许多内核都达到了接近峰值的性能,具有中等大小的调优空间,可以在运行时以可接受的开销进行搜索。最后,我们展示了如何动态性能调整可以集成到一个现实世界的应用程序从冷冻电子显微镜域。
2020-02-28 cs.DC
GPU First -- Execution of Legacy CPU Codes on GPUs
本文提出名为“GPU First”的新型编译方案,无需修改源码即可自动将传统CPU应用编译为GPU代码,通过部分libc GPU实现或远程过程调用解析库函数,在多个基准测试中实现高达14.36倍加速,有效指导大型传统应用的GPU移植。
2023-06-26 cs.DC
Black-Scholes Option Pricing on Intel CPUs and GPUs: Implementation on SYCL and Optimization Techniques
本文针对Black-Scholes期权定价问题,基于SYCL语言开发高性能可移植代码,提出CPU与GPU适配的优化方案,验证其性能接近优化后C++代码,为同类代码移植提供参考。
2024-07-10 cs.DC cs.MS cs.PF
Parallel Cholesky Factorization for Banded Matrices using OpenMP Tasks
针对放射治疗计划等数值优化场景中带状矩阵Cholesky分解的性能瓶颈,提出基于OpenMP任务的多线程分解方法,在多款Intel CPU上性能优于或持平于Intel MKL,最高提升约26%。
2023-05-08 cs.DC cs.NA math.NA
Unified schemes for directive-based GPU offloading
针对OpenACC和OpenMP target在GPU卸载中的互补优缺点,开发仅含头文件的库Solomon,统一两者接口并提供三种符号以降低学习和实现成本,支持多厂商GPU,已开源且在N体模拟等场景验证。
2024-11-28 astro-ph.IM cs.DC cs.PF
Performance Analysis of an Astrophysical Simulation Code on the Intel Xeon Phi Architecture
我们已经开发了天体物理模拟程序XFLAT来研究超新星中的中微子振荡。XFLAT旨在通过MPI、OpenMP和SIMD指令(矢量化)利用多级并行性。它可以在基于英特尔多集成核心架构(MIC)的CPU和至强融核协处理器上运行。我们分析了XFLAT在仅使用CPU、仅使用Xeon Phi以及同时使用CPU和Xeon Phi的配置上的性能。我们还研究了I/O和XFLAT的多节点性能对德克萨斯州高级计算中心(TACC)配备Xeon Phi的Stampede超级计算机的影响。
2015-10-07 cs.CE 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
High-Performance GPU-to-CPU Transpilation and Optimization via High-Level Parallel Constructs
虽然并行性仍然是性能的主要来源,但架构实现和编程模型会随着每一代新硬件而变化,这通常会导致成本高昂的应用程序重新设计。大多数用于性能可移植性的工具都需要手动和昂贵的应用程序移植到另一个编程模型。我们提出了一种替代方法,自动翻译程序写在一个编程模型(CUDA),到另一个(CPU线程)的基础上Polygeist/MLIR。我们的方法包括一个表示的并行结构,允许传统的编译器转换应用透明,无需修改,并使并行特定的优化。我们通过编译和优化CUDA Rodinia多核CPU基准套件来评估我们的框架,并实现了76%的几何加速比。此外,我们还展示了PyTorch的CUDA内核如何在仅CPU的超级计算机Fugaku上高效运行和扩展,而无需用户干预。我们的PyTorch兼容性层使用了编译的CUDA PyTorch内核,比PyTorch CPU原生后端的性能高出2.7 $\times$。
2022-07-01 cs.DC cs.PL
Accelerating quantum many-body configuration interaction with directives
多费米子动力学-核(Many-Fermion Dynamics-nuclear,简称MFDn)是一种用于核结构计算的组态相互作用(CI)代码。它是一个独立于平台的Fortran 90代码,使用混合MPI+X编程模型。对于CPU平台,该应用程序具有用于共享内存并行性的健壮且优化的OpenMP实现。作为NERSC最新Perlmutter系统的NESAP应用程序就绪计划的一部分,MFDn已经更新以利用加速器。目前的主流GPU端口基于OpenACC。在这项工作中,我们描述了创建一个高效的GPU实现的一些关键挑战。此外,我们还比较了AMD和NVIDIA GPU上对OpenMP和OpenACC的支持。
2021-10-20 cs.CE cs.DC cs.MS
ParaCodex: A Profiling-Guided Autonomous Coding Agent for Reliable Parallel Code Generation and Translation
Technion – Israel Institute of Technology(以色列理工学院);Argonne National Laboratory(阿贡国家实验室);Code Metal;Stanford University(斯坦福大学)
ParaCodex是一种基于性能分析的自主编码代理,通过分阶段热点分析、显式数据规划和正确性门控,实现高效并行代码生成与翻译,显著提升GPU性能。
2026-01-07 cs.AI cs.DC
Portable Programming Model Exploration for LArTPC Simulation in a Heterogeneous Computing Environment: OpenMP vs. SYCL
本研究在HEP-CCE项目下,探索OpenMP和SYCL作为可移植编程模型,将Wire-Cell Toolkit中的LArTPC模拟移植到多核CPU及NVIDIA和AMD GPU上,并展示了性能基准测试结果。
2023-04-04 cs.DC hep-ex physics.comp-ph
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
Subdomain Deflation Combined with Local AMG: a Case Study Using AMGCL Library
Kazan Branch of Joint Supercomputer Center, Russian Academy of Sciences(俄罗斯科学院联合超级计算中心喀山分院);Kazan Federal University(喀山联邦大学);Universitat Politècnica de Catalunya (UPC)(加泰罗尼亚理工大学);CIMNE — Centre Internacional de Mètodes Numèrics en Enginyeria(国际数值工程研究中心)
本文提出了一种结合子域消元方法和局部代数多重网格的方法,作为可扩展的分布式内存预条件子程序,用于求解大规模线性方程组。该算法的实现作为开源AMGCL库的一部分提供给社区,旨在解决同质(仅CPU)和异构(CPU/GPU)系统,分别采用混合MPI/OpenMP方法和MPI、OpenMP和CUDA的组合。使用OpenMP可减少MPI进程数量,从而减少消元方法的通信开销,并提高预条件子程序的弱标度性和强标度性。通过标量、泊松型系统以及来自纳维-斯托克斯方程离散化的非标量问题的例子来评估所实现算法的性能。还提供了与基于已知Trilinos ML包的传统全局AMG预条件子程序的比较。
2018-10-26 cs.DC cs.MS cs.NA
2D Image Convolution using Three Parallel Programming Models on the Xeon Phi
图像卷积被广泛用于锐化、模糊和边缘检测。在本文中,我们回顾了两种常见的算法卷积的二维图像的一个可分离的内核(过滤器)。在使用循环展开和SIMD向量化优化朴素代码之后,我们选择具有更好性能的算法作为并行化的基线。然后,我们比较了在英特尔至强融核上使用OpenMP、OpenCL和GPRM实现的优化代码的并行性能。我们还测量优化技术的效果,并演示它们如何影响顺序和并行性能。除了比较代码的复杂性,以及所选择的并行编程模型的性能,我们调查的影响,并行化技术,在GPRM的任务聚集。
2017-11-27 cs.DC cs.PL
Accelerating Fortran Codes: A Method for Integrating Coarray Fortran with CUDA Fortran and OpenMP
本研究提出融合Intel Coarray Fortran、Nvidia CUDA Fortran与OpenMP的并行编程方法,优化内存管理、CPU-GPU亲和性等,经并行泊松求解器验证,其性能与MPI相近且更易实现,可助力新老代码高效迁移至并行计算。
2024-09-03 astro-ph.IM astro-ph.SR cs.DC
Accelerating Matrix Multiplication: A Performance Comparison Between Multi-Core CPU and GPU
本文在消费级异构平台上比较顺序 C++、OpenMP 多核 CPU 与带共享内存优化的 CUDA GPU 矩阵乘法,证明 GPU 在大矩阵上可获得最高约593倍加速。
2025-07-26 cs.DC
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
Proposal of Automatic Offloading for Function Blocks of Applications
当使用CPU以外的异构硬件时,OpenCL等技术技能的障碍很高。在此基础上,我提出了环境自适应软件,可以根据要放置的硬件自动转换,配置和高性能操作一次编写的代码。部分卸载到GPU之前是自动化的。在本文中,我提出并评估了一种自动提取方法,适当的卸载目标循环语句的源代码作为卸载到FPGA的第一步。我评估所提出的方法在多个应用程序的有效性。
2020-04-21 cs.DC
Parallel FFTW on RISC-V: A Comparative Study including OpenMP, MPI, and HPX
本文在 64 核 RISC-V 与 x86-64 上对比 FFTW 的 MPI、OpenMP 并行扩展及 HPX-FFT 内存优化,揭示 8 倍性能差距与不同规划策略影响。
2025-06-10 cs.DC cs.ET
Computing Treewidth on the GPU
我们提出了一种在GPU上计算图的树宽的并行算法。我们在OpenCL中实现了该算法,并对其性能进行了实验评估。我们的算法是基于一个$O^*(2^{n})$的时间算法,探讨消除排序的图形使用Held-Karp一样的动态规划方法。我们使用Bloom过滤器来检测重复的解决方案。GPU编程提出了独特的挑战和限制,例如对内存使用的限制以及限制分支发散的需要。我们尝试各种优化,看看是否有可能解决这些问题。与在CPU上运行相同的算法相比,我们实现了非常大的速度提升(高达$77\times$)。
2017-09-28 cs.DC
A Massive Data Parallel Computational Framework for Petascale/Exascale Hybrid Computer Systems
异构系统在高性能计算(HPC)系统上变得越来越普遍。即使使用像CUDA和OpenCL这样的工具,在GPU上获得最佳性能也是一项重要的任务。简化此任务的方法包括Merge(用于异构多核系统的基于库的框架),Zippy(用于在多个GPU上并行执行代码的框架),BSGP(用于GPU上通用计算的新程序设计语言)和CUDA-lite(基于注释转换代码的CUDA增强)。此外,正在努力改进编译器工具,以实现GPU仿射循环嵌套的自动并行化和优化,以及将OpenMP并行代码自动转换为CUDA。在本文中,我们提出了一种替代方法:一个新的计算框架的大规模数据的并行科学代码的应用程序,适用于这样的千万亿次/亿亿次混合动力系统的高度可扩展的仙人掌框架的发展。作为其实用性的第一个非平凡的演示,我们成功地开发了一个新的3D CFD代码,实现了改进的性能。
2012-01-10 cs.DC
Framework for the hybrid parallelisation of simulation codes
编写高效的混合并行代码是乏味的,容易出错的,并且需要并行编程和多线程的良好知识,例如MPI和OpenMP。因此,我们提出了一个框架,它是基于作业模型,允许用户将他的顺序代码与可管理的努力和代码修改,以并行执行的集群或超级计算机从现代多核CPU。该框架的主要应用领域是工程学科的模拟代码,因为这些代码在许多情况下仍然是顺序的,并且由于它们的内存和运行时间要求,它们是并行化的突出候选者。
2018-07-01 cs.DC
A fully parallel, high precision, N-body code running on hybrid computing platforms
我们提出了一个新的实现的数值积分的经典,引力,N体问题的基础上的高阶厄米积分计划块时间步长,直接评估的粒子-粒子力。此代码(称为HiGPU)的主要创新是其完全并行化,在多核中央处理器的使用中利用了OpenMP和MPI,以及用于托管图形处理器的计算统一设备架构(CUDA)或OpenCL。我们在意大利超级计算联盟CINECA提供的超级计算机IBM iDataBase DX 360 M3 Linux Infiniband Cluster中使用多达256个GPU测试了代码的性能和准确性,N值高达800万。我们能够跟踪一个800万个物体的系统的进化,只需要几次交叉,这是以前直接求和代码无法完成的任务。科学界可免费获得该守则。
2012-07-11 astro-ph.IM cs.DC physics.comp-ph
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
The electromagnetic waves propagation in unmagnetized plasma media using parallelized finite-difference time-domain method
时域有限差分法(FDTD)是研究电磁波在等离子体介质中传播的常用方法。然而,对于计算量大且复杂的电磁问题,时域有限差分法可能会带来额外的运行时间。幸运的是,FDTD方法易于并行化。此外,GPU由于其独特的SPMD(单程序多数据)体系结构而被广泛应用于并行计算。本文介绍了非磁化等离子体的并行Runge-Kutta指数时间差分格式FDTD(RKETD)方法在GPU上的实现。给出了并行RKETD-FDTD方法的详细流程。通过计算一维非磁化等离子体平板的反射系数和透射系数,验证了该方法在GPU上的并行计算精度和加速性能。结果表明,并行RKETD-FDTD方法的数值精度与CPU上实现的程序的数值精度一致。与仅基于CPU的串行RKETD-FDTD方法相比,计算效率有了很大的提高。在同一台主机上,比较了基于CUDA的GPU并行程序、基于OpenMP(Open Multi-Processing)的CPU并行程序和单CPU串行程序的性能。与串行程序相比,两种并行程序都取得了较好的效果,而基于GPU的并行程序取得了更好的效果。
2018-04-12 cs.CE cs.DC physics.comp-ph
Domain-Specific Acceleration and Auto-Parallelization of Legacy Scientific Code in FORTRAN 77 using Source-to-Source Compilation
University of Glasgow(格拉斯哥大学)
本文提出一种源到源编译方法,通过整体程序分析自动将单线程FORTRAN 77代码转换为OpenCL加速程序,实现代码的并行化。
2017-11-13 cs.DC cs.MS cs.NA