CMS 3D CMS Logo

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

#include <HcalGainsGPU.h>

Classes

struct  Product
 

Public Member Functions

Product const & getProduct (cudaStream_t) const
 
 HcalGainsGPU (HcalGains const &)
 
 ~HcalGainsGPU ()=default
 

Private Attributes

cms::cuda::ESProduct< Productproduct_
 
uint64_t totalChannels_
 
std::vector< float, cms::cuda::HostAllocator< float > > values_
 

Detailed Description

Definition at line 13 of file HcalGainsGPU.h.

Constructor & Destructor Documentation

◆ HcalGainsGPU()

HcalGainsGPU::HcalGainsGPU ( HcalGains const &  gains)

Definition at line 7 of file HcalGainsGPU.cc.

References ecalph2::gains.

8  : totalChannels_{gains.getAllContainers()[0].second.size() + gains.getAllContainers()[1].second.size()},
10  auto const gainContainers = gains.getAllContainers();
11 
12  // fill in eb
13  auto const& barrelValues = gainContainers[0].second;
14  for (uint64_t i = 0; i < barrelValues.size(); ++i) {
15  values_[i * 4] = barrelValues[i].getValue(0);
16  values_[i * 4 + 1] = barrelValues[i].getValue(1);
17  values_[i * 4 + 2] = barrelValues[i].getValue(2);
18  values_[i * 4 + 3] = barrelValues[i].getValue(3);
19  }
20 
21  // fill in ee
22  auto const& endcapValues = gainContainers[1].second;
23  auto const offset = barrelValues.size();
24  for (uint64_t i = 0; i < endcapValues.size(); ++i) {
25  auto const off = offset + i;
26  values_[off * 4] = endcapValues[i].getValue(0);
27  values_[off * 4 + 1] = endcapValues[i].getValue(1);
28  values_[off * 4 + 2] = endcapValues[i].getValue(2);
29  values_[off * 4 + 3] = endcapValues[i].getValue(3);
30  }
31 }
uint64_t totalChannels_
Definition: HcalGainsGPU.h:30
constexpr float gains[NGAINS]
Definition: EcalConstants.h:20
unsigned long long uint64_t
Definition: Time.h:13
std::vector< float, cms::cuda::HostAllocator< float > > values_
Definition: HcalGainsGPU.h:31

◆ ~HcalGainsGPU()

HcalGainsGPU::~HcalGainsGPU ( )
default

Member Function Documentation

◆ getProduct()

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

Definition at line 33 of file HcalGainsGPU.cc.

References cms::cuda::copyAsync(), product_, cms::cuda::stream, HcalGainsGPU::Product::values, and values_.

33  {
34  auto const& product =
35  product_.dataForCurrentDeviceAsync(stream, [this](HcalGainsGPU::Product& product, cudaStream_t stream) {
36  // allocate
37  product.values = cms::cuda::make_device_unique<float[]>(values_.size(), stream);
38 
39  // transfer
41  });
42 
43  return product;
44 }
edm::propagate_const_array< cms::cuda::device::unique_ptr< float[]> > values
Definition: HcalGainsGPU.h:16
cms::cuda::ESProduct< Product > product_
Definition: HcalGainsGPU.h:33
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
void copyAsync(device::unique_ptr< T > &dst, const host::unique_ptr< T > &src, cudaStream_t stream)
Definition: copyAsync.h:20
std::vector< float, cms::cuda::HostAllocator< float > > values_
Definition: HcalGainsGPU.h:31

Member Data Documentation

◆ product_

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

Definition at line 33 of file HcalGainsGPU.h.

Referenced by getProduct().

◆ totalChannels_

uint64_t HcalGainsGPU::totalChannels_
private

Definition at line 30 of file HcalGainsGPU.h.

◆ values_

std::vector<float, cms::cuda::HostAllocator<float> > HcalGainsGPU::values_
private

Definition at line 31 of file HcalGainsGPU.h.

Referenced by getProduct().