Skip to main content
QUICK REVIEW

[论文解读] An Efficient SIMD Implementation of Pseudo-Verlet Lists for Neighbour Interactions in Particle-Based Codes

James S. Willis, Matthieu Schaller|arXiv (Cornell University)|Apr 17, 2018
Fluid Dynamics Simulations and Interactions参考文献 3被引用 3
一句话总结

本文提出了一种高度优化的SIMD向量化实现的伪-Verlet列表算法,用于基于粒子的模拟,通过沿单元对轴的粒子投影排序、精确的循环边界以及带掩码的向量化距离计算实现。在Swift宇宙学模拟框架中,与标量代码相比,该方法在AVX、AVX2和AVX-512上分别实现了2.24倍、2.43倍和4.07倍的加速。

ABSTRACT

In particle-based simulations, neighbour finding (i.e finding pairs of particles to interact within a given range) is the most time consuming part of the computation. One of the best such algorithms, which can be used for both Molecular Dynamics (MD) and Smoothed Particle Hydrodynamics (SPH) simulations, is the pseudo-Verlet list algorithm. This algorithm, however, does not vectorise trivially, and hence makes it difficult to exploit SIMD-parallel architectures. In this paper, we present several novel modifications as well as a vectorisation strategy for the algorithm which lead to overall speed-ups over the scalar version of the algorithm of 2.24x for the AVX instruction set (SIMD width of 8), 2.43x for AVX2, and 4.07x for AVX-512 (SIMD width of 16).

研究动机与目标

  • 解决基于粒子的模拟中因伪-Verlet列表邻居查找效率低下而引起的性能瓶颈。
  • 克服由于分支和不规则内存访问模式导致的伪-Verlet列表SIMD向量化挑战。
  • 设计一种保持算法正确性的同时最大化现代CPU架构上数据级并行性的向量化策略。
  • 在Swift代码库的现实宇宙学模拟中实现显著的性能提升。
  • 证明算法优化与底层向量化结合可获得优于简单SIMD应用的卓越性能。

提出的方法

  • 将相邻单元中粒子的位置投影到其质心连线轴上,以支持有序邻居搜索。
  • 按粒子在单元对轴上的投影距离对每个单元中的粒子进行排序,以实现早期循环终止。
  • 使用预计算的循环迭代次数上限(dist_a[i] + h + max_dx)来减少冗余的距离计算。
  • 使用AVX、AVX2和AVX-512内在函数实现向量化循环,并通过掩码操作处理部分向量通道。
  • 使用累加器向量批量处理结果,以减轻邻居相互作用计算过程中的内存带宽压力。
  • 采用混合方法:对交互次数较少的角对单元使用标量代码,对边对和面对单元使用向量化代码,以优化整体性能。

实验结果

研究问题

  • RQ1尽管存在不规则控制流和内存访问模式,伪-Verlet列表算法是否能通过SIMD指令实现有效向量化?
  • RQ2在真实宇宙学模拟工作负载上,使用AVX、AVX2和AVX-512向量化伪-Verlet列表能带来多大的性能提升?
  • RQ3指令集选择(AVX与AVX2与AVX-512)如何影响邻居查找性能的可实现加速比?
  • RQ4算法优化措施(如排序投影和循环边界)如何减少向量化代码中的冗余距离计算?
  • RQ5通过避免低活跃度配置下的向量化开销,混合标量/向量化策略是否能提升整体性能?

主要发现

  • 与Swift模拟框架中的标量代码相比,SIMD优化的伪-Verlet列表在AVX(SIMD宽度8)上实现了2.24倍的加速。
  • 使用AVX2实现了2.43倍的加速,表明其相比AVX在指令级并行性和更好的掩码支持方面具有更优性能。
  • AVX-512指令集实现了最高的4.07倍加速,得益于更宽的向量通道(16路)、改进的FMA指令和专用掩码功能。
  • 性能提升在面和边单元对配置中最为显著,因为更高的交互次数使得向量化开销得以更好分摊。
  • 角对单元交互的加速极小(0.49倍),表明对这些情况使用标量代码可避免向量化开销,具有合理性。
  • 即使在理想8倍SIMD加速下,朴素的O(N²)邻居查找方法仍比优化后的伪-Verlet列表慢12倍以上,凸显了算法效率的重要性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。