ATLAS GPU Data Preparation
This is an experimental implementation of GPU-based data preparation for Pixel and SCT detector data in the ATLAS High Level Trigger. This code includes an extract of the current CPU-based implementation, with modifications made to allow it to run outside of the GAUDI framework and to make it readable by human beings.
More information about the outcome of this study can be found here.
NOTE: This code is now deprecated. The official, final implementation has been moved to the ATLAS SVN and integrated with the actual ATLAS trigger software. This code has been archived around for posterity. This code was written before CUDA 4 came out, so many of the utility classes in here are no longer necessary and much of the code may no longer be best practices. Also, this was in the early days of CUDA/CMake integration, so there are some hard-coded paths in the CMake files, sorry :-(
Unless otherwise noted, this code is Copyright (c) 2011 - 2016 Jacob Howard.
The code is organized into the following directories:
- CMakeExtras: Extras modules for the CMake build system
- ComputeCommon: Buffer and stream implementations that will work on either CPUs or GPUs
- CPUDataPreparation: The existing CPU-based ATLAS data preparation code
- CUDATesting: Utility code for testing CUDA devices
- DataPreparationCommon: Code common to both the CPU and GPU implementations, such as hardware mapping and data structures
- Documentation: Old but probably accurate documenation, designed for Doxygen
- Example: Examples of how to use the data preparation implementations
- External: Code pinched from the ATLAS codebase that is too much of a pain to refactor and integrate into this implementation
- GPUDataPreparation: The new GPU-based ATLAS data preparation code
- MinEx: Small emulator/replacement for GAUDI steering code, implements timing and logging
- Scripts: Scripts to generate the hardware map and hash function necessary for the GPU implementation
- UserInterface: The benchmarking command line utility