CMS 3D CMS Logo

HcalPedestalWidthsGPU.cc
Go to the documentation of this file.
5 
6 // FIXME: add proper getters to conditions
8  : unitIsADC_{pedestals.isADC()},
9  totalChannels_{pedestals.getAllContainers()[0].second.size() + pedestals.getAllContainers()[1].second.size()},
10  sigma00_(totalChannels_),
11  sigma01_(totalChannels_),
12  sigma02_(totalChannels_),
13  sigma03_(totalChannels_),
14  sigma10_(totalChannels_),
15  sigma11_(totalChannels_),
16  sigma12_(totalChannels_),
17  sigma13_(totalChannels_),
18  sigma20_(totalChannels_),
19  sigma21_(totalChannels_),
20  sigma22_(totalChannels_),
21  sigma23_(totalChannels_),
22  sigma30_(totalChannels_),
23  sigma31_(totalChannels_),
24  sigma32_(totalChannels_),
25  sigma33_(totalChannels_) {
26  auto const containers = pedestals.getAllContainers();
27 
28  // fill in hb
29  auto const& barrelValues = containers[0].second;
30  for (uint64_t i = 0; i < barrelValues.size(); ++i) {
31  sigma00_[i] = *(barrelValues[i].getValues() /* + 0 */);
32  sigma01_[i] = *(barrelValues[i].getValues() + 1);
33  sigma02_[i] = *(barrelValues[i].getValues() + 2);
34  sigma03_[i] = *(barrelValues[i].getValues() + 3);
35  sigma10_[i] = *(barrelValues[i].getValues() + 3);
36  sigma11_[i] = *(barrelValues[i].getValues() + 5);
37  sigma12_[i] = *(barrelValues[i].getValues() + 6);
38  sigma13_[i] = *(barrelValues[i].getValues() + 7);
39  sigma20_[i] = *(barrelValues[i].getValues() + 8);
40  sigma21_[i] = *(barrelValues[i].getValues() + 9);
41  sigma22_[i] = *(barrelValues[i].getValues() + 10);
42  sigma23_[i] = *(barrelValues[i].getValues() + 11);
43  sigma30_[i] = *(barrelValues[i].getValues() + 12);
44  sigma31_[i] = *(barrelValues[i].getValues() + 13);
45  sigma32_[i] = *(barrelValues[i].getValues() + 14);
46  sigma33_[i] = *(barrelValues[i].getValues() + 15);
47  }
48 
49  // fill in he
50  auto const& endcapValues = containers[1].second;
51  auto const offset = barrelValues.size();
52  for (uint64_t i = 0; i < endcapValues.size(); ++i) {
53  sigma00_[i + offset] = *(endcapValues[i].getValues() /* + 0 */);
54  sigma01_[i + offset] = *(endcapValues[i].getValues() + 1);
55  sigma02_[i + offset] = *(endcapValues[i].getValues() + 2);
56  sigma03_[i + offset] = *(endcapValues[i].getValues() + 3);
57  sigma10_[i + offset] = *(endcapValues[i].getValues() + 3);
58  sigma11_[i + offset] = *(endcapValues[i].getValues() + 5);
59  sigma12_[i + offset] = *(endcapValues[i].getValues() + 6);
60  sigma13_[i + offset] = *(endcapValues[i].getValues() + 7);
61  sigma20_[i + offset] = *(endcapValues[i].getValues() + 8);
62  sigma21_[i + offset] = *(endcapValues[i].getValues() + 9);
63  sigma22_[i + offset] = *(endcapValues[i].getValues() + 10);
64  sigma23_[i + offset] = *(endcapValues[i].getValues() + 11);
65  sigma30_[i + offset] = *(endcapValues[i].getValues() + 12);
66  sigma31_[i + offset] = *(endcapValues[i].getValues() + 13);
67  sigma32_[i + offset] = *(endcapValues[i].getValues() + 14);
68  sigma33_[i + offset] = *(endcapValues[i].getValues() + 15);
69  }
70 }
71 
73  auto const& product =
74  product_.dataForCurrentDeviceAsync(stream, [this](HcalPedestalWidthsGPU::Product& product, cudaStream_t stream) {
75  // allocate
76  product.sigma00 = cms::cuda::make_device_unique<float[]>(sigma00_.size(), stream);
77  product.sigma01 = cms::cuda::make_device_unique<float[]>(sigma01_.size(), stream);
78  product.sigma02 = cms::cuda::make_device_unique<float[]>(sigma02_.size(), stream);
79  product.sigma03 = cms::cuda::make_device_unique<float[]>(sigma03_.size(), stream);
80 
81  product.sigma10 = cms::cuda::make_device_unique<float[]>(sigma10_.size(), stream);
82  product.sigma11 = cms::cuda::make_device_unique<float[]>(sigma11_.size(), stream);
83  product.sigma12 = cms::cuda::make_device_unique<float[]>(sigma12_.size(), stream);
84  product.sigma13 = cms::cuda::make_device_unique<float[]>(sigma13_.size(), stream);
85 
86  product.sigma20 = cms::cuda::make_device_unique<float[]>(sigma20_.size(), stream);
87  product.sigma21 = cms::cuda::make_device_unique<float[]>(sigma21_.size(), stream);
88  product.sigma22 = cms::cuda::make_device_unique<float[]>(sigma22_.size(), stream);
89  product.sigma23 = cms::cuda::make_device_unique<float[]>(sigma23_.size(), stream);
90 
91  product.sigma30 = cms::cuda::make_device_unique<float[]>(sigma30_.size(), stream);
92  product.sigma31 = cms::cuda::make_device_unique<float[]>(sigma31_.size(), stream);
93  product.sigma32 = cms::cuda::make_device_unique<float[]>(sigma32_.size(), stream);
94  product.sigma33 = cms::cuda::make_device_unique<float[]>(sigma33_.size(), stream);
95 
96  // transfer
101 
106 
111 
116  });
117 
118  return product;
119 }
120 
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma01
Product const & getProduct(cudaStream_t) const
std::vector< float, cms::cuda::HostAllocator< float > > sigma13_
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma21
std::vector< float, cms::cuda::HostAllocator< float > > sigma11_
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma31
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma02
std::vector< float, cms::cuda::HostAllocator< float > > sigma20_
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma00
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma22
std::vector< float, cms::cuda::HostAllocator< float > > sigma32_
std::vector< float, cms::cuda::HostAllocator< float > > sigma22_
std::vector< float, cms::cuda::HostAllocator< float > > sigma23_
std::vector< float, cms::cuda::HostAllocator< float > > sigma01_
std::vector< float, cms::cuda::HostAllocator< float > > sigma30_
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma33
cms::cuda::ESProduct< Product > product_
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma13
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma11
std::vector< float, cms::cuda::HostAllocator< float > > sigma03_
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma30
void copyAsync(device::unique_ptr< T > &dst, const host::unique_ptr< T > &src, cudaStream_t stream)
Definition: copyAsync.h:20
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma23
std::vector< float, cms::cuda::HostAllocator< float > > sigma31_
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma03
std::vector< float, cms::cuda::HostAllocator< float > > sigma21_
std::vector< float, cms::cuda::HostAllocator< float > > sigma12_
unsigned long long uint64_t
Definition: Time.h:13
std::vector< float, cms::cuda::HostAllocator< float > > sigma00_
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma32
std::vector< float, cms::cuda::HostAllocator< float > > sigma02_
HcalPedestalWidthsGPU(HcalPedestalWidths const &)
std::vector< float, cms::cuda::HostAllocator< float > > sigma10_
#define TYPELOOKUP_DATA_REG(_dataclass_)
Definition: typelookup.h:102
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma10
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma20
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma12
std::vector< float, cms::cuda::HostAllocator< float > > sigma33_