Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:22

0001 #ifndef RecoLocalTracker_SiPixelRecHits_interface_PixelCPEFastParamsDevice_h
0002 #define RecoLocalTracker_SiPixelRecHits_interface_PixelCPEFastParamsDevice_h
0003 
0004 #include <alpaka/alpaka.hpp>
0005 
0006 #include "HeterogeneousCore/AlpakaInterface/interface/memory.h"
0007 #include "RecoLocalTracker/SiPixelRecHits/interface/pixelCPEforDevice.h"
0008 
0009 template <typename TDev, typename TrackerTraits>
0010 class PixelCPEFastParamsDevice {
0011 public:
0012   using Buffer = cms::alpakatools::device_buffer<TDev, pixelCPEforDevice::ParamsOnDeviceT<TrackerTraits>>;
0013   using ConstBuffer = cms::alpakatools::const_device_buffer<TDev, pixelCPEforDevice::ParamsOnDeviceT<TrackerTraits>>;
0014 
0015   template <typename TQueue>
0016   PixelCPEFastParamsDevice(TQueue queue)
0017       : buffer_(cms::alpakatools::make_device_buffer<pixelCPEforDevice::ParamsOnDeviceT<TrackerTraits>>(queue)) {}
0018 
0019   // non-copyable
0020   PixelCPEFastParamsDevice(PixelCPEFastParamsDevice const&) = delete;
0021   PixelCPEFastParamsDevice& operator=(PixelCPEFastParamsDevice const&) = delete;
0022 
0023   // movable
0024   PixelCPEFastParamsDevice(PixelCPEFastParamsDevice&&) = default;
0025   PixelCPEFastParamsDevice& operator=(PixelCPEFastParamsDevice&&) = default;
0026 
0027   // default destructor
0028   ~PixelCPEFastParamsDevice() = default;
0029 
0030   // access the buffer
0031   Buffer buffer() { return buffer_; }
0032   ConstBuffer buffer() const { return buffer_; }
0033   ConstBuffer const_buffer() const { return buffer_; }
0034 
0035   auto size() const { return alpaka::getExtentProduct(buffer_); }
0036 
0037   pixelCPEforDevice::ParamsOnDeviceT<TrackerTraits> const* data() const { return buffer_.data(); }
0038 
0039 private:
0040   Buffer buffer_;
0041 };
0042 
0043 #endif  // RecoLocalTracker_SiPixelRecHits_interface_PixelCPEFastParamsDevice_h