diff --git a/CondFormats/EcalObjects/interface/EcalRecHitParameters.h b/CondFormats/EcalObjects/interface/EcalRecHitParameters.h new file mode 100644 index 0000000000000..1939f10643153 --- /dev/null +++ b/CondFormats/EcalObjects/interface/EcalRecHitParameters.h @@ -0,0 +1,16 @@ +#ifndef CondFormats_EcalObjects_EcalRecHitParameters_h +#define CondFormats_EcalObjects_EcalRecHitParameters_h + +#include +#include + +constexpr size_t kNEcalChannelStatusCodes = 16; // The HW supports 16 channel status codes +using RecoFlagBitsArray = + std::array; // associate recoFlagBits to all channel status codes + +struct EcalRecHitParameters { + RecoFlagBitsArray recoFlagBits; + std::bitset channelStatusCodesToBeExcluded; +}; + +#endif diff --git a/CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h b/CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h index 33820185c6806..290cffe351a5a 100644 --- a/CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h +++ b/CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h @@ -1,11 +1,9 @@ #ifndef CondFormats_EcalObjects_interface_EcalRecHitParametersHost_h #define CondFormats_EcalObjects_interface_EcalRecHitParametersHost_h -#include "CondFormats/EcalObjects/interface/EcalRecHitParametersSoA.h" -#include "DataFormats/Portable/interface/PortableHostCollection.h" -#include "HeterogeneousCore/AlpakaInterface/interface/config.h" -#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" +#include "CondFormats/EcalObjects/interface/EcalRecHitParameters.h" +#include "DataFormats/Portable/interface/PortableHostObject.h" -using EcalRecHitParametersHost = PortableHostCollection; +using EcalRecHitParametersHost = PortableHostObject; #endif diff --git a/CondFormats/EcalObjects/interface/EcalRecHitParametersSoA.h b/CondFormats/EcalObjects/interface/EcalRecHitParametersSoA.h deleted file mode 100644 index d33028c37a041..0000000000000 --- a/CondFormats/EcalObjects/interface/EcalRecHitParametersSoA.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef CondFormats_EcalObjects_EcalRecHitParametersSoA_h -#define CondFormats_EcalObjects_EcalRecHitParametersSoA_h - -#include -#include -#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" -#include "DataFormats/SoATemplate/interface/SoACommon.h" -#include "DataFormats/SoATemplate/interface/SoALayout.h" -#include "DataFormats/SoATemplate/interface/SoAView.h" - -constexpr size_t kNEcalChannelStatusCodes = 16; // The HW supports 16 channel status codes -using RecoFlagBitsArray = - std::array; // associate recoFlagBits to all channel status codes - -GENERATE_SOA_LAYOUT(EcalRecHitParametersSoALayout, - SOA_SCALAR(RecoFlagBitsArray, recoFlagBits), - SOA_SCALAR(std::bitset, channelStatusCodesToBeExcluded)) - -using EcalRecHitParametersSoA = EcalRecHitParametersSoALayout<>; - -#endif diff --git a/CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h b/CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h index 569a480ad91d6..f63c8ac34b800 100644 --- a/CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h +++ b/CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h @@ -1,17 +1,18 @@ #ifndef CondFormats_EcalObjects_interface_alpaka_EcalRecHitParametersDevice_h #define CondFormats_EcalObjects_interface_alpaka_EcalRecHitParametersDevice_h +#include "CondFormats/EcalObjects/interface/EcalRecHitParameters.h" #include "CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h" -#include "CondFormats/EcalObjects/interface/EcalRecHitParametersSoA.h" -#include "DataFormats/Portable/interface/alpaka/PortableCollection.h" +#include "DataFormats/Portable/interface/alpaka/PortableObject.h" #include "HeterogeneousCore/AlpakaInterface/interface/config.h" -#include "HeterogeneousCore/AlpakaInterface/interface/memory.h" namespace ALPAKA_ACCELERATOR_NAMESPACE { using ::EcalRecHitParametersHost; - using EcalRecHitParametersDevice = PortableCollection; + using EcalRecHitParametersDevice = PortableObject; } // namespace ALPAKA_ACCELERATOR_NAMESPACE +ASSERT_DEVICE_MATCHES_HOST_COLLECTION(EcalRecHitParametersDevice, EcalRecHitParametersHost); + #endif diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.dev.cc b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.dev.cc index 2806f5988d4bd..574d0755f4987 100644 --- a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.dev.cc +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.dev.cc @@ -44,7 +44,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { ebRecHits.view(), eeRecHits.view(), conditionsDev.const_view(), - parametersDev.const_view(), + parametersDev.const_data(), eventTime, configParams); } else { @@ -54,7 +54,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { ebUncalibRecHits->const_view(), ebRecHits.view(), conditionsDev.const_view(), - parametersDev.const_view(), + parametersDev.const_data(), eventTime, configParams); } diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitParametersESProducer.cc b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitParametersESProducer.cc index b57802fedeedc..a87a1675f2038 100644 --- a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitParametersESProducer.cc +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitParametersESProducer.cc @@ -2,9 +2,11 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "CondFormats/EcalObjects/interface/EcalChannelStatusCode.h" -#include "CondFormats/EcalObjects/interface/EcalRecHitParametersSoA.h" +#include "CondFormats/EcalObjects/interface/EcalRecHitParameters.h" #include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" + #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h" #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h" #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ModuleFactory.h" @@ -81,13 +83,12 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { std::unique_ptr EcalRecHitParametersESProducer::produce( JobConfigurationGPURecord const& iRecord) { - size_t const sizeone = 1; - auto product = std::make_unique(sizeone, cms::alpakatools::host()); - auto view = product->view(); + auto product = std::make_unique(cms::alpakatools::host()); + auto value = product->value(); - std::memcpy(view.recoFlagBits().data(), recoFlagBitsArray_.data(), sizeof(uint32_t) * recoFlagBitsArray_.size()); + std::memcpy(value.recoFlagBits.data(), recoFlagBitsArray_.data(), sizeof(uint32_t) * recoFlagBitsArray_.size()); - view.channelStatusCodesToBeExcluded() = channelStatusCodesToBeExcluded_; + value.channelStatusCodesToBeExcluded = channelStatusCodesToBeExcluded_; return product; } diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.dev.cc b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.dev.cc index f898cef299570..aa6c6ecdef1df 100644 --- a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.dev.cc +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.dev.cc @@ -22,7 +22,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { uint32_t* flagBits, uint32_t* extra, EcalRecHitConditionsDevice::ConstView conditionsDev, - EcalRecHitParametersDevice::ConstView parametersDev, + EcalRecHitParametersDevice::Product const* parametersDev, // time, used for time dependent corrections edm::TimeValue_t const& eventTime, // configuration @@ -160,14 +160,14 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { auto const dbChStatus = static_cast(conditionsDev.channelStatus()[hashedId] & EcalChannelStatusCode::chStatusMask); - auto const& exclChStatCodes = parametersDev.channelStatusCodesToBeExcluded(); + auto const& exclChStatCodes = parametersDev->channelStatusCodesToBeExcluded; if (exclChStatCodes[dbChStatus]) { // skip the channel if the channel status bit is set and should be excluded return; } // Take our association map of dbChStatuses-> recHit flagbits and return the appropriate flagbit word - auto const& recoFlagBits = parametersDev.recoFlagBits()[dbChStatus]; + auto const& recoFlagBits = parametersDev->recoFlagBits[dbChStatus]; flagBits[inputCh] = recoFlagBits; if ((flagmask & recoFlagBits) && killDeadChannels) { diff --git a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.h b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.h index 03a7549c87cab..1f9f73cc8236b 100644 --- a/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.h +++ b/RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.h @@ -7,6 +7,7 @@ #include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h" #include "DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h" #include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h" +#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHit.h" #include "DataFormats/Provenance/interface/Timestamp.h" @@ -41,7 +42,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { uint32_t* flagBits, uint32_t* extra, EcalRecHitConditionsDevice::ConstView conditionsDev, - EcalRecHitParametersDevice::ConstView parametersDev, + EcalRecHitParametersDevice::Product const* parametersDev, // time, used for time dependent corrections edm::TimeValue_t const& eventTime, // configuration @@ -60,7 +61,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { EcalUncalibratedRecHitDeviceCollection::ConstView uncalibRecHits, EcalRecHitDeviceCollection::View recHits, EcalRecHitConditionsDevice::ConstView conditionsDev, - EcalRecHitParametersDevice::ConstView parametersDev, + EcalRecHitParametersDevice::Product const* parametersDev, // time, used for time dependent corrections edm::TimeValue_t const& eventTime, ConfigurationParameters const& configParams) const { @@ -109,7 +110,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit { EcalRecHitDeviceCollection::View ebRecHits, EcalRecHitDeviceCollection::View eeRecHits, EcalRecHitConditionsDevice::ConstView conditionsDev, - EcalRecHitParametersDevice::ConstView parametersDev, + EcalRecHitParametersDevice::Product const* parametersDev, // time, used for time dependent corrections edm::TimeValue_t const& eventTime, ConfigurationParameters const& configParams) const {