Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef CUDADataFormats_Track_TrackHeterogeneousHost_H
0002 #define CUDADataFormats_Track_TrackHeterogeneousHost_H
0003 
0004 #include <cstdint>
0005 
0006 #include "CUDADataFormats/Track/interface/PixelTrackUtilities.h"
0007 #include "CUDADataFormats/Common/interface/PortableHostCollection.h"
0008 
0009 // TODO: The class is created via inheritance of the PortableHostCollection.
0010 // This is generally discouraged, and should be done via composition.
0011 // See: https://github.com/cms-sw/cmssw/pull/40465#discussion_r1067364306
0012 template <typename TrackerTraits>
0013 class TrackSoAHeterogeneousHost : public cms::cuda::PortableHostCollection<TrackLayout<TrackerTraits>> {
0014 public:
0015   static constexpr int32_t S = TrackerTraits::maxNumberOfTuples;  //TODO: this could be made configurable at runtime
0016   explicit TrackSoAHeterogeneousHost() : cms::cuda::PortableHostCollection<TrackLayout<TrackerTraits>>(S) {}
0017 
0018   using cms::cuda::PortableHostCollection<TrackLayout<TrackerTraits>>::view;
0019   using cms::cuda::PortableHostCollection<TrackLayout<TrackerTraits>>::const_view;
0020   using cms::cuda::PortableHostCollection<TrackLayout<TrackerTraits>>::buffer;
0021   using cms::cuda::PortableHostCollection<TrackLayout<TrackerTraits>>::bufferSize;
0022 
0023   // Constructor which specifies the SoA size
0024   explicit TrackSoAHeterogeneousHost(cudaStream_t stream)
0025       : cms::cuda::PortableHostCollection<TrackLayout<TrackerTraits>>(S, stream) {}
0026 };
0027 
0028 namespace pixelTrack {
0029 
0030   using TrackSoAHostPhase1 = TrackSoAHeterogeneousHost<pixelTopology::Phase1>;
0031   using TrackSoAHostPhase2 = TrackSoAHeterogeneousHost<pixelTopology::Phase2>;
0032   using TrackSoAHostHIonPhase1 = TrackSoAHeterogeneousHost<pixelTopology::HIonPhase1>;
0033 }  // namespace pixelTrack
0034 
0035 #endif  // CUDADataFormats_Track_TrackHeterogeneousT_H