Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:03:46

0001 #ifndef CUDADataFormats_SiPixelDigi_interface_SiPixelDigisCUDA_h
0002 #define CUDADataFormats_SiPixelDigi_interface_SiPixelDigisCUDA_h
0003 
0004 #include <cuda_runtime.h>
0005 
0006 #include "HeterogeneousCore/CUDAUtilities/interface/device_unique_ptr.h"
0007 #include "HeterogeneousCore/CUDAUtilities/interface/host_unique_ptr.h"
0008 #include "HeterogeneousCore/CUDAUtilities/interface/cudaCompat.h"
0009 #include "CUDADataFormats/Common/interface/PortableDeviceCollection.h"
0010 #include "DataFormats/SiPixelDigiSoA/interface/SiPixelDigisSoA.h"
0011 #include "DataFormats/SoATemplate/interface/SoALayout.h"
0012 
0013 // TODO: The class is created via inheritance of the PortableDeviceCollection.
0014 // This is generally discouraged, and should be done via composition.
0015 // See: https://github.com/cms-sw/cmssw/pull/40465#discussion_r1067364306
0016 class SiPixelDigisCUDA : public cms::cuda::PortableDeviceCollection<SiPixelDigisSoA> {
0017 public:
0018   SiPixelDigisCUDA() = default;
0019   explicit SiPixelDigisCUDA(size_t maxFedWords, cudaStream_t stream)
0020       : PortableDeviceCollection<SiPixelDigisSoA>(maxFedWords + 1, stream) {}
0021 
0022   ~SiPixelDigisCUDA() = default;
0023 
0024   SiPixelDigisCUDA(SiPixelDigisCUDA &&) = default;
0025   SiPixelDigisCUDA &operator=(SiPixelDigisCUDA &&) = default;
0026 
0027   void setNModulesDigis(uint32_t nModules, uint32_t nDigis) {
0028     nModules_h = nModules;
0029     nDigis_h = nDigis;
0030   }
0031 
0032   uint32_t nModules() const { return nModules_h; }
0033   uint32_t nDigis() const { return nDigis_h; }
0034 
0035 private:
0036   uint32_t nModules_h = 0;
0037   uint32_t nDigis_h = 0;
0038 };
0039 
0040 #endif  // CUDADataFormats_SiPixelDigi_interface_SiPixelDigisCUDA_h