File indexing completed on 2024-04-06 12:02:10
0001 #ifndef CondFormats_EcalObjects_interface_ElectronicsMappingGPU_h
0002 #define CondFormats_EcalObjects_interface_ElectronicsMappingGPU_h
0003
0004 #include "CondFormats/EcalObjects/interface/EcalMappingElectronics.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 namespace ecal {
0014 namespace raw {
0015
0016 class ElectronicsMappingGPU {
0017 public:
0018 struct Product {
0019 edm::propagate_const_array<cms::cuda::device::unique_ptr<uint32_t[]>> eid2did;
0020 };
0021
0022 #ifndef __CUDACC__
0023
0024
0025 ElectronicsMappingGPU(EcalMappingElectronics const&);
0026
0027
0028 ~ElectronicsMappingGPU() = default;
0029
0030
0031 Product const& getProduct(cudaStream_t) const;
0032
0033
0034 static std::string name() { return std::string{"ecalElectronicsMappingGPU"}; }
0035
0036 private:
0037
0038
0039 std::vector<uint32_t, cms::cuda::HostAllocator<uint32_t>> eid2did_;
0040
0041 cms::cuda::ESProduct<Product> product_;
0042 #endif
0043 };
0044
0045 }
0046 }
0047
0048 #endif