CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Attributes
HcalPedestalWidthsGPU Class Reference

#include <HcalPedestalWidthsGPU.h>

Classes

struct  Product
 

Public Member Functions

Product const & getProduct (cudaStream_t) const
 
 HcalPedestalWidthsGPU (HcalPedestalWidths const &)
 
bool unitIsADC () const
 
 ~HcalPedestalWidthsGPU ()=default
 

Private Attributes

cms::cuda::ESProduct< Productproduct_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma00_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma01_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma02_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma03_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma10_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma11_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma12_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma13_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma20_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma21_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma22_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma23_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma30_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma31_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma32_
 
std::vector< float, cms::cuda::HostAllocator< float > > sigma33_
 
uint64_t totalChannels_
 
bool unitIsADC_
 

Detailed Description

Definition at line 13 of file HcalPedestalWidthsGPU.h.

Constructor & Destructor Documentation

◆ HcalPedestalWidthsGPU()

HcalPedestalWidthsGPU::HcalPedestalWidthsGPU ( HcalPedestalWidths const &  pedestals)

Definition at line 7 of file HcalPedestalWidthsGPU.cc.

References HcalPedestalWidths::isADC().

8  : unitIsADC_{pedestals.isADC()},
9  totalChannels_{pedestals.getAllContainers()[0].second.size() + pedestals.getAllContainers()[1].second.size()},
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 }
std::vector< float, cms::cuda::HostAllocator< float > > sigma13_
std::vector< float, cms::cuda::HostAllocator< float > > sigma11_
std::vector< float, cms::cuda::HostAllocator< float > > sigma20_
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_
std::vector< float, cms::cuda::HostAllocator< float > > sigma03_
std::vector< float, cms::cuda::HostAllocator< float > > sigma31_
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_
std::vector< float, cms::cuda::HostAllocator< float > > sigma02_
std::vector< float, cms::cuda::HostAllocator< float > > sigma10_
std::vector< float, cms::cuda::HostAllocator< float > > sigma33_

◆ ~HcalPedestalWidthsGPU()

HcalPedestalWidthsGPU::~HcalPedestalWidthsGPU ( )
default

Member Function Documentation

◆ getProduct()

HcalPedestalWidthsGPU::Product const & HcalPedestalWidthsGPU::getProduct ( cudaStream_t  stream) const

Definition at line 72 of file HcalPedestalWidthsGPU.cc.

References cms::cuda::copyAsync(), product_, HcalPedestalWidthsGPU::Product::sigma00, sigma00_, HcalPedestalWidthsGPU::Product::sigma01, sigma01_, HcalPedestalWidthsGPU::Product::sigma02, sigma02_, HcalPedestalWidthsGPU::Product::sigma03, sigma03_, HcalPedestalWidthsGPU::Product::sigma10, sigma10_, HcalPedestalWidthsGPU::Product::sigma11, sigma11_, HcalPedestalWidthsGPU::Product::sigma12, sigma12_, HcalPedestalWidthsGPU::Product::sigma13, sigma13_, HcalPedestalWidthsGPU::Product::sigma20, sigma20_, HcalPedestalWidthsGPU::Product::sigma21, sigma21_, HcalPedestalWidthsGPU::Product::sigma22, sigma22_, HcalPedestalWidthsGPU::Product::sigma23, sigma23_, HcalPedestalWidthsGPU::Product::sigma30, sigma30_, HcalPedestalWidthsGPU::Product::sigma31, sigma31_, HcalPedestalWidthsGPU::Product::sigma32, sigma32_, HcalPedestalWidthsGPU::Product::sigma33, sigma33_, and cms::cuda::stream.

72  {
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 }
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > sigma01
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_
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_
std::vector< float, cms::cuda::HostAllocator< float > > sigma10_
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_

◆ unitIsADC()

bool HcalPedestalWidthsGPU::unitIsADC ( ) const
inline

Definition at line 45 of file HcalPedestalWidthsGPU.h.

References unitIsADC_.

Member Data Documentation

◆ product_

cms::cuda::ESProduct<Product> HcalPedestalWidthsGPU::product_
private

Definition at line 67 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma00_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma00_
private

Definition at line 50 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma01_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma01_
private

Definition at line 51 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma02_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma02_
private

Definition at line 52 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma03_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma03_
private

Definition at line 53 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma10_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma10_
private

Definition at line 54 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma11_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma11_
private

Definition at line 55 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma12_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma12_
private

Definition at line 56 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma13_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma13_
private

Definition at line 57 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma20_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma20_
private

Definition at line 58 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma21_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma21_
private

Definition at line 59 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma22_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma22_
private

Definition at line 60 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma23_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma23_
private

Definition at line 61 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma30_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma30_
private

Definition at line 62 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma31_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma31_
private

Definition at line 63 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma32_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma32_
private

Definition at line 64 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ sigma33_

std::vector<float, cms::cuda::HostAllocator<float> > HcalPedestalWidthsGPU::sigma33_
private

Definition at line 65 of file HcalPedestalWidthsGPU.h.

Referenced by getProduct().

◆ totalChannels_

uint64_t HcalPedestalWidthsGPU::totalChannels_
private

Definition at line 49 of file HcalPedestalWidthsGPU.h.

◆ unitIsADC_

bool HcalPedestalWidthsGPU::unitIsADC_
private

Definition at line 48 of file HcalPedestalWidthsGPU.h.

Referenced by unitIsADC().