File indexing completed on 2023-03-17 11:05:43
0001 #include "DataFormats/PortableTestObjects/interface/alpaka/TestDeviceCollection.h"
0002 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0003 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0004 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0005 #include "FWCore/Utilities/interface/InputTag.h"
0006 #include "FWCore/Utilities/interface/stringize.h"
0007 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h"
0008 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h"
0009 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h"
0010 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0011 #include "HeterogeneousCore/AlpakaTest/interface/AlpakaESTestRecords.h"
0012 #include "HeterogeneousCore/AlpakaTest/interface/alpaka/AlpakaESTestData.h"
0013
0014 #include "TestAlgo.h"
0015
0016 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0017
0018
0019
0020
0021
0022 class TestAlpakaGlobalProducerOffset : public global::EDProducer<> {
0023 public:
0024 TestAlpakaGlobalProducerOffset(edm::ParameterSet const& config)
0025 : esToken_(esConsumes()),
0026 deviceToken_{produces()},
0027 x_(config.getParameter<edm::ParameterSet>("xvalue").getParameter<double>(
0028 EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE))) {}
0029
0030 void produce(edm::StreamID, device::Event& iEvent, device::EventSetup const& iSetup) const override {
0031 auto const& esData = iSetup.getData(esToken_);
0032
0033 portabletest::TestDeviceCollection deviceProduct{esData->metadata().size(), iEvent.queue()};
0034
0035
0036 algo_.fill(iEvent.queue(), deviceProduct, x_);
0037
0038 iEvent.emplace(deviceToken_, std::move(deviceProduct));
0039 }
0040
0041 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0042 edm::ParameterSetDescription desc;
0043
0044
0045
0046
0047 edm::ParameterSetDescription psetX;
0048 psetX.add<double>("alpaka_serial_sync", 0.);
0049 psetX.add<double>("alpaka_cuda_async", 0.);
0050 desc.add("xvalue", psetX);
0051
0052 descriptions.addWithDefaultLabel(desc);
0053 }
0054
0055 private:
0056 device::ESGetToken<AlpakaESTestDataADevice, AlpakaESTestRecordA> const esToken_;
0057 device::EDPutToken<portabletest::TestDeviceCollection> const deviceToken_;
0058
0059 TestAlgo const algo_{};
0060
0061 double const x_;
0062 };
0063
0064 }
0065
0066 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/MakerMacros.h"
0067 DEFINE_FWK_ALPAKA_MODULE(TestAlpakaGlobalProducerOffset);