arXivDaily arXiv每日学术速递 周一至周五更新
北美退伍军人节(Veterans Day),12 日无更新
arXiv 2403.08692hep-ph
收藏

一种在GPU上并行化部分子簇射的算法

An Algorithm to Parallelise Parton Showers on a GPU

Michael H. Seymour, Siddharth Sule

AI总结:

针对部分子簇射的分支特性与GPU的SIMT架构不匹配问题,提出基于Sudakov否决和线程同步的并行算法,并用CUDA C++实现,证明单块V100可达295个CPU核心的吞吐量。

摘要:

GPU编程的单指令多线程(SIMT)范式从定义上并不支持部分子簇射算法的分支特性。然而,现代GPU被设计为能够独立调度具有发散过程的线程,从而使其能够处理此类分支。通过定期的线程同步以及对各个步骤的谨慎处理,人们可以在GPU上模拟部分子簇射。我们提出了一种Sudakov否决算法,旨在并行模拟多个事件上的部分子分支。我们还发布了一个CUDA C++程序,该程序在GPU上生成矩阵元、对部分子进行簇射,并计算质心系能量91.2 GeV的LEP的喷注率和事件形状。为了基准测试其性能,我们还提供了一个近乎相同的C++程序,用于在CPU上串行模拟事件。尽管分支带来的影响并未消失,但我们证明GPU可以提供与多核CPU相当的吞吐量。例如,我们表明,在一块NVIDIA TESLA V100 GPU上对10^6个事件进行簇射所花费的时间,相当于295个Intel Xeon E5-2620 CPU核心所需的时间。

英文摘要:

The Single Instruction, Multiple Thread (SIMT) paradigm of GPU programming does not support the branching nature of a parton shower algorithm by definition. However, modern GPUs are designed to schedule threads with diverging processes independently, allowing them to handle such branches. With regular thread synchronisation and careful treatment of the individual steps, one can simulate a parton shower on a GPU. We present a Sudakov veto algorithm designed to simulate parton branching on multiple events in parallel. We also release a CUDA C++ program that generates matrix elements, showers partons and computes jet rates and event shapes for LEP at 91.2 GeV on a GPU. To benchmark its performance, we also provide a near-identical C++ program designed to simulate events serially on a CPU. While the consequences of branching are not absent, we demonstrate that a GPU can provide the throughput of a many-core CPU. As an example, we show that the time taken to shower 10^6 events on one NVIDIA TESLA V100 GPU is equivalent to that of 295 Intel Xeon E5-2620 CPU cores.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