Skip to content

Commit 1a8c529

Browse files
Merge pull request #34 from codeplaysoftware/add-genvectorx-update
Addds the GenVectorX update.
2 parents b402d72 + c6fdfe2 commit 1a8c529

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
![Image 1](/static/images/updates/2025-03-05-syclops-genvector-x/image.webp)
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+
Binary file not shown.

0 commit comments

Comments
 (0)