Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:02:16

0001 #include "CondFormats/HcalObjects/interface/HcalRecoParams.h"
0002 #include "CondFormats/HcalObjects/interface/HcalRecoParamsGPU.h"
0003 #include "FWCore/Utilities/interface/typelookup.h"
0004 #include "HeterogeneousCore/CUDAUtilities/interface/copyAsync.h"
0005 
0006 // FIXME: add proper getters to conditions
0007 HcalRecoParamsGPU::HcalRecoParamsGPU(HcalRecoParams const& recoParams)
0008     : totalChannels_{recoParams.getAllContainers()[0].second.size() + recoParams.getAllContainers()[1].second.size()},
0009       param1_(totalChannels_),
0010       param2_(totalChannels_) {
0011   auto const& containers = recoParams.getAllContainers();
0012 
0013   // fill in eb
0014   auto const& barrelValues = containers[0].second;
0015   for (uint64_t i = 0; i < barrelValues.size(); ++i) {
0016     param1_[i] = barrelValues[i].param1();
0017     param2_[i] = barrelValues[i].param2();
0018   }
0019 
0020   // fill in ee
0021   auto const& endcapValues = containers[1].second;
0022   auto const offset = barrelValues.size();
0023   for (uint64_t i = 0; i < endcapValues.size(); ++i) {
0024     param1_[i + offset] = endcapValues[i].param1();
0025     param2_[i + offset] = endcapValues[i].param2();
0026   }
0027 }
0028 
0029 HcalRecoParamsGPU::Product const& HcalRecoParamsGPU::getProduct(cudaStream_t stream) const {
0030   auto const& product =
0031       product_.dataForCurrentDeviceAsync(stream, [this](HcalRecoParamsGPU::Product& product, cudaStream_t stream) {
0032         // allocate
0033         product.param1 = cms::cuda::make_device_unique<uint32_t[]>(param1_.size(), stream);
0034         product.param2 = cms::cuda::make_device_unique<uint32_t[]>(param2_.size(), stream);
0035 
0036         // transfer
0037         cms::cuda::copyAsync(product.param1, param1_, stream);
0038         cms::cuda::copyAsync(product.param2, param2_, stream);
0039       });
0040 
0041   return product;
0042 }
0043 
0044 TYPELOOKUP_DATA_REG(HcalRecoParamsGPU);