Traccc
Demonstrator tracking chain on accelerators
Install / Use
/learn @acts-project/TracccREADME
traccc
Demonstrator tracking chain for accelerators.
Features
| Category | Algorithms | CPU | CUDA | SYCL | Alpaka | | ------------------------- | ---------------------- | --- | ---- | ---- | ------ | | Clusterization | CCL / FastSv / etc. | ✅ | ✅ | ✅ | ✅ | | | Measurement creation | ✅ | ✅ | ✅ | ✅ | | Seeding | Spacepoint formation | ✅ | ✅ | ✅ | ✅ | | | Spacepoint binning | ✅ | ✅ | ✅ | ✅ | | | Seed finding | ✅ | ✅ | ✅ | ✅ | | | Track param estimation | ✅ | ✅ | ✅ | ✅ | | Track finding | Combinatorial KF | ✅ | ✅ | ✅ | ✅ | | Ambiguity resolution | Greedy resolver | ✅ | 🟡 | ⚪ | ⚪ | | Track fitting | KF | ✅ | ✅ | 🟡 | ✅ |
✅: exists, 🟡: work started, ⚪: work not started yet
The relations between datatypes and algorithms is given in the (approximately commutative) diagram shown below. Black lines indicate CPU algorithms, green lines indicate CUDA algorithms, blue lines indicate SYCL algorithms. Solid algorithms are ready for use, dashed algorithms are in development or future goals. Data types for different heterogeneous platforms are contracted for legibility, and identities are hidden.
flowchart LR
subgraph clusterization [<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/clusterization/'>Clusterization</a>]
direction TB
cell(Cells);
cluster(Clusters);
meas(Measurements);
end
subgraph trkfinding [<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/finding/'>Track Finding</a>]
sp(Spacepoints);
bin(Spacepoint Grid);
seed(Seeds);
ptrack(Prototracks);
end
subgraph trkfitting [<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/fitting/'>Track Fitting</a>]
trackc(Track Candidates)
tracks(Track States);
end
click cell href "https://github.com/acts-project/traccc/blob/main/core/include/traccc/edm/silicon_cell_collection.hpp";
click cluster href "https://github.com/acts-project/traccc/blob/main/core/include/traccc/edm/silicon_cluster_collection.hpp";
click meas href "https://github.com/acts-project/traccc/blob/main/core/include/traccc/edm/measurement.hpp";
click sp href "https://github.com/acts-project/traccc/blob/main/core/include/traccc/edm/spacepoint.hpp";
click bin href "https://github.com/acts-project/traccc/blob/main/core/include/traccc/seeding/detail/spacepoint_grid.hpp";
click seed href "https://github.com/acts-project/traccc/blob/main/core/include/traccc/edm/seed.hpp";
click ptrack href "https://github.com/acts-project/traccc/blob/main/core/include/traccc/edm/track_parameters.hpp";
click trackc href "https://github.com/acts-project/traccc/blob/main/core/include/traccc/edm/track_candidate.hpp";
click tracks href "https://github.com/acts-project/traccc/blob/main/core/include/traccc/edm/track_state.hpp";
%% Host CCL algorithm
cell -->|<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/clusterization/sparse_ccl_algorithm.hpp'>Sparse CCL</a>| cluster;
linkStyle 0 stroke: black;
%% Host measurement creation
cluster -->|<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/clusterization/measurement_creation_algorithm.hpp'>Meas. Creat.</a>| meas;
linkStyle 1 stroke: black;
%% SYCL clusterization
cell -->|<a href='https://github.com/acts-project/traccc/blob/main/device/sycl/include/traccc/sycl/clusterization/clusterization_algorithm.hpp'>Clustering</a>| meas;
linkStyle 2 stroke: blue;
%% CUDA clusterization
cell -->|<a href='https://github.com/acts-project/traccc/blob/main/device/cuda/include/traccc/cuda/clusterization/clusterization_algorithm.hpp'>Clustering</a>| meas;
linkStyle 3 stroke: green;
%% Alpaka clusterization
cell -->|<a href='https://github.com/acts-project/traccc/blob/main/device/alpaka/include/traccc/alpaka/clusterization/clusterization_algorithm.hpp'>Clustering</a>| meas;
linkStyle 4 stroke: orange;
%% Host spacepoint formation
meas -->|<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/seeding/silicon_pixel_spacepoint_formation_algorithm.hpp'>SP Form.</a>| sp;
linkStyle 5 stroke: black;
%% SYCL spacepoint formation
meas -->|<a href='https://github.com/acts-project/traccc/blob/main/device/sycl/include/traccc/sycl/seeding/silicon_pixel_spacepoint_formation_algorithm.hpp'>SP Form.</a>| sp;
linkStyle 6 stroke: blue;
%% CUDA spacepoint formation
meas -->|<a href='https://github.com/acts-project/traccc/blob/main/device/cuda/include/traccc/cuda/seeding/spacepoint_formation_algorithm.hpp'>SP Form.</a>| sp;
linkStyle 7 stroke: green;
%% Alpaka spacepoint formation
meas -->|<a href='https://github.com/acts-project/traccc/blob/main/device/alpaka/include/traccc/alpaka/seeding/spacepoint_formation_algorithm.hpp'>SP Form.</a>| sp;
linkStyle 8 stroke: orange;
%% Host spacepoint binning
sp -->|<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/seeding/spacepoint_binning.hpp'>SP Binning</a>| bin;
linkStyle 9 stroke: black;
%% SYCL triplet seeding
sp -->|<a href='https://github.com/acts-project/traccc/blob/main/device/sycl/include/traccc/sycl/seeding/triplet_seeding_algorithm.hpp'>Triplet Seeding</a>| seed;
linkStyle 10 stroke: blue;
%% CUDA triplet seeding
sp -->|<a href='https://github.com/acts-project/traccc/blob/main/device/cuda/include/traccc/cuda/seeding/triplet_seeding_algorithm.hpp'>Triplet Seeding</a>| seed;
linkStyle 11 stroke: green;
%% Alpaka triplet seeding
sp -->|<a href='https://github.com/acts-project/traccc/blob/main/device/alpaka/include/traccc/alpaka/seeding/triplet_seeding_algorithm.hpp'>Triplet Seeding</a>| seed;
linkStyle 12 stroke: orange;
%% Host seeding
bin -->|<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/seeding/seed_finding.hpp'>Seeding</a>| seed;
linkStyle 13 stroke: black;
%% Host param est.
seed -->|<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/seeding/track_params_estimation.hpp'>Param. Est.</a>| ptrack;
linkStyle 14 stroke: black;
%% SYCL param est.
seed -->|<a href='https://github.com/acts-project/traccc/blob/main/device/sycl/include/traccc/sycl/seeding/track_params_estimation.hpp'>Param. Est.</a>| ptrack;
linkStyle 15 stroke: blue;
%% CUDA param est.
seed -->|<a href='https://github.com/acts-project/traccc/blob/main/device/cuda/include/traccc/cuda/seeding/track_params_estimation.hpp'>Param. Est.</a>| ptrack;
linkStyle 16 stroke: green;
%% Alpaka param est.
seed -->|<a href='https://github.com/acts-project/traccc/blob/main/device/alpaka/include/traccc/alpaka/seeding/track_params_estimation.hpp'>Param. Est.</a>| ptrack;
linkStyle 17 stroke: orange;
%% Host CKF
ptrack -->|<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/finding/combinatorial_kalman_filter_algorithm.hpp'>CKF</a>| trackc;
linkStyle 18 stroke: black;
%% Host Kalman filter
trackc -->|<a href='https://github.com/acts-project/traccc/blob/main/core/include/traccc/fitting/kalman_fitting_algorithm.hpp'>Kalman filter</a>| tracks;
linkStyle 19 stroke: black;
%% SYCL CKF
ptrack -->|<a href='https://github.com/acts-project/traccc/blob/main/device/sycl/include/traccc/sycl/finding/combinatorial_kalman_filter_algorithm.hpp'>CKF</a>| trackc;
linkStyle 20 stroke: blue;
%% SYCL Kalman filter
trackc -->|<a href='https://github.com/acts-project/traccc/blob/main/device/sycl/include/traccc/sycl/fitting/kalman_fitting_algorithm.hpp'>Kalman filter</a>| tracks;
linkStyle 21 stroke: blue;
%% CUDA CKF
ptrack -->|<a href='https://github.com/acts-project/traccc/blob/main/device/cuda/include/traccc/cuda/finding/finding_algorithm.hpp'>CKF</a>| trackc;
linkStyle 22 stroke: green;
%% CUDA Kalman filter
trackc -->|<a href='https://github.com/acts-project/traccc/blob/main/device/cuda/include/traccc/cuda/fitting/fitting_algorithm.hpp'>Kalman filter</a>| tracks;
linkStyle 23 stroke: green;
Requirements and dependencies
OS & compilers:
Please note that due to the complexity of this software and its build system, it may be somewhat fragile in the face of compiler version changes. The following are general guidelines for getting traccc to compile:
- The C++ compiler must support C++20
In addition, the following requirements hold when CUDA is enabled:
- The CUDA Toolkit version must be greater than major version 12
- Ensure that the CUDA host compiler supports C++20 and is compatible with the
nvcccompiler driver
The following table lists currently combinations of builds, compilers, and toolchains that are currently known to work (last updated 2022/01/24):
| Build | OS | gcc | CUDA | comment | | --- | --- | --- | --- | --- | | CUDA | Ubuntu 24.04 | 13.3.0 | 12.6 | runs on CI |
Dependencies
Dependency management with Spack
The Spack project provides a particularly easy way to install the dependencies that you need to use traccc. In order to use Spack to manage your dependencies, simply create a new Spack environment using the provided environment file:
spack env create traccc spack.yaml
spack -e traccc concretize -f
spack -e traccc install
spack env activate traccc
This way, Spack will automaticall
