File indexing completed on 2024-12-06 02:45:27
0001 #ifndef HeterogeneousCore_AlpakaTest_plugins_alpaka_TestHelperClass_h
0002 #define HeterogeneousCore_AlpakaTest_plugins_alpaka_TestHelperClass_h
0003
0004 #include <optional>
0005
0006 #include "DataFormats/PortableTestObjects/interface/TestHostCollection.h"
0007 #include "DataFormats/PortableTestObjects/interface/alpaka/TestDeviceCollection.h"
0008 #include "FWCore/Framework/interface/ConsumesCollector.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h"
0011 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h"
0012 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/Event.h"
0013 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/EventSetup.h"
0014 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0015 #include "HeterogeneousCore/AlpakaTest/interface/AlpakaESTestRecords.h"
0016 #include "HeterogeneousCore/AlpakaTest/interface/ESTestData.h"
0017 #include "HeterogeneousCore/AlpakaTest/interface/alpaka/AlpakaESTestData.h"
0018
0019 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0020 class TestHelperClass {
0021 public:
0022 TestHelperClass(edm::ParameterSet const& iConfig, edm::ConsumesCollector iC);
0023
0024 static void fillPSetDescription(edm::ParameterSetDescription& iDesc);
0025
0026 void makeAsync(device::Event const& iEvent, device::EventSetup const& iSetup);
0027
0028 portabletest::TestHostCollection moveFrom() {
0029 auto product = std::move(*hostProduct_);
0030 hostProduct_.reset();
0031 return product;
0032 }
0033
0034 portabletest::TestHostMultiCollection2 moveFromMulti2() {
0035 auto product = std::move(*hostProductMulti2_);
0036 hostProductMulti2_.reset();
0037 return product;
0038 }
0039
0040 portabletest::TestHostMultiCollection3 moveFromMulti3() {
0041 auto product = std::move(*hostProductMulti3_);
0042 hostProductMulti3_.reset();
0043 return product;
0044 }
0045
0046 private:
0047 const device::EDGetToken<portabletest::TestDeviceCollection> getToken_;
0048 const device::EDGetToken<portabletest::TestDeviceMultiCollection2> getTokenMulti2_;
0049 const device::EDGetToken<portabletest::TestDeviceMultiCollection3> getTokenMulti3_;
0050 const edm::ESGetToken<cms::alpakatest::ESTestDataA, AlpakaESTestRecordA> esTokenHost_;
0051 const device::ESGetToken<AlpakaESTestDataCDevice, AlpakaESTestRecordC> esTokenDevice_;
0052
0053
0054 std::optional<portabletest::TestHostCollection> hostProduct_;
0055 std::optional<portabletest::TestHostMultiCollection2> hostProductMulti2_;
0056 std::optional<portabletest::TestHostMultiCollection3> hostProductMulti3_;
0057 };
0058 }
0059
0060 #endif