[论文解读] Pipelining the Fast Multipole Method over a Runtime System
本文提出了一种高性能、可移植的快速多极子方法(FMM)实现,采用基于任务的运行时系统(StarPU)在异构CPU-GPU架构上流水线化FMM计算。通过将FMM表示为数据流任务图,并将计算密集型核函数(尤其是P2P和M2L)卸载到GPU,该方法在160个CPU核心上实现了2亿粒子的48.7秒性能,在配备3块NVIDIA M2090 GPU的12核CPU系统上实现了3800万粒子的13.34秒性能,性能达到或超过经过手工调优的、针对特定架构的实现。
Fast Multipole Methods (FMM) are a fundamental operation for the simulation of many physical problems. The high performance design of such methods usually requires to carefully tune the algorithm for both the targeted physics and the hardware. In this paper, we propose a new approach that achieves high performance across architectures. Our method consists of expressing the FMM algorithm as a task flow and employing a state-of-the-art runtime system, StarPU, in order to process the tasks on the different processing units. We carefully design the task flow, the mathematical operators, their Central Processing Unit (CPU) and Graphics Processing Unit (GPU) implementations, as well as scheduling schemes. We compute potentials and forces of 200 million particles in 48.7 seconds on a homogeneous 160 cores SGI Altix UV 100 and of 38 million particles in 13.34 seconds on a heterogeneous 12 cores Intel Nehalem processor enhanced with 3 Nvidia M2090 Fermi GPUs.
研究动机与目标
- 在无需低级别调优的情况下,实现在多种架构上的高性能、可移植FMM实现。
- 解决在异构环境中流水线化不规则、数据依赖的FMM任务流的挑战。
- 通过单一可移植的代码库,实现与手工优化的、架构特定的FMM代码相当的性能。
- 探索在混合CPU-GPU系统上近场(P2P)与远场(M2L)计算之间的动态负载均衡。
- 评估StarPU等基于任务的运行时系统在不规则HPC内核(如FMM)中的有效性。
提出的方法
- 将FMM算法分解为计算任务的有向无环图(DAG),包括P2M、M2M、L2L、L2P和M2L操作。
- 使用StarPU运行时系统实现基于任务的编程模型,以在CPU和GPU资源之间动态调度。
- 为关键FMM操作(尤其是P2P和M2L)实现自定义优化的CPU和GPU内核,以最大化数据级并行性。
- 评估Eager和HEFT等调度策略,以在异构计算单元之间实现负载均衡并最小化空闲时间。
- 通过实验建立性能模型,以指导任务粒度和数据分布,实现流水线效率最优化。
- 利用FMM的“黑箱”公式化方法,在保持算法通用性的同时实现高性能。
实验结果
研究问题
- RQ1能否在异构CPU-GPU架构上使用基于任务的运行时系统有效流水线化FMM算法?
- RQ2如何优化任务粒度和调度策略,以在不规则的FMM工作负载中实现高并行效率?
- RQ3与手工优化的、架构特定的代码相比,单一可移植的FMM实现能实现怎样的性能?
- RQ4在混合系统上,近场(P2P)与远场(M2L)操作之间的动态负载均衡如何影响整体性能?
- RQ5在不牺牲可移植性的前提下,将P2P和M2L内核卸载到GPU能在多大程度上提升性能?
主要发现
- FMM已成功在StarPU上实现流水线化,在160核同构SGI Altix UV 100系统上处理2亿粒子耗时48.7秒。
- 在配备三块NVIDIA M2090 GPU的12核Intel Nehalem异构系统上,处理3800万粒子耗时13.34秒。
- 在异构系统上的性能达到或超过手工优化的、架构特定的FMM代码,证明了在不损失性能的前提下具备可移植性。
- 使用HEFT算法的动态调度解决了Eager调度器在低精度、近场主导情况下的调度异常问题。
- 通过将P2P和必要时的M2L内核卸载到GPU,实现了高效的负载均衡,尤其在近场计算占主导时效果显著。
- 本研究证明,通过基于任务的运行时系统和优化的GPU内核,单一可移植的FMM代码库可在多种架构上实现高性能。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。