File indexing completed on 2023-03-17 10:49:13
0001 #ifndef CUDADataFormats_Track_TrackHeterogeneousDevice_H
0002 #define CUDADataFormats_Track_TrackHeterogeneousDevice_H
0003
0004 #include <cstdint>
0005
0006 #include "CUDADataFormats/Track/interface/PixelTrackUtilities.h"
0007 #include "CUDADataFormats/Common/interface/PortableDeviceCollection.h"
0008
0009 #include "Geometry/CommonTopologies/interface/SimplePixelTopology.h"
0010
0011
0012
0013
0014 template <typename TrackerTraits>
0015 class TrackSoAHeterogeneousDevice : public cms::cuda::PortableDeviceCollection<TrackLayout<TrackerTraits>> {
0016 public:
0017 using cms::cuda::PortableDeviceCollection<TrackLayout<TrackerTraits>>::view;
0018 using cms::cuda::PortableDeviceCollection<TrackLayout<TrackerTraits>>::const_view;
0019 using cms::cuda::PortableDeviceCollection<TrackLayout<TrackerTraits>>::buffer;
0020 using cms::cuda::PortableDeviceCollection<TrackLayout<TrackerTraits>>::bufferSize;
0021
0022 TrackSoAHeterogeneousDevice() = default;
0023
0024
0025 explicit TrackSoAHeterogeneousDevice(cudaStream_t stream)
0026 : cms::cuda::PortableDeviceCollection<TrackLayout<TrackerTraits>>(TrackerTraits::maxNumberOfTuples, stream) {}
0027 };
0028
0029 namespace pixelTrack {
0030
0031 using TrackSoADevicePhase1 = TrackSoAHeterogeneousDevice<pixelTopology::Phase1>;
0032 using TrackSoADevicePhase2 = TrackSoAHeterogeneousDevice<pixelTopology::Phase2>;
0033
0034 }
0035
0036 #endif