Experiments with asynchronous scheduler for event-processing framework using oneTBB and C++20 coroutines.
Requirements:
- CMake 3.24 or higher
- C++20 compatible compiler
- CUDA 12.4 or higher
- Patatrack standalone version
- Boost 1.78 or higher
The project will automatically fetch and build other dependencies:
- traccc
- oneTBB
To build the project, clone the repository and run the following commands:
Patatrack_ROOT=<path_to_pixeltrack_standalone> cmake -S . -B build
cmake --build buildThen run the executables:
The simple test:
build/bin/schedule_simpleor the traccc test:
The data should be downloaded (once) in the build tree by running build/_deps/traccc-src/data/traccc_data_get_files.sh
This will download the data in-place in the script's directory. Then run the test:
TRACCC_TEST_DATA_DIR=build/_deps/traccc-src/data/ ./build/bin/schedule_tracccThe download instructions for the traccc data are in the traccc readme
git clone https://github.com/acts-project/traccc.git
./traccc/data/traccc_data_get_files.shTraccc is a framework agnostic algorithm. Gaudi is the framework (services, algorithms tools, orchestrator), based on TBB Athena is a framework based on Gaudi, but re-implements parts of it.
States see wp1.7-scheduler-tests/src/AlgExecState.hpp (suspened is a new addition)
- Each algo defined data dependency (like in CMS)
- Sequencers are algos or modules that can have sub-algo or sub-modules that express additional non-data dependency
- Sometimes data dependency is not fully expressed
- Sequencers also express filtering
Here only data dependency. In Gaudi statuses are different depending we wait for data or non data dependency.