![]() |
ATLAS Offline Software
|
Holds the mutable per-event information (clusters and cells) and provides utilities to convert between this representation and the Athena data structures (i. More...
#include <DataHolders.h>
Public Member Functions | |
| void | returnAndExportClusters (void *cluster_collection, const void *cell_collection_link, const MomentsOptionsArray &moments_to_add, const bool sort_clusters=true, const bool save_uncalibrated=true, const bool output_extra_moments=false, const std::vector< int > &extra_cells_to_fill={}, size_t *time_measurements=nullptr, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream={}) |
| We are using a void* for API to make this able to compile on the GPU without Athena-specific dependencies. | |
| void | allocate (const bool also_GPU=true) |
| void | clear_GPU () |
Holds the mutable per-event information (clusters and cells) and provides utilities to convert between this representation and the Athena data structures (i.
e. xAOD::CaloClusterContainer).
Definition at line 72 of file DataHolders.h.
| void CaloRecGPU::EventDataHolder::allocate | ( | const bool | also_GPU = true | ) |
Definition at line 1340 of file DataHolders.cxx.
| void CaloRecGPU::EventDataHolder::clear_GPU | ( | ) |
Definition at line 1352 of file DataHolders.cxx.
| void CaloRecGPU::EventDataHolder::returnAndExportClusters | ( | void * | cluster_collection, |
| const void * | cell_collection_link, | ||
| const MomentsOptionsArray & | moments_to_add, | ||
| const bool | sort_clusters = true, | ||
| const bool | save_uncalibrated = true, | ||
| const bool | output_extra_moments = false, | ||
| const std::vector< int > & | extra_cells_to_fill = {}, | ||
| size_t * | time_measurements = nullptr, | ||
| CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder | stream = {} ) |
We are using a void* for API to make this able to compile on the GPU without Athena-specific dependencies.
The user should pass a const CaloCellCollection *. void importCells(const void * cell_collection, const std::vector<int> & extra_cells_to_fill = {});
/We are using a void* for API to make this able to compile on the GPU /without Athena-specific dependencies. The user should pass a /const xAOD::CaloClusterContainer *. /moments_to_add specifies which moments we will import. void importClusters(const void * cluster_collection, const MomentsOptionsArray & moments_to_add, const bool output_tags = true, const bool consider_shared_cells = true, const bool output_moments = false, const bool output_extra_moments = false, const std::vector<int> & extra_cells_to_fill = {});
/This function is asynchronous if clear_CPU and synchronize are false. /moments_to_add specifies which moments we will transfer to the GPU. /If full_copy is true, we will memcopy the whole structure /in bulk instead of enqueuing separate transfers up to the necessary size /(this will also ignore the moments_to_add). /If clear_CPU is true, we will wait until the transfers are finished /before deallocating. If synchronize is true, we will synchronize anyway. void sendToGPU(const MomentsOptionsArray & moments_to_add, const bool full_copy = false, const bool clear_CPU = false, const bool synchronize = false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream = {});
/moments_to_add specifies which moments we will transfer from the GPU. /If full_copy is true, we will memcopy the whole structure /in bulk instead of enqueuing separate transfers up to the necessary size /(this will also ignore the moments_to_add). /If full_copy is false, we will have a synchronization point before /enqueuing the transfers to know the sizes. /If clear_GPU is true, we will wait until the transfers are finished /before deallocating. If synchronize is true, we will synchronize anyway. void returnToCPU(const MomentsOptionsArray & moments_to_add, const bool full_copy = false, const bool clear_GPU = false, const bool synchronize = false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream = {}, const bool also_return_cells = false);
/We are using a void* for API to make this able to compile on the GPU /without Athena-specific dependencies. The user should pass a /xAOD::CaloClusterContainer * and a const DataLink<CaloCellContainer> *. /moments_to_add specifies which moments we will import. /If sort_clusters is true, the clusters will be sorted based on /the transverse energy, otherwise the same order will be kept. /If save_uncalibrated, the basic cluster information will be saved /as raw. /If time_measurements is not null, separate time measurements /for the five stages (cell link creation, cell assignment, /sorting, basic info filling and moments filling) will be stored. void exportClusters(void * cluster_collection, const void * cell_collection_link, const MomentsOptionsArray & moments_to_add, const bool sort_clusters = true, const bool save_uncalibrated = true, const bool output_extra_moments = false, const std::vector<int> & extra_cells_to_fill = {}, size_t * time_measurements = nullptr);
/We are using a void* for API to make this able to compile on the GPU /without Athena-specific dependencies. The user should pass a /xAOD::CaloClusterContainer * and a const DataLink<CaloCellContainer> *. moments_to_add specifies which moments we will import. If sort_clusters is true, the clusters will be sorted based on the transverse energy, otherwise the same order will be kept. If save_uncalibrated, the basic cluster information will be saved as raw. If time_measurements is not null, separate time measurements for the six stages (initial transfer, cell link creation, cell assignment, sorting, basic info filling and moments filling) will be stored.
Definition at line 1262 of file DataHolders.cxx.
| CaloRecGPU::Helpers::CUDA_pinned_CPU_object<CaloRecGPU::CellInfoArr> CaloRecGPU::EventDataHolder::m_cell_info |
Definition at line 168 of file DataHolders.h.
| CaloRecGPU::Helpers::CUDA_object<CaloRecGPU::CellInfoArr> CaloRecGPU::EventDataHolder::m_cell_info_dev |
Definition at line 178 of file DataHolders.h.
| CaloRecGPU::Helpers::CUDA_pinned_CPU_object<CaloRecGPU::ClusterInfoArr> CaloRecGPU::EventDataHolder::m_clusters |
Definition at line 169 of file DataHolders.h.
| CaloRecGPU::Helpers::CUDA_object<CaloRecGPU::ClusterInfoArr> CaloRecGPU::EventDataHolder::m_clusters_dev |
Definition at line 179 of file DataHolders.h.