Skip to content

Commit 4d85726

Browse files
committed
Replace EcalRecHitParametersESProducer with MoveToDeviceCache
1 parent 51977a3 commit 4d85726

File tree

11 files changed

+76
-162
lines changed

11 files changed

+76
-162
lines changed

CondFormats/EcalObjects/interface/EcalRecHitParametersHost.h

Lines changed: 0 additions & 9 deletions
This file was deleted.

CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h

Lines changed: 0 additions & 18 deletions
This file was deleted.

CondFormats/EcalObjects/src/ES_EcalRecHitParametersHost.cc

Lines changed: 0 additions & 4 deletions
This file was deleted.

CondFormats/EcalObjects/src/alpaka/ES_EcalRecHitParametersDevice.cc

Lines changed: 0 additions & 4 deletions
This file was deleted.

RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.dev.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit {
1919
OutputProduct& ebRecHits,
2020
OutputProduct& eeRecHits,
2121
EcalRecHitConditionsDevice const& conditionsDev,
22-
EcalRecHitParametersDevice const& parametersDev,
22+
EcalRecHitParameters const* parametersDev,
2323
edm::TimeValue_t const& eventTime,
2424
ConfigurationParameters const& configParams,
2525
bool const isPhase2) {
@@ -44,7 +44,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit {
4444
ebRecHits.view(),
4545
eeRecHits.view(),
4646
conditionsDev.const_view(),
47-
parametersDev.const_data(),
47+
parametersDev,
4848
eventTime,
4949
configParams);
5050
} else {
@@ -54,7 +54,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit {
5454
ebUncalibRecHits->const_view(),
5555
ebRecHits.view(),
5656
conditionsDev.const_view(),
57-
parametersDev.const_data(),
57+
parametersDev,
5858
eventTime,
5959
configParams);
6060
}

RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitBuilder.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
// Builder of ECAL RecHits on GPU
66
//
77

8+
#include "CondFormats/EcalObjects/interface/EcalRecHitParameters.h"
89
#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h"
9-
#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h"
1010
#include "DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h"
1111
#include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h"
1212
#include "DataFormats/Provenance/interface/Timestamp.h"
@@ -26,7 +26,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit {
2626
OutputProduct& ebRecHits,
2727
OutputProduct& eeRecHits,
2828
EcalRecHitConditionsDevice const& conditionsDev,
29-
EcalRecHitParametersDevice const& parametersDev,
29+
EcalRecHitParameters const* parametersDev,
3030
edm::TimeValue_t const& eventTime,
3131
ConfigurationParameters const& configParams,
3232
bool const isPhase2);

RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitParametersESProducer.cc

Lines changed: 0 additions & 98 deletions
This file was deleted.

RecoLocalCalo/EcalRecProducers/plugins/alpaka/EcalRecHitProducerPortable.cc

Lines changed: 66 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,44 @@
1+
#include "CommonTools/Utils/interface/StringToEnumValue.h"
12
#include "CondFormats/DataRecord/interface/EcalRecHitConditionsRcd.h"
3+
#include "CondFormats/EcalObjects/interface/EcalChannelStatusCode.h"
4+
#include "CondFormats/EcalObjects/interface/EcalRecHitParameters.h"
25
#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h"
3-
#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h"
46
#include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
57
#include "DataFormats/EcalRecHit/interface/RecoTypes.h"
68
#include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h"
79
#include "DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h"
10+
#include "DataFormats/Portable/interface/PortableObject.h"
811
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
912
#include "FWCore/ParameterSet/interface/EmptyGroupDescription.h"
1013
#include "FWCore/ParameterSet/interface/ParameterSet.h"
1114
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
15+
#include "HeterogeneousCore/AlpakaCore/interface/MoveToDeviceCache.h"
1216
#include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDGetToken.h"
1317
#include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h"
1418
#include "HeterogeneousCore/AlpakaCore/interface/alpaka/Event.h"
1519
#include "HeterogeneousCore/AlpakaCore/interface/alpaka/EventSetup.h"
1620
#include "HeterogeneousCore/AlpakaCore/interface/alpaka/stream/EDProducer.h"
17-
#include "HeterogeneousCore/CUDACore/interface/JobConfigurationGPURecord.h"
1821

1922
#include "DeclsForKernels.h"
2023
#include "EcalRecHitBuilder.h"
2124

