Kernel Launcher: C++ Library for Optimal-Performance Portable CUDA Applications
图形处理单元(GPU)在科学计算中已经变得无处不在。然而,由于需要仔细的代码调优,编写高效的GPU内核可能具有挑战性。为了自动探索内核优化空间,已经提出了几种自动调优工具,如Kernel Tuner。不幸的是,这些现有的自动调优工具通常不关心将调优结果集成回应用程序,这给应用程序开发人员带来了重大的实现和维护负担。在这项工作中,我们提出了内核启动器:一个易于使用的C++库,简化了高度调优的CUDA应用程序的创建。使用Kernel Launcher,程序员可以捕获内核启动,针对不同的设置调优捕获的内核,并使用运行时编译将调优结果集成回应用程序中。为了展示Kernel Launcher的适用性,我们考虑了真实世界的计算流体动力学代码,并针对不同的GPU,输入域和精度调整其内核。
2023-03-22 cs.DC
DNA sequence alignment: An assignment for OpenMP, MPI, and CUDA/OpenCL
本文介绍一项并行计算课程作业,以多模式精确DNA序列比对的暴力解法为载体,训练学生用OpenMP、MPI及CUDA/OpenCL实现并行化,并覆盖竞态条件、归约、通信和推测计算终止等关键概念。
2024-09-09 cs.DC
Block-Parallel IDA* for GPUs (Extended Manuscript)
Graduate School of Arts and Sciences(艺术与科学研究生院);The University of Tokyo(东京大学)
我们研究了基于GPU的迭代深化A*(IDA*)的并行化。我们表明,简单的基于线程的并行化技术,以前提出的大规模并行SIMD处理器执行不佳,由于翘曲发散和负载不平衡。我们提出了块并行IDA*(BPIDA*),它将子树的搜索分配给块(一组可以访问快速共享内存的线程)而不是线程。在15-puzzle上,与在Xeon E5-2670内核上高度优化的顺序IDA* 实现相比,在具有1536个CUDA内核的NVIDIA GRID K520上的BPIDA* 实现了4.98的加速比。
2017-05-08 cs.AI cs.DC
GPU acceleration of non-equilibrium Green's function calculation using OpenACC and CUDA FORTRAN
本文针对Kadanoff-Baym方程求解非平衡格林函数的高计算复杂度问题,在CPU和GPU平台上实现了高效并行算法,采用MPI/OpenMP、MPI/OpenACC及MPI/CUDA FORTRAN三种方案,并通过优化策略使GPU版本获得显著加速和良好扩展性。
2025-05-26 cs.DC
Efficient hybrid topology optimization using GPU and homogenization based multigrid approach
我们提出了一种新的混合拓扑优化算法的基础上多重网格的方法,结合了CPU的并行化策略,使用OpenMP和现代图形处理单元(GPU)的多线程能力。除此之外,使用均匀化策略已经实现了在存储器需求方面的显著计算效率。该算法与MATLAB的通用计算平台相结合,方便用户使用和定制。使用优化的几何多重网格方法以及CUDA并行化,使计算时间比当前最先进的实现方式快一个数量级,已经解决了状态方程的检查重复解。多重网格算法中辅助矩阵的实时计算和插值算法中均匀化策略的修改消除了GPU的内存限制。GPU的存储层次结构也被用于进一步优化实现。所有这些使得涉及数亿个三维砖元件的结构的解能够在标准台式计算机或工作站中完成。通过设计相关载荷和多材料的算例验证了该算法的性能,结果表明该算法具有良好的性能和可扩展性。
2022-01-27 cs.DC
Simplifying Parallelization of Scientific Codes by a Function-Centric Approach in Python
本文的目的是展示如何使用一个单独的Python代码薄层来并行化现有的科学软件,其中所有的并行通信都是实现的。我们提供了具体的例子,这些层的代码,这些例子可以作为模板并行化一系列广泛的串行科学代码。使用Python进行并行化的动机是,该语言非常适合重用用其他语言编程的现有串行代码。Python在处理函数方面的极大灵活性使得将串行科学应用程序的分解计算任务包装为Python函数非常容易。许多特定于并行化的组件可以实现为通用Python函数,这些函数可以将执行具体计算任务的函数作为输入。这种并行化方法所需的总体编程工作量相当有限,并且产生的并行Python脚本具有紧凑和干净的结构。并行化方法的有用性体现在自然科学和社会科学中的三个不同类别的应用程序。
2010-02-03 cs.DC cs.PL
Simulation of 1+1 dimensional surface growth and lattices gases using GPUs
限制固体表面生长模型可以映射到二元晶格气体。我们表明,有效的模拟算法可以实现GPU上的CUDA或OpenCL编程。我们考虑了与非对称简单排除过程相关的1+1维Kardar-Parisi-Zhang生长的沉积/蒸发模型,并表明对于适合GPU共享内存的大小,可以实现最大并行化加速比(对于Quadro FX 5800显卡,相对于2.67 GHz的单个CPU)。这使我们能够研究淬火柱状无序的影响,需要非常长的模拟时间。我们比较CUDA实现OpenCL实现设计的处理器集群通过MPI。实现了一个具有随机转向点的双车道交通模型,并研究了该模型的动力学行为。
2011-03-30 cond-mat.dis-nn cond-mat.stat-mech cs.DC
The MPI + CUDA Gaia AVU-GSR Parallel Solver Toward Next-generation Exascale Infrastructures
本研究通过 CUDA 将 ESA Gaia 任务的 AVU-GSR 并行求解器移植至 GPU,利用 LSQR 算法求解大规模稀疏线性方程组,在 Marconi100 集群上实现了最高约 14 倍的加速,为 Gaia 数据发布及探索预百亿亿次级行为奠定基础。
2023-08-01 astro-ph.IM cs.DC
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
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
Hybrid Static/Dynamic Schedules for Tiled Polyhedral Programs
多面体编译器执行诸如平铺和并行化之类的优化;当同时执行这两项时,它们通常生成执行平铺的“屏障同步波前”的代码。我们提出了一个系统来表达和生成代码的混合时间表,其中一些约束是自动满足通过结构的代码,其余的动态执行在运行时与数据流机制。我们证明了边界上增加的开销是更好的,至少一个多项式的程度,比以前的技术。我们提出了一种通用的机制来实现所需的同步,并表明它可以很容易地实现各种目标:OpenMP,Pthreads,GPU(CUDA或OpenCL)代码,语言,如X10,Habanero,Cilk,以及数据流平台,如DAGuE,OpenStream和MPI。我们还提供了一个简单的具体实现,它不需要任何复杂的运行时机制。我们的实验表明,我们的简单的实现是有竞争力的或优于其他系统产生的波前同步代码。我们还展示了如何提出的机制可以实现24%至70%的能源减少。
2016-10-23 cs.DC cs.PF cs.PL
Porting HEP Parameterized Calorimeter Simulation Code to GPUs
高能物理(HEP)实验,如大型强子对撞机(LHC)实验,传统上消耗大量的CPU周期用于探测器模拟和数据分析,但很少使用GPU等计算加速器。随着LHC升级到允许更高的亮度,导致更高的数据速率,纯粹依靠CPU可能无法提供足够的计算能力来支持模拟和数据分析需求。作为一个概念的证明,我们研究移植的HEP参数化量热计模拟代码的GPU的可行性。我们选择使用FastCaloSim,ATLAS快速参数化量热计模拟。虽然FastCaloSim足够快,使得它不会在整体检测器模拟中施加瓶颈,但是可以从粒子和粒子上的GPU并行化实现大样本处理的显著加速。(事件内)和事件水平;这在高亮度LHC预期的条件下特别有益,其中极高的每事件粒子多重性将由许多同时发生的质子-质子碰撞产生。我们报告了使用CUDA将FastCaloSim移植到NVIDIA GPU的经验。一个初步的Kokkos实现的FastCaloSim的可移植性,其他并行架构。
2021-05-18 cs.DC hep-ex physics.comp-ph
Efficient Hybrid Execution of C++ Applications using Intel(R) Xeon Phi(TM) Coprocessor
英特尔(R)至强融核(TM)协处理器的推出为开发高度并行的应用程序开辟了新的可能性。英特尔C++ Composer XE中集成的架构的熟悉性和灵活性,以及编译器支持,使开发人员能够使用熟悉的编程范式和技术,这些通常不适合其他加速系统。现在可以轻松地在协处理器上使用复杂的C++模板代码,包括例如英特尔线程构建块(TBB)并行化库。这些技术不仅可行,而且通常也很高效,因为主机和协处理器属于同一架构系列,因此专为Xeon CPU设计的优化技术也有利于Xeon Phi。因此,高度优化的Xeon代码(如TBB库)在两者上都能很好地工作。在本文中,我们提出了一种新的并行库结构,它可以很容易地应用一个功能,并行阵列的每个成员,动态分配主机CPU和一个或多个协处理器卡之间的工作。我们描述了相关的运行时支持,并使用物理模拟的例子来证明,我们的库结构可以用来快速创建一个C++应用程序,将显着受益于混合执行,同时利用CPU内核和协处理器内核。实验结果表明,一个优化的源代码是足够的,使主机和协处理器的有效运行。
2012-11-23 cs.DC cs.SE
Tinker-HP : Accelerating Molecular Dynamics Simulations of Large Complex Systems with Advanced Point Dipole Polarizable Force Fields using GPUs and Multi-GPUs systems
我们提出了Tinker-HP包的扩展(Lagardère等人,化学科学,2018,9,956-972)涉及使用图形处理单元(GPU)卡来加速使用可极化多体力场的分子动力学模拟。新的高性能模块允许有效使用单GPU和多GPU架构,从研究实验室到现代超级计算机中心。在详细分析了我们依赖于OpenACC和CUDA的通用可扩展策略之后,我们讨论了该包的各种功能。其中,多精度的可能性的代码进行了讨论。如果提供一个有效的双精度实现,以保持快速参考计算的可能性,我们表明,一个较低的精度的算法是首选提供类似的准确性分子动力学,同时表现出优越的性能。由于Tinker-HP主要致力于使用新一代点偶极极化力场加速模拟,因此我们的研究重点是AMOEBA模型的实现。测试各种NVIDIA平台,包括2080 Ti,3090,V100和A100卡,我们提供了说明性的基准代码的单卡和多卡模拟的大型生物系统,包括多达数百万个原子。新的代码大大减少了解决方案的时间,并提供了最好的性能,迄今为止获得的AMOEBA极化力场。展望我们的多节点大规模并行化策略,无监督自适应采样和大规模的适用性的修补匠HP代码在生物物理学的强缩放性能进行了讨论。目前的软件已在GitHub上提前发布,与高性能计算社区COVID-19研究工作相关,并对学术界免费开放(见https://github.com/TinkerTools/tinker-hp)…
2021-03-03 cs.DC cs.MS physics.chem-ph