CMS 3D CMS Logo

TrackingRecHitsDevice.h
Go to the documentation of this file.
1 #ifndef DataFormats_TrackingRecHitSoA_interface_TrackingRecHitSoADevice_h
2 #define DataFormats_TrackingRecHitSoA_interface_TrackingRecHitSoADevice_h
3 
4 #include <cstdint>
5 
6 #include <alpaka/alpaka.hpp>
7 
12 
13 template <typename TrackerTraits, typename TDev>
14 class TrackingRecHitDevice : public PortableDeviceCollection<TrackingRecHitLayout<TrackerTraits>, TDev> {
15 public:
17  //Need to decorate the class with the inherited portable accessors being now a template
21 
22  TrackingRecHitDevice() = default;
23 
24  // Constructor which specifies the SoA size
25  template <typename TQueue>
26  explicit TrackingRecHitDevice(uint32_t nHits, int32_t offsetBPIX2, uint32_t const* hitsModuleStart, TQueue queue)
27  : PortableDeviceCollection<TrackingRecHitLayout<TrackerTraits>, TDev>(nHits, queue) {
28  const auto device = alpaka::getDev(queue);
29 
31  auto start_d =
33  alpaka::memcpy(queue, start_d, start_h);
34 
35  auto off_h = cms::alpakatools::make_host_view(offsetBPIX2);
36  auto off_d = cms::alpakatools::make_device_view(device, view().offsetBPIX2());
37  alpaka::memcpy(queue, off_d, off_h);
39  }
40 
41  uint32_t nHits() const { return view().metadata().size(); }
42  uint32_t const* hitsModuleStart() const { return view().hitsModuleStart().data(); }
43 };
44 #endif // DataFormats_RecHits_interface_TrackingRecHitSoADevice_h
typename TrackingRecHitSoA< TrackerTraits >::template TrackingRecHitSoALayout<> TrackingRecHitLayout
std::enable_if_t< not std::is_array_v< T >, device_view< TDev, T > > make_device_view(TDev const &device, T &data)
Definition: memory.h:252
constexpr uint16_t numberOfModules
TrackingRecHitDevice()=default
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:80
std::enable_if_t< not std::is_array_v< T >, host_view< T > > make_host_view(T &data)
Definition: memory.h:145
TrackingRecHitDevice(uint32_t nHits, int32_t offsetBPIX2, uint32_t const *hitsModuleStart, TQueue queue)
uint32_t const * hitsModuleStart() const