Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef CondFormats_EcalObjects_interface_EcalMultifitParametersGPU_h
0002 #define CondFormats_EcalObjects_interface_EcalMultifitParametersGPU_h
0003 
0004 #include <array>
0005 
0006 #include "FWCore/Utilities/interface/propagate_const_array.h"
0007 #include "HeterogeneousCore/CUDAUtilities/interface/device_unique_ptr.h"
0008 
0009 #ifndef __CUDACC__
0010 #include "HeterogeneousCore/CUDAUtilities/interface/HostAllocator.h"
0011 #include "HeterogeneousCore/CUDACore/interface/ESProduct.h"
0012 #endif  // __CUDACC__
0013 
0014 class EcalMultifitParametersGPU {
0015 public:
0016   struct Product {
0017     edm::propagate_const_array<cms::cuda::device::unique_ptr<double[]>> amplitudeFitParametersEB;
0018     edm::propagate_const_array<cms::cuda::device::unique_ptr<double[]>> amplitudeFitParametersEE;
0019     edm::propagate_const_array<cms::cuda::device::unique_ptr<double[]>> timeFitParametersEB;
0020     edm::propagate_const_array<cms::cuda::device::unique_ptr<double[]>> timeFitParametersEE;
0021   };
0022 
0023 #ifndef __CUDACC__
0024   EcalMultifitParametersGPU(std::vector<double> const& amplitudeEB,
0025                             std::vector<double> const& amplitudeEE,
0026                             std::vector<double> const& timeEB,
0027                             std::vector<double> const& timeEE);
0028 
0029   ~EcalMultifitParametersGPU() = default;
0030 
0031   Product const& getProduct(cudaStream_t) const;
0032 
0033   std::array<std::reference_wrapper<std::vector<double, cms::cuda::HostAllocator<double>> const>, 4> getValues() const {
0034     return {{amplitudeFitParametersEB_, amplitudeFitParametersEE_, timeFitParametersEB_, timeFitParametersEE_}};
0035   }
0036 
0037 private:
0038   std::vector<double, cms::cuda::HostAllocator<double>> amplitudeFitParametersEB_, amplitudeFitParametersEE_,
0039       timeFitParametersEB_, timeFitParametersEE_;
0040 
0041   cms::cuda::ESProduct<Product> product_;
0042 #endif  // __CUDACC__
0043 };
0044 
0045 #endif  // CondFormats_EcalObjects_interface_EcalMultifitParametersGPU_h