21 #include <rmm/detail/error.hpp>
54 RMM_EXPECTS(pool_size > 0,
"Stream pool size must be greater than zero");
72 return streams_[(next_stream++) % streams_.size()].view();
87 return streams_[stream_id % streams_.size()].view();
100 std::vector<rmm::cuda_stream> streams_;
101 mutable std::atomic_size_t next_stream{};
A pool of CUDA streams.
Definition: cuda_stream_pool.hpp:42
static constexpr std::size_t default_size
Default stream pool size.
Definition: cuda_stream_pool.hpp:44
cuda_stream_pool(std::size_t pool_size=default_size)
Construct a new cuda stream pool object of the given non-zero size.
Definition: cuda_stream_pool.hpp:52
std::size_t get_pool_size() const noexcept
Get the number of streams in the pool.
Definition: cuda_stream_pool.hpp:97
rmm::cuda_stream_view get_stream() const noexcept
Get a cuda_stream_view of a stream in the pool.
Definition: cuda_stream_pool.hpp:70
rmm::cuda_stream_view get_stream(std::size_t stream_id) const
Get a cuda_stream_view of the stream associated with stream_id. Equivalent values of stream_id return...
Definition: cuda_stream_pool.hpp:85
Strongly-typed non-owning wrapper for CUDA streams with default constructor.
Definition: cuda_stream_view.hpp:41