Skip to main content
QUICK REVIEW

[论文解读] Hybrid Monte Carlo with Wilson Dirac operator on the Fermi GPU

Abhijit Chakrabarty, Pushan Majumdar|arXiv (Cornell University)|Jul 10, 2012
Theoretical and Computational Physics被引用 3
一句话总结

该论文提出了一种针对在NVIDIA Fermi GPU上运行的具有两个简并威尔逊-狄拉克费米子的格点QCD的高效优化混合蒙特卡罗模拟,通过代码生成将数组变量映射到寄存器,实现了相较于单个CPU线程超过10倍的加速。该方法最大限度减少了全局内存访问,利用GPU寄存器文件实现近乎瞬时的数据访问,其性能相当于高端集群上19–26个CPU线程的水平。

ABSTRACT

In this article we present our implementation of a Hybrid Monte Carlo algorithm for Lattice Gauge Theory using two degenerate flavours of Wilson-Dirac fermions on a Fermi GPU. We find that using registers instead of global memory speeds up the code by almost an order of magnitude. To map the array variables to scalars, so that the compiler puts them in the registers, we use code generators. Our final program is more than 10 times faster than a generic single CPU.

研究动机与目标

  • 加速在GPU架构上使用动力费米子的格点QCD混合蒙特卡罗模拟。
  • 克服GPU格点规范理论模拟中因全局内存访问缓慢而造成的性能瓶颈。
  • 探索在GPU内核运行时数据中使用寄存器变量而非全局内存的可行性。
  • 开发并应用代码生成技术,将数组变量映射到标量寄存器以实现最佳性能。
  • 证明寄存器优化可在真实格点尺寸下实现相较于单线程CPU性能超过10倍的加速。

提出的方法

  • 使用CUDA在Fermi GPU上实现两个简并威尔逊-狄拉克费米子的混合蒙特卡罗算法。
  • 将运行时变量的全局内存使用替换为寄存器存储,将延迟从约100–150个周期降低至1个周期。
  • 使用代码生成器将数组元素映射为标量变量,使编译器能够将其分配至寄存器。
  • 通过最小化全局内存事务并最大化寄存器利用率,优化共轭梯度求逆核。
  • 在C2050和X2090 Fermi GPU上测试性能,并与使用Intel和Cray Fortran编译器的CPU集群(Opteron、Cray XE6)进行对比。
  • 测量共轭梯度迭代过程中的运行时间,以估算内核启动开销和扩展行为。

实验结果

研究问题

  • RQ1在GPU基的格点QCD混合蒙特卡罗模拟中,基于寄存器的存储是否能显著优于全局内存访问?
  • RQ2代码生成技术在多大程度上可将数组变量映射到寄存器以提升内核性能?
  • RQ3寄存器优化的GPU内核性能与现代集群上的多线程CPU实现相比如何?
  • RQ4对于真实格点尺寸,GPU优化的HMC实现相较于单个CPU线程可实现多大程度的加速?
  • RQ5寄存器优化带来的性能提升是否随格点体积和迭代次数的增加而扩展?

主要发现

  • 使用寄存器而非全局内存使代码加速近一个数量级,相较于单个CPU线程实现了超过10倍的加速。
  • C2050 GPU的性能相当于约19个Cray XE6节点的线程,而X2090的性能相当于约26个此类线程。
  • 共轭梯度例程的内核启动开销在C2050和X2090 GPU上均约为0.5秒。
  • 求逆器的运行时间与CG迭代次数呈线性关系,证实了各次迭代间性能的一致性。
  • 若不进行寄存器映射,性能提升仅约2倍;而完全的寄存器优化使提升超过10倍。
  • 代码生成的使用对于有效将数组映射到寄存器至关重要,使编译器能够将变量放置于高速寄存器文件中。

更好的研究,从现在开始

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

无需绑定信用卡

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