Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef CondFormats_HcalObjects_interface_HcalChannelQualityGPU_h
0002 #define CondFormats_HcalObjects_interface_HcalChannelQualityGPU_h
0003 
0004 #include "CondFormats/HcalObjects/interface/HcalChannelQuality.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
0012 
0013 class HcalChannelQualityGPU {
0014 public:
0015   struct Product {
0016     edm::propagate_const_array<cms::cuda::device::unique_ptr<uint32_t[]>> status;
0017   };
0018 
0019 #ifndef __CUDACC__
0020   // rearrange reco params
0021   HcalChannelQualityGPU(HcalChannelQuality const &);
0022 
0023   // will trigger deallocation of Product thru ~Product
0024   ~HcalChannelQualityGPU() = default;
0025 
0026   // get device pointers
0027   Product const &getProduct(cudaStream_t) const;
0028 
0029 private:
0030   uint64_t totalChannels_;
0031   std::vector<uint32_t, cms::cuda::HostAllocator<uint32_t>> status_;
0032 
0033   cms::cuda::ESProduct<Product> product_;
0034 #endif  // __CUDACC__
0035 };
0036 
0037 #endif  // RecoLocalCalo_HcalRecAlgos_interface_HcalChannelQualityGPU_h