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
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
0049
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 }
0064 }
0065
0066 #endif