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
The Feasibility of Using OpenCL Instead of OpenMP for Parallel CPU Programming
OpenCL和CUDA是用于对GPGPU进行编程的主要工具之一。然而,它也允许在多核CPU上运行相同的代码,使其成为历史悠久的OpenMP的竞争对手。在本文中,我们比较了OpenCL和OpenMP在CPU上开发和运行计算量大的代码时的情况。编程和性能方面的方便性都被考虑在内。由于与GPU不同,不涉及内存复制操作,因此我们的比较测量了OpenCL和OpenMP的代码生成质量以及线程管理效率。我们在两种情况下评估这些开发工具的性能:大量的短期运行的计算繁重的并行代码执行,当更多的线程管理被执行,和少量的长期运行的并行代码执行,当需要较少的线程管理。结果表明,OpenCL和OpenMP在两种情况下各赢一场。我们认为,虽然使用OpenMP需要较少的设置,OpenCL可以是一个可行的替代OpenMP从性能的角度来看,特别是当一个高数量的线程调用是必需的。我们还提供了从OpenMP迁移到OpenCL时需要注意的一些潜在陷阱。
2015-03-23 cs.DC cs.PF
High Performance Computing with FPGAs and OpenCL
在这项工作中,我们评估了FPGA加速HPC工作负载的潜力,作为GPU的一种更节能的替代方案。使用高级综合和大量优化技术,我们证明了FPGA可以实现比CPU更好的性能,并且在典型的HPC工作负载中比CPU和GPU都具有更好的能效。此外,我们表明,对于模板计算的特定情况,FPGA独特的架构优势使其能够超越高端CPU,Xeon Phi和GPU设备。与以前的工作不同,我们的基于FPGA的模板加速器结合了空间分块与时间分块,以实现高性能,而不限制输入大小。凭借对高阶模板的支持,我们迄今为止在任何阶数的2D和3D模板计算中实现了最高的单FPGA性能。
2019-09-15 cs.DC
High performance computing on Android devices -- a case study
用于低功率设备的高性能计算可以用于加速使用比能量效率不是问题的计算机更低时钟速率的处理器上的计算。在本试验中,我们比较了Android设备的不同高性能技术,特别关注GPU的使用。虽然没有官方支持,但OpenCL框架可以在Android平板电脑上使用。为了比较不同的并行编程范式,选择了一个可以很容易地与所有框架实现的基准。Mandelbrot算法是计算密集型的,并且具有非常少的输入和输出操作。该算法已在Java,C,C与汇编程序,C与SIMD汇编程序,C与OpenCL和标量指令和C与OpenCL和向量指令中实现。这些实现已针对Android当前支持的所有架构进行了测试。使用SIMD和OpenCL可以实现高加速比,尽管两者的实现都不简单。使用GPU的应用程序必须考虑到用户可以随时暂停它们。在Android设备的GPU上使用OpenCL框架时,软件开发人员可以获得与现代高速CPU相当的计算能力。
2021-12-09 cs.DC
Deep Learning and Machine Learning with GPGPU and CUDA: Unlocking the Power of Parallel Computing
Georgia Institute of Technology(佐治亚理工学院);Indiana University(印第安纳大学);Xi’an Jiaotong-Liverpool University(西交利物浦大学);University of Hawaii(夏威夷大学);Kyoto University(京都大学);Emory University(埃默里大学);Sichuan University(四川大学);AppCubic;Rutgers University(罗格斯大学);University of Wisconsin-Madison(威斯康星大学麦迪逊分校);Purdue University(普渡大学);National Taiwan Normal University(台湾师范大学)
本研究探讨GPGPU和CUDA在深度学习与机器学习中的并行计算应用,分析架构特性、优化策略及多框架实践案例,为不同经验从业者提供综合指南,助力释放GPU并行计算潜力以推动AI发展。
2025-11-19 cs.AR cs.DC
Dwarfs on Accelerators: Enhancing OpenCL Benchmarking for Heterogeneous Computing Architectures
出于性能和能效的原因,高性能计算(HPC)硬件正变得越来越异构。OpenCL框架支持跨各种计算设备的可移植编程,并在下一代加速器编程中获得影响力。为了在一系列应用中表征这些设备的性能,需要一个多样化的、可移植的和可配置的基准测试套件,OpenCL是一个有吸引力的编程模型。我们提出了一个扩展和增强版本的OpenDwarfs OpenCL基准测试套件,重点放在应用程序的健壮性,策展的额外的基准测试,更加强调结果的正确性和选择的问题大小。初步结果和分析报告了八个基准代码在一组不同的架构-三个英特尔CPU,五个Nvidia GPU,六个AMD GPU和一个至强Phi。
2018-05-10 cs.DC cs.PF
GPU Computing with Python: Performance, Energy Efficiency and Usability
在这项工作中,我们研究了使用Python开发在GPU上运行的HPC代码时的性能,能效和可用性。我们调查了CUDA和OpenCL之间的性能和能效的可移植性; GPU之间的世代;以及低端,中端和高端GPU之间的可移植性。我们的研究结果表明,使用Python对我们的应用程序的影响可以忽略不计,此外,CUDA和OpenCL应用程序调整到同等水平,在许多情况下可以获得相同的计算性能。我们的实验表明,一般来说,不同GPU之间的性能差异比使用CUDA和OpenCL之间的差异更大。我们还表明,调整性能是一个很好的方式调整能源效率,但具体的调整需要获得最佳的能源效率。
2019-12-05 cs.DC
Extending the ARC Information Providers to report information on GPU resources
图形处理单元上的通用计算(GPGPU)已被引入许多科学研究领域,例如生物信息学、密码学、计算机视觉和深度学习。然而,高能物理(HEP)社区的计算模型仍然主要围绕传统的CPU资源。轨迹拟合、粒子重建和蒙特卡罗模拟等任务可以从高吞吐量GPGPU计算模型中受益匪浅,从而简化分析周转中的瓶颈。本技术说明描述了在GRID中间件中实现集成GPU发现机制以促进GPGPU的基础。
2019-07-22 cs.DC hep-ex
LLMPerf: GPU Performance Modeling meets Large Language Models
FPT Software AI Center(FPT软件人工智能中心);FPT University(FPT大学)
本文提出LLMPerf,将LLM用作OpenCL GPU程序的性能估计器,并通过大规模数据集验证其能力、困难与预测误差。
2025-03-14 cs.DC cs.LG cs.PF
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
Towards Green Computing: A Survey of Performance and Energy Efficiency of Different Platforms using OpenCL
在考虑不同的硬件平台时,不仅解决方案的时间很重要,而且达到解决方案所需的能源也很重要。这不仅适用于电池供电和移动设备,也适用于高性能并行集群系统,因为在功耗和冷却方面存在财务和实际限制。硬件和软件的最新发展使程序员能够在一系列不同的设备上运行相同的代码,从而产生了异构计算的概念。这些设备中的许多针对某些类型的应用进行了优化。为了展示差异,并给出不同架构对特定问题的适用性的基本展望,跨平台OpenCL框架被用来比较解决方案的时间和能量。从ARM处理器到服务器CPU以及消费者和企业级GPU的大量设备都已被用于应用研究应用中的不同基准测试用例。虽然结果显示了GPU在运行时间和能效方面与CPU相比的整体优势,但ARM设备在大规模并行系统中的某些应用中表现出了潜力。这项研究还强调了OpenCL如何在许多不同的系统和硬件平台上使用相同的代码库,而无需特定的代码调整。
2020-03-08 cs.DC cs.PF
DNA sequence alignment: An assignment for OpenMP, MPI, and CUDA/OpenCL
本文介绍一项并行计算课程作业,以多模式精确DNA序列比对的暴力解法为载体,训练学生用OpenMP、MPI及CUDA/OpenCL实现并行化,并覆盖竞态条件、归约、通信和推测计算终止等关键概念。
2024-09-09 cs.DC
Execution of Compound Multi-Kernel OpenCL Computations in Multi-CPU/Multi-GPU Environments
当前的计算系统本质上是异构的,其特征在于CPU和GPU的组合。由于后者正在成为高性能计算的既定平台,重点正在转向这些混合系统作为一个整体的无缝编程。现有架构和执行模型的独特性质带来了一些挑战,因为最佳硬件配置取决于行为和工作负载。在本文中,我们解决了在多CPU/多GPU环境中执行复合,多内核,OpenCL计算。我们解决这些计算如何可以有效地调度到目标硬件,以及系统如何可以适应自己的工作量的变化,以处理和波动的CPU的负载。实验评估证明了CPU和GPU设备的联合使用所获得的性能增益,相比仅GPU执行,以及在CPU环境中使用数据局部优化。
2015-10-22 cs.DC
Low Overhead Instruction Latency Characterization for NVIDIA GPGPUs
在过去的十年中,计算机系统行业发生了转变,其中异构计算变得普遍。图形处理单元(GPU)现在存在于超级计算机到手机和平板电脑中。GPU用于图形操作以及通用计算(GPGPU),以提高计算密集型应用程序的性能。然而,超出供应商提供的未披露特性的百分比并不小。在本文中,我们介绍了一个非常低的开销和便携式的分析,揭示在GPU流水线中执行的每个指令的延迟(S)和各种存储层次结构的访问开销在微架构级别的GPU中发现。此外,我们还展示了CUDA编译器可以在各种不同的语言上执行的各种优化的影响。我们对来自五个不同代/架构的七种不同高端NVIDIA GPU进行了评估:Kepler,Maxwell,Pascal,Volta和Turing。本文的结果可以帮助架构师对这些GPU的性能有一个准确的描述,这将有助于对硬件进行准确的建模。此外,软件开发人员可以对其应用程序进行明智的优化。
2019-09-01 cs.DC cs.PF
Generating Binary Optimal Codes Using Heterogeneous Parallel Computing
最优码的生成是编码理论中的一个众所周知的问题。在文献中存在许多计算方法来寻找破纪录的代码。然而,使用串行算法生成具有长长度$n$的代码在计算上是非常昂贵的,例如,贪心算法的最坏情况时间复杂度是$\mathcal{O}(n\; 4^n)$。为了提高长代码生成的效率,我们提出并研究了一些基于通用图形处理器(GPGPU)的并行算法。本文研究了基于GPGPU-CUDA(Computed Unified Device Architecture)框架的并行贪心算法的实现,并讨论了各种优化技术对GPU代码的加速。优化并行实现的性能比串行实现快两到三个数量级以上,显示了GPGPU在编码理论应用领域的巨大潜力。
2015-07-20 cs.DC cs.IT math.IT
Characterizing Optimizations to Memory Access Patterns using Architecture-Independent Program Features
高性能计算开发人员面临着在不同架构上优化OpenCL工作负载性能的挑战。架构无关的OpenCL特性描述(AIWC)工具是Oclgrind OpenCL模拟器的一个插件,它收集OpenCL程序的指标,可用于理解和预测程序在任意给定硬件架构上的性能。然而,AIWC指标并不总是容易解释的,并不反映一些重要的内存访问模式,影响跨架构的效率。我们提出了一个新的度量并行空间局部性-内存访问同时发出的OpenCL工作项(线程)的接近度。我们实现了并行空间局部性度量的AIWC框架,并分析了矩阵乘法和扩展OpenDwarfs OpenCL基准测试的结果。在矩阵乘法的实现中观察到的并行空间局部性度量的差异反映了所执行的优化。新的度量标准可用于区分OpenDwarfs基准测试,基于影响其在各种架构上的性能的内存访问模式。向AIWC提出的改进建议将帮助HPC开发人员更好地理解复杂代码的内存访问模式,并指导针对任意硬件目标的代码优化。
2020-03-12 cs.DC
An Exploration of OpenCL for a Numerical Relativity Application
目前,人们对使用众核处理器架构(如Nvidia和AMD图形处理单元(GPU))进行科学计算有相当大的兴趣。在这项工作中,我们探讨使用开放计算语言(OpenCL)的一个典型的数值相对论应用:时域Teukolsky方程求解器(线性,双曲,偏微分方程求解器使用有限差分)。OpenCL是唯一一个与供应商无关的多平台并行计算框架,已被所有主要处理器供应商采用。因此,它允许我们编写可移植的源代码,并在各种计算硬件上运行它,并执行有意义的比较。我们的实验结果表明,通过使用多核GPU而不是多核CPU,可以相对简单地获得整体应用程序性能的数量级增益,这一事实在很大程度上与特定的硬件架构和供应商无关。我们还观察到,一个高端GPU可以匹配一个小型的,基于消息传递的CPU集群的性能。
2011-10-03 cs.DC gr-qc physics.comp-ph
SparkCL: A Unified Programming Framework for Accelerators on Heterogeneous Clusters
我们介绍了SparkCL,一个基于Java,OpenCL和Apache Spark框架的开源统一编程框架。这项工作背后的动机是将非传统的计算核心,如FPGA/GPU/APU/DSP和未来的核心类型引入主流编程使用。该框架允许在Spark框架下平等对待不同的计算设备,并引入了将计算卸载到加速设备的能力。新框架通过基于Aparapi的Java-OpenCL设备编程层和Spark编程层无缝集成到标准Spark框架中,Spark编程层包括新的内核函数类型和修改的Spark转换和动作。该框架允许单个代码库针对支持OpenCL的任何类型的计算核心,并将新的核心类型轻松集成到Spark集群中。
2015-05-05 cs.DC
Fast GPGPU Data Rearrangement Kernels using CUDA
许多高性能计算算法都是带宽有限的,因此需要最佳的数据重排内核以及它们容易集成到应用程序的其余部分。在这项工作中,我们已经建立了一个CUDA库的快速内核的一组数据重排操作。特别是,我们已经建立了通用的内核重新排列m维数据到n维,包括置换,重新排序,交错/去交错等,我们还建立了通用Stenchmark计算的内核,对一个二维数据使用模板和函子,使应用程序开发人员能够快速构建定制的高性能内核。所有构建的内核在带宽利用率方面都达到或超过了最知名的性能。
2010-11-16 cs.DC cs.GR cs.PF
Genetic Algorithm Modeling with GPU Parallel Computing Technology
提出了一种多用途遗传算法,并采用GPGPU / CUDA并行计算技术进行了设计和实现。该模型源自一个名为GAME的多核CPU串行实现,该实现已经通过专门基于机器学习范式的数据挖掘的Web应用程序资源(DAMEWARE)在天体物理学海量数据分类问题上进行了科学成功的测试和验证。由于遗传算法本质上是并行的,GPGPU计算范式提供了一个利用模型的内部训练功能,允许在处理性能和可扩展性方面进行强大的优化。
2012-11-23 astro-ph.IM cs.DC cs.NE
EngineCL: Usability and Performance in Heterogeneous Computing
异构系统已经成为当今最常见的架构之一,这要归功于它们出色的性能和能耗。然而,由于它们的异构性,它们的编程非常复杂,甚至更难以在不同设备上实现性能可移植性。本文介绍了EngineCL,一个新的基于OpenCL的运行时系统,显著简化了一个单一的大规模数据并行内核的所有设备上的异构系统的协同执行。它执行一组关于设备管理的低级任务,它们的不相交内存空间和在系统设备之间调度工作负载,同时提供分层API。EngineCL已在两个计算节点(HPC和商品系统)中进行了验证,这两个节点将六个设备与不同的架构结合在一起。实验结果表明,与OpenCL相比,它具有优异的可用性;在小于1秒的执行负载下,与原生版本相比,最大开销为2.8%,并且在较长的执行时间内趋于零;在平衡负载时,它可以达到平均0.89的效率。
2020-02-14 cs.DC
Benchmarking OpenCL, OpenACC, OpenMP, and CUDA: programming productivity, performance, and energy consumption
许多现代并行计算系统在其节点级是异构的。这样的节点可以包括通用CPU和加速器(诸如GPU或Intel Xeon Phi),其提供具有合适的能耗特性的高性能。然而,利用异构体系结构的可用性能可能具有挑战性。有各种并行编程框架(例如OpenMP、OpenCL、OpenACC、CUDA),选择适合目标上下文的框架并不简单。在本文中,我们实证研究的特点,OpenMP,OpenACC,OpenCL和CUDA的编程生产力,性能和能源。为了评估编程效率,我们使用了我们自己开发的工具CodeStat,它使我们能够确定使用特定框架并行化代码所需的代码行的百分比。我们使用我们的工具x-MeterPU来评估能耗和性能。实验使用行业标准的SPEC基准测试套件和Rodinia基准测试套件进行,用于在将英特尔至强E5处理器与GPU加速器或英特尔至强融核协处理器相结合的异构系统上进行加速计算。
2017-04-18 cs.DC cs.PF cs.PL
Executing Dynamic Data Rate Actor Networks on OpenCL Platforms
由通用处理器(GPP)和图形处理单元(GPU)组成的异构计算平台在个人移动设备和嵌入式系统中已经变得司空见惯。多年来,这些平台的编程非常繁琐,同时使用所有可用的GPP和GPU资源需要低级编程,以确保处理器之间的高效同步和数据传输。然而,在过去的几年里,出现了一些高级编程框架,这些框架使程序员能够通过抽象的方式来描述应用程序,例如Kahn进程网络,并将并行执行,数据传输和同步交给框架处理。不幸的是,即使是最先进的高级编程框架也有缺点,限制了它们对某些应用程序的适用性。本文提出了一种新的,香喷喷的编程框架,针对异构平台,并从以前的方法不同,允许GPU映射的演员有数据依赖消费的输入/生产的输出。这种灵活性对于信号处理中日益常见的可配置和自适应应用至关重要。在我们的实验中,它表明,该功能允许高达5倍的应用程序吞吐量的增加。该框架通过视频处理和无线通信领域的应用实例进行了验证。在实验中的框架相比,一个众所周知的参考框架,它表明,所提出的框架,使更高程度的灵活性和更好的吞吐量。
2016-11-10 cs.DC
Computing Treewidth on the GPU
我们提出了一种在GPU上计算图的树宽的并行算法。我们在OpenCL中实现了该算法,并对其性能进行了实验评估。我们的算法是基于一个$O^*(2^{n})$的时间算法,探讨消除排序的图形使用Held-Karp一样的动态规划方法。我们使用Bloom过滤器来检测重复的解决方案。GPU编程提出了独特的挑战和限制,例如对内存使用的限制以及限制分支发散的需要。我们尝试各种优化,看看是否有可能解决这些问题。与在CPU上运行相同的算法相比,我们实现了非常大的速度提升(高达$77\times$)。
2017-09-28 cs.DC
OpenCL/CUDA algorithms for parallel decoding of any irregular LDPC code using GPU
支持并行数据处理的多核架构的发展导致了一种范式的转变,这对通信系统产生了重大影响。本文提供了一个可扩展的并行迭代LDPC解码器的方法,在一个教程为基础的风格。该算法适用于任意非规则LDPC码的译码,不受最大节点度的限制,并包含伴随式的并行计算。这是迄今为止提出的算法的主要区别。所提出的方法可以在支持大规模并行计算的应用中实现,例如GPU或FPGA设备。最后讨论了基于OpenCL和CUDA框架的LDPC译码器的实现,并给出了性能评估。
2017-09-26 cs.DC cs.IT math.IT
OpenCL Performance Prediction using Architecture-Independent Features
OpenCL是异构高性能计算系统的一个有吸引力的模型,具有广泛的支持,从硬件供应商和显着的性能可移植性。为了支持HPC系统上的高效调度,有必要对不同计算设备上的OpenCL工作负载进行准确的性能预测,这是具有挑战性的,因为不同的计算,通信和内存访问特性会导致设备之间的性能变化。架构独立的内核表征(AIWC)工具可用于根据一组架构独立的功能来表征OpenCL内核。这项工作提出了一种方法,AIWC功能被用来形成一个模型,能够预测加速器执行时间。我们使用这种方法来预测一组37个计算内核在15个不同的设备上运行的执行时间,这些设备代表了广泛的CPU,GPU和MIC架构。预测是高度准确的,与测量的实验运行时间的平均差异仅为1.2%,并对应于9 μs到1秒的实际执行时间的错误预测,根据问题的大小。以前未遇到的代码可以被检测一次,AIWC指标嵌入内核中,以允许在整个建模设备范围内进行性能预测。结果表明,这种方法支持正确选择最合适的设备,以前未遇到的代码,这是高度相关的HPC调度设置。
2018-10-31 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
GPU backed Data Mining on Android Devices
University of Vienna(维也纳大学)
为低功耗设备上的高性能计算选择适当的编程范式可以有助于加速计算。许多Android设备都集成了GPU,尽管没有官方支持,但OpenCL框架可以在Android设备上用于处理这些GPU。OpenCL支持线程和数据并行。使用GPU的应用程序必须考虑到它们可以随时被用户或Android操作系统挂起的事实。我们已经创建了一个包装库,允许在Android设备上使用OpenCL。已经编写的OpenCL程序几乎不需要修改就可以执行。我们使用这个库比较了DBSCAN和Kmeans算法在Arm-v7平板电脑的集成GPU上的性能,以及同一设备上的其他单线程和多线程实现。我们已经研究了哪种编程范式和语言允许执行速度和能耗之间的最佳权衡。在Android设备上使用GPU for HPC有助于在偏远地区、恶劣环境条件下以及能源供应存在问题的地区执行计算密集型机器学习或数据采掘任务。
2021-12-09 cs.DC cs.LG
CUDA Leaks: Information Leakage in GPU Architectures
图形处理单元(GPU)部署在大多数现有的服务器、桌面甚至移动平台上。如今,越来越多的应用程序利用这种架构提供的高并行性来加速通用计算。这种现象被称为GPGPU计算(General Purpose GPU Computing)。这项工作的目的是发现和突出与CUDA相关的安全问题,CUDA是GPGPU计算最广泛的平台。特别是,我们提供了有关CUDA架构所面临的一组新漏洞的详细信息和概念验证,这些漏洞可能会被利用来导致严重的信息泄漏。根据基于可靠工程安全性的(详细)直觉,我们针对最后两代CUDA设备:费米和开普勒进行了几次实验。我们发现,这两个家庭确实存在信息泄露漏洞。特别是,两种架构之间共享一些漏洞,而另一些则是开普勒架构的特质。作为一个案例研究,我们报告的影响,这些漏洞之一的GPU实现的AES加密算法。我们还建议软件补丁和替代方法来解决所提出的漏洞。据我们所知,这是第一个工作表明,在CUDA中的信息泄漏是可能的,只使用标准的CUDA指令。我们希望我们的工作为该领域的进一步研究铺平道路。
2013-07-15 cs.CR cs.DC
Study and evaluation of an Irregular Graph Algorithm on Multicore and GPU Processor Architectures
不规则应用是对片上多处理器(CMP)的性能可扩展性提出重大挑战的计算应用领域之一。这样的应用程序具有非常少的计算和不可预测的存储器访问模式,使得它们与计算受限的应用程序相比是内存受限的。由于处理器和存储器性能之间的差距继续存在,难以隐藏和减少这种差距是导致这些应用程序在CMP上性能不佳的重要因素之一。本论文的目标是克服许多这样的挑战,在性能加速的不规则图算法称为三元组普查。我们在两种截然不同的芯片多处理器上加速了Triad Census算法:双插槽英特尔至强多核(每个插槽8个硬件线程)和240处理器内核的NVIDIA Tesla C1060 GPGPU(每个内核128个硬件线程)。在英特尔多核至强系统上获得的实验结果显示,对于真实世界的图形数据集,性能加速(相对于基线顺序)最大为56倍,平均为33倍,最小为8.3倍。在NVIDIA Tesla C1060 GPGPU上,我们能够几乎平等地匹配多核结果-58.4倍最大,32.8倍平均和4.2倍最小加速比相对于基线序列。在原始性能方面,对于称为Patents网络的图形数据集,我们在英特尔至强多核(16 hw线程)上的结果比之前在Cray XMT(16 hw线程)上的结果快1.27倍,而在GPGPU上实现的结果相对较慢(0.72倍)。据我们所知,该算法只在超级计算机级计算机Cray XMT上进行了加速,并且没有工作证明该算法在相对较低成本…
2016-03-08 cs.DC cs.PF
Prediction of Performance and Power Consumption of GPGPU Applications
本研究针对GPU应用性能与功耗优化需求,提出基于PTX代码静态分析的CUDA内核执行时间预测模型和机器学习功耗预测模型,并用多维度数据集及配套工具验证了其作为GPU设计辅助工具的有效性。
2023-05-03 cs.DC cs.PF
ParEval-Repo: A Benchmark Suite for Evaluating LLMs with Repository-level HPC Translation Tasks
针对GPGPU架构多样导致的代码移植成本高问题,本文提出基准框架ParEval-Repo,用于评估大语言模型跨执行模型翻译仓库级代码的效能,实验发现LLM可翻译小型科学应用,但扩展到大型代码库仍存在构建系统与跨文件依赖的挑战。
2025-09-05 cs.DC
A GPU-Based Genetic Algorithm for the P-Median Problem
p-median问题是一个著名的NP难题。在文献中已经提出了许多算法来解决这个问题。本文利用GPGPU并行计算平台,提出了一种在Cuda中实现的基于p-中位数问题伪布尔公式的新遗传算法。我们已经测试了我们的算法的有效性,使用特斯拉K40(2880 Cuda核心)290个不同的基准实例从OR库,离散位置问题基准库,并在最近的出版物中介绍的基准。该算法成功地找到了最佳的解决方案,除了两个或库的实例,即pmed 30和pmed 40,其中优于99.9%的近似值。
2016-10-31 cs.DC
A Reconfigurable Low Power High Throughput Architecture for Deep Network Training
University of Dayton(代顿大学)
通用计算系统用于各种各样的应用。这些系统对灵活性的广泛支持限制了它们的能效。神经网络(包括深度网络)广泛用于信号处理和模式识别应用。在本文中,我们提出了一个多核架构的深度神经网络为基础的处理。忆阻器交叉开关用于提供神经网络的低功率高吞吐量执行。该系统具有培训和识别(新输入的评估)功能。该系统可用于分类,降维,特征提取,和异常检测应用。专门架构的系统级面积和功耗优势与NVIDIA Telsa K20 GPGPU进行了比较。我们的实验评估表明,所提出的架构可以提供高达五个数量级以上的能源效率比GPGPU的深度神经网络处理。
2016-06-15 cs.AR cs.DC cs.LG
A Comparison of the Performance of the Molecular Dynamics Simulation Package GROMACS Implemented in the SYCL and CUDA Programming Models
本文针对多种标准GROMACS基准,在P100、V100和A100三种Nvidia GPU上比较SYCL与CUDA版本GROMACS的性能,以评估跨厂商异构编程模型。
2024-06-14 cs.DC cs.PF
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
Teaching Parallel Programming Using Java
本文介绍了"应用并行计算"课程讲授的最后一年软件工程本科生在2014年春季在巴基斯坦NUST的概述。该课程的主要目标是介绍实用的并行编程工具和技术,用于共享和分布式内存并发系统。该课程的一个独特之处是Java被用作主要的程序设计语言。课程分为三个部分。第一部分介绍了用于共享内存系统的并行编程技术,包括多核和对称多处理器(SMP)系统。在本节中,我们将Java线程作为一种可行的编程API来介绍。第二部分专门介绍用于分布式内存系统(包括计算机集群和网络)的并行编程工具。我们使用MPJ-一个Java MPI库-来进行本节的编程作业和实验工作。第三节也是最后一节涵盖了高级主题,包括使用Hadoop的MapReduce编程模型和图形处理单元上的通用计算(GPGPU)。
2014-08-27 cs.CY cs.DC
Contention-Aware GPU Partitioning and Task-to-Partition Allocation for Real-Time Workloads
为了满足时间约束,现代实时的【形】应用需要大规模并行加速器,例如通用图形处理单元(GPGPU)。一代又一代,在新的GPU架构中可用的计算集群的数量正在稳步增加,因此,现在必须研究合适的调度方法。这样的调度方法涉及在GPU计算集群内映射不同的和并发的计算内核,因此将GPU计算集群分组到可并行的分区中。在本文中,我们提出了新的技术来定义GPU分区,这使我们能够定义合适的任务到分区的分配机制,其中任务是GPU计算内核具有不同的时序要求。这种机制将考虑GPU内核在重叠时间窗口中运行时所经历的干扰。因此,一个有效的和简单的方法来量化这种干扰的大小。我们证明了所提出的方法对经典技术,认为GPU作为一个单一的,不可分割的资源的效率。
2021-05-21 cs.DC cs.SY eess.SY
Transformations of High-Level Synthesis Codes for High-Performance Computing
空间计算体系结构承诺在性能和能源效率方面的重大进展,目前在大规模计算系统中采用的传统的加载/存储设备。采用C++和OpenCL等语言的高级综合(HLS)大大提高了程序员在设计此类平台时的生产力。虽然这使得更广泛的受众能够针对空间计算架构,但由于硬件设计的根本不同方面,例如深度管道,分布式内存资源和可扩展路由的编程,传统软件设计中已知的优化原则不再足以实现高性能代码。为了缓解这一问题,我们提出了一系列优化转换HLS,针对高性能计算(HPC)应用程序的可扩展和高效的架构。我们系统地识别转换的类别(流水线,可扩展性和内存),它们对HLS代码和最终硬件的影响的特征(例如,增加数据重用或资源消耗),以及每个转换可以针对的目标(例如,解决接口争用或增加并行性)。我们将展示如何使用这些可以有效地利用流水线,片上分布式快速存储器,片上可编程逻辑,允许大规模并行架构。为了量化各种转换的效果,我们涵盖了HPC内核的样本集的优化过程,作为开源参考代码提供。我们的目标是建立一个通用的工具箱,以指导性能工程师和编译器工程师利用HLS空间计算架构提供的性能潜力。
2020-11-23 cs.DC cs.PL
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
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
Contract-Based General-Purpose GPU Programming
使用GPU作为通用处理器,通过为大量且不断增长的算法集提供台式机上的大规模数据并行化,彻底改变了并行计算。然而,广泛采用的一个障碍是编程的困难和实现良好性能所需的硬件的低级控制。本文提出了一个编程库,SafeGPU,旨在达到程序员的生产力和性能之间的平衡,使GPU的数据并行操作可从一个经典的面向对象的程序设计语言。该解决方案与合同设计方法相结合,通过将可执行程序规范嵌入到程序文本中,提高了对功能程序正确性的信心。我们表明,我们的库导致模块化和维护代码,可访问GPGPU的非专家,同时提供的性能是与手写的CUDA代码。此外,运行时合约检查是可行的,因为合约可以在GPU上执行。
2015-08-21 cs.DC cs.SE
Parallel Sub-Structuring Methods for solving Sparse Linear Systems on a cluster of GPU
本文的主要目的是分析子结构方法并行求解由有限元、有限体积和有限差分等偏微分方程离散化所产生的矩阵稀疏线性系。结合通用图形处理器(GPGPU)上的成功应用,提出了一种多GPU和CPU混合的子结构算法。GPU计算与CUDA一起用于加速在每个处理器上执行的操作。数值实验已经进行了一组矩阵所产生的工程问题。我们比较了C+MPI在经典CPU集群上的实现和C+MPI+CUDA在GPU集群上的实现。性能比较表明,使用CUDA子结构方法的速度提高了19倍,在双精度。
2021-08-08 cs.DC cs.MS cs.NA
Locally-Oriented Programming: A Simple Programming Model for Stencil-Based Computations on Multi-Level Distributed Memory Architectures
用于高性能计算的新兴混合加速器架构通常适合于使用数据并行编程模型。不幸的是,这些体系结构的程序员面临着陡峭的学习曲线,其经常需要学习新的语言(例如,OpenCL)。此外,这些机器的集群的存储器组织的分布式(并且经常是多级)性质提供了额外的复杂性。本文介绍了初步的工作,研究如何编程与本地定位可以提供更简单的访问加速器架构。面向本地的编程模型对于需要应用模板或卷积内核的算法的解决方案特别有用。在这种编程模型中,程序员通过仅修改单个数组元素(称为局部元素)来编写算法,但对局部元素周围的小型子数组具有只读访问权限。我们演示了如何一个面向本地的编程模型可以通过使用源到源程序转换作为语言扩展。
2015-02-12 cs.DC cs.PL
Closing the Performance Gap with Modern C++
在通往Exascale的道路上,程序员面临着越来越大的挑战,即必须从同一代码库支持多种硬件架构。与此同时,随着硬件架构变得越来越多样化,代码的可移植性和性能越来越难以实现。当今的异构系统通常包括两个或更多个完全不同且不兼容的硬件执行模型,诸如GPGPU、SIMD向量单元和通用核,其常规上必须使用表示非重叠编程模型的单独工具链来编程。最近工业界和更广泛的社区对C++语言的兴趣复苏,在并发和并行领域激发了大量的标准化建议和技术规范。这包括最近越来越多的讨论,围绕需要一个统一的,更高层次的抽象和编程模型的并行性在C++标准的目标异构和分布式计算。这种抽象应该与现有的、已经标准化的语言和库功能完美融合,但也应该足够通用,以支持未来的硬件开发。在本文中,我们提出了这样一个更高层次的编程抽象的并行性在C++,其目的是使代码和性能的可移植性在广泛的体系结构和各种类型的并行性的结果。我们提出并比较从运行著名的STREAM基准移植到我们的更高级别的C++抽象与相应的结果从运行它本机获得的性能数据。我们表明,我们的抽象,使性能至少一样好的可比基线基准,同时提供一个统一的编程API的所有比较的目标体系结构。
2022-05-30 cs.DC cs.PL