35 DeviceObjectCollection::buffer& output) {
36 assert(input.size() == output.capacity());
37 DeviceObjectCollection::device helper{output};
38 for (
size_t i = 0; i < input.size(); ++i) {
41 outputObj.
eta() = inputObj->
eta();
42 outputObj.
phi() = inputObj->
phi();
43 outputObj.
indices().at(0u) = 1u;
44 outputObj.
indices().at(1u) = 2u;
49 if (
m_mrs->hostMR() ==
nullptr) {
56 ATH_MSG_DEBUG(
"Using a single memory resource for both host and device");
59 auto output = std::make_unique<DeviceObjectCollection::buffer>(
60 std::vector<unsigned int>(inputHandle->size(), 2),
m_mrs->mainMR());
61 m_copies->hostCopy(ctx)->setup(*output)->wait();
64 copyToBuffer(*inputHandle, *output);
67 ATH_CHECK(outputHandle.record(std::move(output)));
77 ATH_MSG_DEBUG(
"Using separate memory resources for host and device");
80 DeviceObjectCollection::buffer hostBuffer(
81 std::vector<unsigned int>(inputHandle->size(), 2), *(
m_mrs->hostMR()));
82 m_copies->hostCopy(ctx)->setup(hostBuffer)->wait();
85 copyToBuffer(*inputHandle, hostBuffer);
88 auto deviceCopy =
m_copies->deviceCopy(ctx);
91 auto output = std::make_unique<DeviceObjectCollection::buffer>(
92 std::vector<unsigned int>(inputHandle->size(), 2),
m_mrs->mainMR(),
94 deviceCopy->setup(*output)->ignore();
97 (*deviceCopy)(hostBuffer, *output)->wait();
100 ATH_CHECK(outputHandle.record(std::move(output)));
104 return StatusCode::SUCCESS;
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .).
virtual double eta() const override final
The pseudorapidity ( ) of the particle.