Version 2.1.0: Replace LHC LO Process, PDF choices
This is the Codebase for:
- M. H. Seymour and S. Sule, An Algorithm to Parallelise Parton Showers on a GPU, SciPost Phys. Codebases 33 (2024)
- M. H. Seymour and S. Sule, An NLO-Matched Initial and Final State Parton Shower on a GPU, ArXiv:2511.19633 (2025)
The aim of this project is to demonstrate how a Parton Shower Veto Algorithm can be reorganised to run in parallel on a GPU without altering the algorithm itself.
The code is an NLO+Shower generator. It can simulate two processes:
-
Electron-Positron Collisions at LEP @ 91.2 GeV
- Process:
$e^+ e^- \to Z/\gamma \to q \bar{q}$ at LO/NLO - Observables: Durham Jet Rates and Event Shapes
- Process:
-
Z Production at the LHC @ 13 TeV
- NLO Process:
$p p \to Z$ at LO/NLO - Observables:
$Z$ Observables and Anti-$k_T$ Jets
- NLO Process:
You will need an NVIDIA GPU with CUDA Compatibility 7.0 [Guide]. To build the code, you will need cmake, g++, python and NVIDIA's nvcc compiler.
The executable rungaps is provided to simplify the use of the code. One can execute the command:
./rungapsNB: When running the first time, the code will install LHAPDF-GPU, packaged with the code [LHAPDF Repo]
This command should build the program and generate 10000 events on the GPU. More customisation options are available, and are listed below:
# Simulate N Events on GPU (Default)
./rungaps -p <LEP/LHC> [-nlo] -n nevents
# Simulate N Events on CPU
./rungaps -p <LEP/LHC> [-nlo] -n nevents -r cpu
# Simulate N Events over multiple CPUs
./rungaps -p <LEP/LHC> [-nlo] -n nevents -r cpu-cluster -ncpu ncoresThe histograms are saved as Yoda files [arxiv:2312.15070]. To generate the plots, use Rivet [2404.15984] as follows:
rivet-mkhtml --mc-errs -c test/plots.conf <yoda file>If you would like to just use the CPU code, you will need you’ll need a local build of LHAPDF with the CT14lo dataset installed. After this, write the path to LHAPDF when inside the gaps repository using the command
# NB: the gaps repo has a folder called gaps
echo "/path/to/lhapdf/6.5.X" > gaps/lhapdf-gpu/path.txtAfter this, you can run the CPU code using rungaps -r cpu. The code will be compiled for you.
You can adjust the following parameters:
-
-e, --root_s: Adjust the centre of mass energy -
-asmz, -fixas: Adjust$\alpha_s(m_Z)$ , use fixed$\alpha_s=\alpha_s(m_Z)$ -
-noshower: Skip the shower section (hard subprocess only) -
-t_c: Adjust the Shower Cutoff -
-n_em_max: Limit the number of emissions, including the MC@NLO Emission -
-me2pdfand-showerpdf: Change PDF (default: CT14lo). Also update range in base.h! -
-t: Number of threads per block on the GPU -
-do_partitioning: Do Event Record Partitioning (GPU Speedup Trick) -
-nsys, -codecarbon, -gprof: Profiling Tools
The LHC LO process lhc_lo.cpp/.cu.
To learn more about the code and how it all works, see the documentation.
For issues and queries, email: siddharth.sule@manchester.ac.uk
