Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:02:09

0001 #ifndef CondFormats_EcalObjects_interface_EcalRechitChannelStatusGPU_h
0002 #define CondFormats_EcalObjects_interface_EcalRechitChannelStatusGPU_h
0003 
0004 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
0005 #include "FWCore/Utilities/interface/propagate_const_array.h"
0006 #include "HeterogeneousCore/CUDAUtilities/interface/device_unique_ptr.h"
0007 
0008 #ifndef __CUDACC__
0009 #include "HeterogeneousCore/CUDAUtilities/interface/HostAllocator.h"
0010 #include "HeterogeneousCore/CUDACore/interface/ESProduct.h"
0011 #endif  // __CUDACC__
0012 
0013 class EcalRechitChannelStatusGPU {
0014 public:
0015   struct Product {
0016     edm::propagate_const_array<cms::cuda::device::unique_ptr<uint16_t[]>> status;
0017   };
0018 
0019 #ifndef __CUDACC__
0020 
0021   //
0022   EcalRechitChannelStatusGPU(EcalChannelStatus const&);
0023 
0024   // will call dealloation for Product thru ~Product
0025   ~EcalRechitChannelStatusGPU() = default;
0026 
0027   // get device pointers
0028   Product const& getProduct(cudaStream_t) const;
0029 
0030   //
0031   static std::string name() { return std::string{"ecalRechitChannelStatusGPU"}; }
0032 
0033 private:
0034   // in the future, we need to arrange so to avoid this copy on the host
0035   // store eb first then ee
0036   std::vector<uint16_t, cms::cuda::HostAllocator<uint16_t>> status_;
0037 
0038   cms::cuda::ESProduct<Product> product_;
0039 
0040 #endif  // __CUDACC__
0041 };
0042 
0043 #endif  // CondFormats_EcalObjects_interface_EcalRechitChannelStatusGPU_h