ATLAS Offline Software
Loading...
Searching...
No Matches
PerEventStreamSvc.cxx
Go to the documentation of this file.
1//
2// Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3//
4
5// Local include(s).
6#include "PerEventStreamSvc.h"
7
8// System include(s).
9#include <cassert>
10#include <iterator>
11
12namespace AthCUDA {
13
15
16 // Create the streams object.
17 m_streams = std::make_unique<
19
20 // Tell the user what happened.
21 ATH_MSG_INFO("Initialized "
22 << std::distance(m_streams->begin(), m_streams->end())
23 << " CUDA stream(s):");
24 for (const auto& stream : *m_streams) {
25 ATH_MSG_INFO(" - " << stream.name());
26 }
27
28 // Return gracefully.
29 return StatusCode::SUCCESS;
30}
31
32cudaStream_t PerEventStreamSvc::stream(const EventContext& ctx) const {
33
34 // Get the stream corresponding to the current slot.
35 assert(m_streams);
36 return m_streams->get(ctx)->stream();
37}
38
39} // namespace AthCUDA
#define ATH_MSG_INFO(x)
std::unique_ptr< const SG::SlotSpecificObj< Details::Stream, SG::InvalidSlot::Enabled > > m_streams
Slot specific CUDA stream(s).
virtual StatusCode initialize() override
Initialize the tool.
virtual cudaStream_t stream(const EventContext &ctx) const override
Get the CUDA stream to use.
Maintain a set of objects, one per slot.
Definition Info.h:14