Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:45:19

0001 #ifndef EventFilter_EcalRawToDigi_plugins_DeclsForKernels_h
0002 #define EventFilter_EcalRawToDigi_plugins_DeclsForKernels_h
0003 
0004 #include <vector>
0005 
0006 #include "CUDADataFormats/EcalDigi/interface/DigisCollection.h"
0007 #include "CondFormats/EcalObjects/interface/ElectronicsMappingGPU.h"
0008 #include "DataFormats/EcalDigi/interface/EcalDataFrame.h"
0009 #include "EventFilter/EcalRawToDigi/interface/DCCRawDataDefinitions.h"
0010 #include "HeterogeneousCore/CUDAUtilities/interface/HostAllocator.h"
0011 #include "HeterogeneousCore/CUDAUtilities/interface/cudaCheck.h"
0012 #include "HeterogeneousCore/CUDAUtilities/interface/device_unique_ptr.h"
0013 #include "HeterogeneousCore/CUDAUtilities/interface/host_unique_ptr.h"
0014 
0015 namespace ecal {
0016   namespace raw {
0017 
0018     struct InputDataCPU {
0019       cms::cuda::host::unique_ptr<unsigned char[]> data;
0020       cms::cuda::host::unique_ptr<uint32_t[]> offsets;
0021       cms::cuda::host::unique_ptr<int[]> feds;
0022     };
0023 
0024     struct ConfigurationParameters {
0025       uint32_t maxChannelsEE;
0026       uint32_t maxChannelsEB;
0027     };
0028 
0029     struct OutputDataCPU {
0030       // [0] - eb, [1] - ee
0031       cms::cuda::host::unique_ptr<uint32_t[]> nchannels;
0032     };
0033 
0034     struct OutputDataGPU {
0035       DigisCollection<::calo::common::DevStoragePolicy> digisEB, digisEE;
0036 
0037       void allocate(ConfigurationParameters const &config, cudaStream_t cudaStream) {
0038         digisEB.data =
0039             cms::cuda::make_device_unique<uint16_t[]>(config.maxChannelsEB * EcalDataFrame::MAXSAMPLES, cudaStream);
0040         digisEE.data =
0041             cms::cuda::make_device_unique<uint16_t[]>(config.maxChannelsEE * EcalDataFrame::MAXSAMPLES, cudaStream);
0042         digisEB.ids = cms::cuda::make_device_unique<uint32_t[]>(config.maxChannelsEB, cudaStream);
0043         digisEE.ids = cms::cuda::make_device_unique<uint32_t[]>(config.maxChannelsEE, cudaStream);
0044       }
0045     };
0046 
0047     struct ScratchDataGPU {
0048       // [0] = EB
0049       // [1] = EE
0050       cms::cuda::device::unique_ptr<uint32_t[]> pChannelsCounter;
0051     };
0052 
0053     struct InputDataGPU {
0054       cms::cuda::device::unique_ptr<unsigned char[]> data;
0055       cms::cuda::device::unique_ptr<uint32_t[]> offsets;
0056       cms::cuda::device::unique_ptr<int[]> feds;
0057     };
0058 
0059     struct ConditionsProducts {
0060       ElectronicsMappingGPU::Product const &eMappingProduct;
0061     };
0062 
0063   }  // namespace raw
0064 }  // namespace ecal
0065 
0066 #endif  // EventFilter_EcalRawToDigi_plugins_DeclsForKernels_h