File indexing completed on 2024-04-06 12:02:10
0001 #include "CondFormats/EcalObjects/interface/EcalTimeCalibConstantsGPU.h"
0002
0003 #include "FWCore/Utilities/interface/typelookup.h"
0004 #include "HeterogeneousCore/CUDAUtilities/interface/copyAsync.h"
0005
0006 EcalTimeCalibConstantsGPU::EcalTimeCalibConstantsGPU(EcalTimeCalibConstants const& values) {
0007 values_.reserve(values.size());
0008 for (size_t i = 0; i < values.size(); ++i) {
0009 values_.emplace_back(values[i]);
0010 }
0011 offset_ = values.barrelItems().size();
0012 }
0013
0014 EcalTimeCalibConstantsGPU::Product const& EcalTimeCalibConstantsGPU::getProduct(cudaStream_t cudaStream) const {
0015 auto const& product = product_.dataForCurrentDeviceAsync(
0016 cudaStream, [this](EcalTimeCalibConstantsGPU::Product& product, cudaStream_t cudaStream) {
0017
0018 product.values = cms::cuda::make_device_unique<float[]>(values_.size(), cudaStream);
0019
0020 cms::cuda::copyAsync(product.values, values_, cudaStream);
0021 });
0022
0023 return product;
0024 }
0025
0026 TYPELOOKUP_DATA_REG(EcalTimeCalibConstantsGPU);