File indexing completed on 2024-11-11 23:31:37
0001 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0002 #include "FWCore/Utilities/interface/ESGetToken.h"
0003 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESProducer.h"
0004 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ModuleFactory.h"
0005 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0006 #include "HeterogeneousCore/AlpakaInterface/interface/host.h"
0007 #include "HeterogeneousCore/AlpakaInterface/interface/memory.h"
0008 #include "HeterogeneousCore/AlpakaTest/interface/AlpakaESTestRecords.h"
0009 #include "HeterogeneousCore/AlpakaTest/interface/AlpakaESTestSoA.h"
0010 #include "HeterogeneousCore/AlpakaTest/interface/ESTestData.h"
0011 #include "HeterogeneousCore/AlpakaTest/interface/alpaka/AlpakaESTestData.h"
0012
0013 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0014
0015
0016
0017
0018
0019
0020 class TestAlpakaESProducerAMulti : public ESProducer {
0021 public:
0022 TestAlpakaESProducerAMulti(edm::ParameterSet const& iConfig) : ESProducer(iConfig) {
0023 auto cc = setWhatProduced(this);
0024 token_ = cc.consumes();
0025 }
0026
0027 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0028 edm::ParameterSetDescription desc;
0029 descriptions.addWithDefaultLabel(desc);
0030 }
0031
0032 std::optional<AlpakaESTestDataACMultiHost> produce(AlpakaESTestRecordA const& iRecord) {
0033 auto const& input = iRecord.get(token_);
0034
0035 int const sizeA = 10;
0036 int const sizeC = 100;
0037
0038
0039 AlpakaESTestDataACMultiHost product({{sizeA, sizeC}}, cms::alpakatools::host());
0040 auto viewA = product.view<
0041 cms::alpakatest::AlpakaESTestSoAA>();
0042 auto viewC = product.view<cms::alpakatest::AlpakaESTestSoAC>();
0043
0044 for (int i = 0; i < sizeA; ++i) {
0045 viewA[i].z() = input.value() - i;
0046 }
0047
0048 for (int i = 0; i < sizeC; ++i) {
0049 viewC[i].x() = input.value() + i;
0050 }
0051
0052 return product;
0053 }
0054
0055 private:
0056 edm::ESGetToken<cms::alpakatest::ESTestDataA, AlpakaESTestRecordA> token_;
0057 };
0058 }
0059
0060 DEFINE_FWK_EVENTSETUP_ALPAKA_MODULE(TestAlpakaESProducerAMulti);