[论文解读] AccFFT: A library for distributed-memory FFT on CPU and GPU architectures
AccFFT 是一个高性能、开源的库,用于在 CPU 和 GPU 集群的分布式内存环境中进行快速傅里叶变换(FFT),采用铅笔分解法(pencil decomposition)并重叠 GPU PCIe 数据传输与计算,以减少通信开销。它在 Titan 系统上实现了高达 4,096 块 K20 GPU 的强可扩展性,是首个在大规模场景下支持铅笔分解法的开源 GPU FFT 库。
We present a new library for parallel distributed Fast Fourier Transforms (FFT). The importance of FFT in science and engineering and the advances in high performance computing necessitate further improvements. AccFFT extends existing FFT libraries for CUDA-enabled Graphics Processing Units (GPUs) to distributed memory clusters. We use overlapping communication method to reduce the overhead of PCIe transfers from/to GPU. We present numerical results on the Maverick platform at the Texas Advanced Computing Center (TACC) and on the Titan system at the Oak Ridge National Laboratory (ORNL). We present the scaling of the library up to 4,096 K20 GPUs of Titan.
研究动机与目标
- 解决分布式内存系统中缺乏支持铅笔分解法的可扩展、开源 GPU FFT 库的问题。
- 通过重叠 GPU 内存传输与计算,提升大规模 FFT 的性能,缓解 PCIe 带宽瓶颈。
- 为科学计算工作负载提供高效、可移植且可扩展的异构 CPU-GPU 集群 FFT 计算能力。
- 支持实数与复数变换,包括三维以上的多维变换。
- 提供一个生产就绪的开源替代方案,取代专有或已不再维护的 GPU FFT 库。
提出的方法
- 采用铅笔分解法实现三维 FFT,相比板层分解法(slab decomposition)具有更好的负载均衡和可扩展性。
- 使用非阻塞 MPI 全对全通信,将数据转置与本地 FFT 计算重叠。
- 通过流水线和异步内核技术,将 GPU 内存传输(PCIe)与计算重叠。
- 利用 cuFFT 实现 GPU 上的本地 FFT,使用 MPI 实现节点间通信。
- 支持复数到复数(C2C)和实数到复数(R2C)变换,并采用优化的数据布局。
- 采用混合 MPI+OpenMP 模型进行 CPU 执行,并集成 GPU-aware MPI 实现 GPU-aware 通信。
实验结果
研究问题
- RQ1当通信和内存带宽成为限制因素时,GPU 加速的 FFT 在大规模分布式内存集群上能否实现高效的可扩展性?
- RQ2在多节点系统中,将 PCIe 传输与计算重叠是否能显著提升 GPU FFT 的性能?
- RQ3铅笔分解法能否在基于 GPU 的分布式 FFT 库中有效实现,从而在可扩展性上超越板层分解法?
- RQ4当每个节点配备多个 CPU 核心时,基于 GPU 的 FFT 性能与基于 CPU 的 FFT 相比如何?
- RQ5该库是否能在支持实数与复数变换的同时,保持在 4,096 块 GPU 上的强可扩展性?
主要发现
- AccFFT 在 Titan 系统上实现了高达 4,096 块 K20 GPU 的强可扩展性,证明了其为目前规模最大的支持铅笔分解法的开源 GPU FFT 库。
- GPU 版本在 GPU 数量增加 32 倍时仍保持 26% 的效率,由于有效重叠 PCIe 传输,其性能优于每个节点使用 2 个核心的 CPU 代码。
- 由于 PCIe 传输与计算的重叠,GPU 版本与 CPU 版本的通信时间保持相近,显著缩小了性能差距。
- 在强可扩展性和弱可扩展性测试中,该库的性能均优于 FFTE 及其他 GPU FFT 库,尤其在通信密集型阶段表现更优。
- 对于 4D 变换(512×256×128×64),AccFFT 保持了良好的强可扩展性效率,表明其通信模式可推广至更高维度。
- 在 Titan 上的 CPU 版本在核心数增加 32 倍时效率为 40%,表明 CPU 的可扩展性受限于通信而非计算,尤其在每个节点使用多个核心时更为明显。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。