ATLAS Offline Software
DataHolders.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 //
4 // Dear emacs, this is -*- c++ -*-
5 //
6 
7 #ifndef CALORECGPU_DATAHOLDERS_H
8 #define CALORECGPU_DATAHOLDERS_H
9 
10 #include "Helpers.h"
11 #include "CUDAFriendlyClasses.h"
12 
13 #define CALORECGPU_USE_PINNED_MEMORY 1
14 
15 namespace CaloRecGPU
16 {
17 
19  {
20  public:
21 
22  void sendToGPU(const bool clear_CPU = true);
23 
25 
27 
29 
31 
32  };
33 
35  {
36  public:
37 
38  void sendToGPU(const bool clear_CPU = false,
39  const bool has_state = false,
40  const bool has_clusters = false,
41  const bool has_moments = false);
42 
43  void returnToCPU(const bool clear_GPU = false,
44  const bool return_cells = true,
45  const bool return_clusters = true,
46  const bool return_moments = true);
47 
54 
57 
62 
67 
68  void allocate(const bool also_GPU = true);
69 
70  void clear_GPU();
71 
72 #if CALORECGPU_USE_PINNED_MEMORY
73 
78 
79 #else
80 
85 
86 #endif
87 
92 
93  };
94 
95 }
96 
97 #endif //CALORECGPU_DATAHOLDERS_H
CaloRecGPU::EventDataHolder::m_moments_dev
CaloRecGPU::Helpers::CUDA_object< CaloRecGPU::ClusterMomentsArr > m_moments_dev
Definition: DataHolders.h:91
CaloRecGPU::EventDataHolder::returnClustersToCPU
void returnClustersToCPU(CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream={})
This function is asynchronous.
CaloRecGPU::Helpers::SimpleHolder
Holds one objects of type \T in memory context Context.
Definition: Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h:1069
CaloRecGPU::EventDataHolder::m_cell_state_dev
CaloRecGPU::Helpers::CUDA_object< CaloRecGPU::CellStateArr > m_cell_state_dev
Definition: DataHolders.h:89
CaloRecGPU::EventDataHolder::returnClusterNumberToCPU
void returnClusterNumberToCPU(CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream={})
This function is asynchronous.
CaloRecGPU::EventDataHolder::m_clusters_dev
CaloRecGPU::Helpers::CUDA_object< CaloRecGPU::ClusterInfoArr > m_clusters_dev
Definition: DataHolders.h:90
CaloRecGPU::EventDataHolder::returnSomeMomentsToCPU
void returnSomeMomentsToCPU(const size_t num_clusters, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream={})
We assume the cluster number is already known and thus only return num_clusters clusters.
CaloRecGPU::ConstantDataHolder::sendToGPU
void sendToGPU(const bool clear_CPU=true)
CaloRecGPU::ConstantDataHolder::m_geometry
CaloRecGPU::Helpers::CPU_object< CaloRecGPU::GeometryArr > m_geometry
Definition: DataHolders.h:24
AthenaPoolTestWrite.stream
string stream
Definition: AthenaPoolTestWrite.py:12
CaloRecGPU::EventDataHolder::m_cell_info_dev
CaloRecGPU::Helpers::CUDA_object< CaloRecGPU::CellInfoArr > m_cell_info_dev
Definition: DataHolders.h:88
CaloRecGPU::EventDataHolder
Definition: DataHolders.h:35
CaloRecGPU::EventDataHolder::allocate
void allocate(const bool also_GPU=true)
CaloRecGPU::EventDataHolder::m_moments
CaloRecGPU::Helpers::CUDA_pinned_CPU_object< CaloRecGPU::ClusterMomentsArr > m_moments
Definition: DataHolders.h:77
CaloRecGPU::EventDataHolder::returnMomentsToCPU
void returnMomentsToCPU(CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream={})
This function is asynchronous.
CaloRecGPU::ConstantDataHolder::m_cell_noise
CaloRecGPU::Helpers::CPU_object< CaloRecGPU::CellNoiseArr > m_cell_noise
Definition: DataHolders.h:26
CaloRecGPU::EventDataHolder::returnToCPU
void returnToCPU(const bool clear_GPU=false, const bool return_cells=true, const bool return_clusters=true, const bool return_moments=true)
CaloRecGPU::ConstantDataHolder::m_cell_noise_dev
CaloRecGPU::Helpers::CUDA_object< CaloRecGPU::CellNoiseArr > m_cell_noise_dev
Definition: DataHolders.h:30
CaloRecGPU::ConstantDataHolder::m_geometry_dev
CaloRecGPU::Helpers::CUDA_object< CaloRecGPU::GeometryArr > m_geometry_dev
Definition: DataHolders.h:28
CaloRecGPU::EventDataHolder::returnCellsToCPU
void returnCellsToCPU(CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream={})
This function is asynchronous.
CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder
Definition: Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h:109
CaloRecGPU::EventDataHolder::clear_GPU
void clear_GPU()
CaloRecGPU::EventDataHolder::m_clusters
CaloRecGPU::Helpers::CUDA_pinned_CPU_object< CaloRecGPU::ClusterInfoArr > m_clusters
Definition: DataHolders.h:76
CaloRecGPU::EventDataHolder::m_cell_state
CaloRecGPU::Helpers::CUDA_pinned_CPU_object< CaloRecGPU::CellStateArr > m_cell_state
Definition: DataHolders.h:75
CUDAFriendlyClasses.h
CaloRecGPU::ConstantDataHolder
Definition: DataHolders.h:19
CaloRecGPU::EventDataHolder::sendToGPU
void sendToGPU(const bool clear_CPU=false, const bool has_state=false, const bool has_clusters=false, const bool has_moments=false)
CaloRecGPU::EventDataHolder::returnSomeClustersToCPU
void returnSomeClustersToCPU(const size_t num_clusters, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream={})
We assume the cluster number is already known and thus only return num_clusters clusters.
CaloRecGPU
Definition: BaseDefinitions.h:11
Helpers.h
CaloRecGPU::EventDataHolder::m_cell_info
CaloRecGPU::Helpers::CUDA_pinned_CPU_object< CaloRecGPU::CellInfoArr > m_cell_info
Definition: DataHolders.h:74