2225
namespace ALPAKA_ACCELERATOR_NAMESPACE {
26+
namespace {
27+
using EcalRecHitParametersCache =
28+
cms::alpakatools::MoveToDeviceCache<Device, PortableHostObject<EcalRecHitParameters>>;
29+
}
2330

24-
class EcalRecHitProducerPortable : public stream::EDProducer<> {
31+
class EcalRecHitProducerPortable : public stream::EDProducer<edm::GlobalCache<EcalRecHitParametersCache>> {
2532
public:
26-
explicit EcalRecHitProducerPortable(edm::ParameterSet const& ps);
33+
explicit EcalRecHitProducerPortable(edm::ParameterSet const& ps, EcalRecHitParametersCache const*);
2734
~EcalRecHitProducerPortable() override = default;
2835
static void fillDescriptions(edm::ConfigurationDescriptions&);
36+
static std::unique_ptr<EcalRecHitParametersCache> initializeGlobalCache(edm::ParameterSet const& ps);
2937

3038
void produce(device::Event&, device::EventSetup const&) override;
3139

40+
static void globalEndJob(EcalRecHitParametersCache*) {}
41+
3242
private:
3343
bool const isPhase2_;
3444
// input
@@ -45,7 +55,6 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE {
4555

4656
// conditions tokens
4757
const device::ESGetToken<EcalRecHitConditionsDevice, EcalRecHitConditionsRcd> recHitConditionsToken_;
48-
const device::ESGetToken<EcalRecHitParametersDevice, JobConfigurationGPURecord> recHitParametersToken_;
4958
};
5059

5160
void EcalRecHitProducerPortable::fillDescriptions(edm::ConfigurationDescriptions& confDesc) {
@@ -75,17 +84,65 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE {
7584
edm::ParameterDescription<double>("EELaserMAX", 8.0, true)) or
7685
true >> edm::EmptyGroupDescription());
7786

87+
// channel statuses to be exluded from reconstruction
88+
desc.add<std::vector<std::string>>("ChannelStatusToBeExcluded",
89+
{"kDAC",
90+
"kNoisy",
91+
"kNNoisy",
92+
"kFixedG6",
93+
"kFixedG1",
94+
"kFixedG0",
95+
"kNonRespondingIsolated",
96+
"kDeadVFE",
97+
"kDeadFE",
98+
"kNoDataNoTP"});
99+
100+
// reco flags association to channel status flags
101+
edm::ParameterSetDescription psd0;
102+
psd0.add<std::vector<std::string>>("kGood", {"kOk", "kDAC", "kNoLaser", "kNoisy"});
103+
psd0.add<std::vector<std::string>>("kNeighboursRecovered", {"kFixedG0", "kNonRespondingIsolated", "kDeadVFE"});
104+
psd0.add<std::vector<std::string>>("kDead", {"kNoDataNoTP"});
105+
psd0.add<std::vector<std::string>>("kNoisy", {"kNNoisy", "kFixedG6", "kFixedG1"});
106+
psd0.add<std::vector<std::string>>("kTowerRecovered", {"kDeadFE"});
107+
desc.add<edm::ParameterSetDescription>("flagsMapDBReco", psd0);
108+
78109
confDesc.addWithDefaultLabel(desc);
79110
}
80111

81-
EcalRecHitProducerPortable::EcalRecHitProducerPortable(const edm::ParameterSet& ps)
112+
std::unique_ptr<EcalRecHitParametersCache> EcalRecHitProducerPortable::initializeGlobalCache(
113+
edm::ParameterSet const& ps) {
114+
PortableHostObject<EcalRecHitParameters> params(cms::alpakatools::host());
115+
116+
// Translate string representation of ChannelStatusToBeExcluded to enum values and pack into bitset
117+
auto const& channelStatusToBeExcluded = StringToEnumValue<EcalChannelStatusCode::Code>(
118+
ps.getParameter<std::vector<std::string>>("ChannelStatusToBeExcluded"));
119+
for (auto const& st : channelStatusToBeExcluded) {
120+
params->channelStatusCodesToBeExcluded.set(st);
121+
}
122+
123+
// Generate map of channel status codes and corresponding recoFlag bits
124+
auto const& fmdbRecoPset = ps.getParameter<edm::ParameterSet>("flagsMapDBReco");
125+
auto const& recoFlagStrings = fmdbRecoPset.getParameterNames();
126+
for (auto const& recoFlagString : recoFlagStrings) {
127+
auto const recoFlag = static_cast<EcalRecHit::Flags>(StringToEnumValue<EcalRecHit::Flags>(recoFlagString));
128+
auto const& channelStatusCodeStrings = fmdbRecoPset.getParameter<std::vector<std::string>>(recoFlagString);
129+
for (auto const& channelStatusCodeString : channelStatusCodeStrings) {
130+
auto const chStatCode = StringToEnumValue<EcalChannelStatusCode::Code>(channelStatusCodeString);
131+
// set recoFlagBits for this channel status code
132+
params->recoFlagBits.at(chStatCode) = static_cast<uint32_t>(recoFlag);
133+
}
134+
}
135+
136+
return std::make_unique<EcalRecHitParametersCache>(std::move(params));
137+
}
138+
139+
EcalRecHitProducerPortable::EcalRecHitProducerPortable(const edm::ParameterSet& ps, EcalRecHitParametersCache const*)
82140
: isPhase2_{ps.getParameter<bool>("isPhase2")},
83141
uncalibRecHitsTokenEB_{consumes(ps.getParameter<edm::InputTag>("uncalibrecHitsInLabelEB"))},
84142
uncalibRecHitsTokenEE_{isPhase2_ ? device::EDGetToken<InputProduct>{}
85143
: consumes(ps.getParameter<edm::InputTag>("uncalibrecHitsInLabelEE"))},
86144
recHitsTokenEB_{produces(ps.getParameter<std::string>("recHitsLabelEB"))},
87-
recHitConditionsToken_{esConsumes()},
88-
recHitParametersToken_{esConsumes()} {
145+
recHitConditionsToken_{esConsumes()} {
89146
if (!isPhase2_) {
90147
recHitsTokenEE_ = produces(ps.getParameter<std::string>("recHitsLabelEE"));
91148
}
@@ -147,7 +204,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE {
147204

148205
// conditions
149206
auto const& recHitConditionsDev = setup.getData(recHitConditionsToken_);
150-
auto const& recHitParametersDev = setup.getData(recHitParametersToken_);
207+
auto const* recHitParametersDev = globalCache()->get(queue).const_data();
151208

152209
//
153210
// schedule algorithms

RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.dev.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit {
2222
uint32_t* flagBits,
2323
uint32_t* extra,
2424
EcalRecHitConditionsDevice::ConstView conditionsDev,
25-
EcalRecHitParametersDevice::Product const* parametersDev,
25+
EcalRecHitParameters const* parametersDev,
2626
// time, used for time dependent corrections
2727
edm::TimeValue_t const& eventTime,
2828
// configuration

RecoLocalCalo/EcalRecProducers/plugins/alpaka/EnergyComputationKernels.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
#include <alpaka/alpaka.hpp>
55

6+
#include "CondFormats/EcalObjects/interface/EcalRecHitParameters.h"
67
#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitConditionsDevice.h"
7-
#include "CondFormats/EcalObjects/interface/alpaka/EcalRecHitParametersDevice.h"
88
#include "DataFormats/EcalRecHit/interface/alpaka/EcalRecHitDeviceCollection.h"
99
#include "DataFormats/EcalRecHit/interface/alpaka/EcalUncalibratedRecHitDeviceCollection.h"
1010
#include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
@@ -42,7 +42,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit {
4242
uint32_t* flagBits,
4343
uint32_t* extra,
4444
EcalRecHitConditionsDevice::ConstView conditionsDev,
45-
EcalRecHitParametersDevice::Product const* parametersDev,
45+
EcalRecHitParameters const* parametersDev,
4646
// time, used for time dependent corrections
4747
edm::TimeValue_t const& eventTime,
4848
// configuration
@@ -61,7 +61,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit {
6161
EcalUncalibratedRecHitDeviceCollection::ConstView uncalibRecHits,
6262
EcalRecHitDeviceCollection::View recHits,
6363
EcalRecHitConditionsDevice::ConstView conditionsDev,
64-
EcalRecHitParametersDevice::Product const* parametersDev,
64+
EcalRecHitParameters const* parametersDev,
6565
// time, used for time dependent corrections
6666
edm::TimeValue_t const& eventTime,
6767
ConfigurationParameters const& configParams) const {
@@ -110,7 +110,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::ecal::rechit {
110110
EcalRecHitDeviceCollection::View ebRecHits,
111111
EcalRecHitDeviceCollection::View eeRecHits,
112112
EcalRecHitConditionsDevice::ConstView conditionsDev,
113-
EcalRecHitParametersDevice::Product const* parametersDev,
113+
EcalRecHitParameters const* parametersDev,
114114
// time, used for time dependent corrections
115115
edm::TimeValue_t const& eventTime,
116116
ConfigurationParameters const& configParams) const {

0 commit comments

Comments
 (0)