|
| 1 | +--- |
| 2 | +title: "SYCLOPS GenVectorX" |
| 3 | +date: 2025-03-05 |
| 4 | +layout: update |
| 5 | +tags: |
| 6 | + - syclops |
| 7 | + - GenVectorX |
| 8 | +--- |
| 9 | + |
| 10 | + |
| 11 | +CERN hosts the world's largest particle accelerator, the LHC, where beams of particles are accelerated and made to |
| 12 | +collide to study the fundamental structures of our universe. The LHC produces petabytes of physics data regarding |
| 13 | +particle collisions that need to be analysed efficiently. These collisions are expressed as operations on particles, |
| 14 | +represented as 4-dimensional time-space vectors, also known as Lorentz Vectors. Analysing these massive amounts of data |
| 15 | +naturally requires highly efficient and complex software solutions. ROOT is an open-source platform-independent C++ data |
| 16 | +analysis framework designed and developed for this purpose. The [ROOT project](https://root.cern) provides the core |
| 17 | +ingredients for high energy physics (HEP) analysis tasks, including optimised data storage, a user-friendly and |
| 18 | +interactive interface, math libraries, and visualisation capabilities. ROOT’s high-level data analysis |
| 19 | +interface, [RDataFrame](https://root.cern/doc/master/classROOT_1_1RDataFrame.html), currently contains |
| 20 | +support for implicit parallelism in multi-threaded and multi-node distributed environments, but GPU parallelism has not |
| 21 | +been attempted before this work. Given the increasing heterogeneity in computing facilities, it becomes crucial to |
| 22 | +efficiently support GPGPUs to take advantage of the available resources. SYCL allows for a single-source implementation, |
| 23 | +which enables support for different architectures. |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | +Within ROOT, the GenVector is a large package intended to provide classes and functionalities to represent physical |
| 28 | +vectors and transformations (such as rotations and Lorentz transformations) in 2, 3, and 4 dimensions, according to the |
| 29 | +needs of High Energy Physics researchers. [GenVectorX](https://arxiv.org/abs/2312.02756) extends GenVector, providing a |
| 30 | +SYCL implementation of the Lorentz Vector classes that facilitate computations with physical vectors. We leverage SYCL |
| 31 | +as a performance portable framework to migrate and modernize the fundamental GenVector package. Typically, in a HEP |
| 32 | +analysis the data are first read from disk and decompressed; then irrelevant data are filtered out, new quantities |
| 33 | +are defined by processing the remaining particles, possibly more data are filtered out, and last the results are |
| 34 | +aggregated, e.g. by computing an histogram. The GenVectorX package addresses the define action, even if the histogram |
| 35 | +computation has been ported. An extensive test campaign shows that SYCL can achieve competitive performance with |
| 36 | +respect to native CUDA on NVIDIA GPUs with near-one code similarity, meaning that the codebase is more sustainable |
| 37 | +in terms of development efforts and less error-prone as a single source needs to be maintained. Moreover, we acquire |
| 38 | +support for accelerators beyond NVIDIA GPUs - before SYCL, RDataFrame only supported multithreaded execution across |
| 39 | +bulks. These features haven’t been put in production yet, but if you’re curious you can take a look at the |
| 40 | +related [development branch!](https://github.com/mdessole/root/tree/genvectorx_gpu_histogram_bulk-2.0) |
| 41 | + |
0 commit comments