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
0020 PixelCPEFastParamsDevice(PixelCPEFastParamsDevice const&) = delete;
0021 PixelCPEFastParamsDevice& operator=(PixelCPEFastParamsDevice const&) = delete;
0022
0023
0024 PixelCPEFastParamsDevice(PixelCPEFastParamsDevice&&) = default;
0025 PixelCPEFastParamsDevice& operator=(PixelCPEFastParamsDevice&&) = default;
0026
0027
0028 ~PixelCPEFastParamsDevice() = default;
0029
0030
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