File indexing completed on 2024-04-06 12:03:45
0001 #ifndef CUDADataFormats_BeamSpot_interface_BeamSpotCUDA_h
0002 #define CUDADataFormats_BeamSpot_interface_BeamSpotCUDA_h
0003
0004 #include <cuda_runtime.h>
0005
0006 #include "DataFormats/BeamSpot/interface/BeamSpotPOD.h"
0007 #include "HeterogeneousCore/CUDAUtilities/interface/device_unique_ptr.h"
0008
0009 class BeamSpotCUDA {
0010 public:
0011
0012 BeamSpotCUDA() = default;
0013
0014
0015 BeamSpotCUDA(cudaStream_t stream) { data_d_ = cms::cuda::make_device_unique<BeamSpotPOD>(stream); }
0016
0017
0018 BeamSpotCUDA(BeamSpotCUDA const&) = delete;
0019 BeamSpotCUDA(BeamSpotCUDA&&) = default;
0020 BeamSpotCUDA& operator=(BeamSpotCUDA const&) = delete;
0021 BeamSpotCUDA& operator=(BeamSpotCUDA&&) = default;
0022
0023 BeamSpotPOD* data() { return data_d_.get(); }
0024 BeamSpotPOD const* data() const { return data_d_.get(); }
0025
0026 cms::cuda::device::unique_ptr<BeamSpotPOD>& ptr() { return data_d_; }
0027 cms::cuda::device::unique_ptr<BeamSpotPOD> const& ptr() const { return data_d_; }
0028
0029 private:
0030 cms::cuda::device::unique_ptr<BeamSpotPOD> data_d_;
0031 };
0032
0033 #endif