20 #include <rmm/detail/error.hpp>
21 #include <rmm/detail/export.hpp>
22 #include <rmm/detail/logging_assert.hpp>
24 #include <cuda_runtime_api.h>
29 namespace RMM_NAMESPACE {
70 auto* stream =
new cudaStream_t;
71 RMM_CUDA_TRY(cudaStreamCreate(stream));
74 [](cudaStream_t* stream) {
75 RMM_ASSERT_CUDA_SUCCESS(cudaStreamDestroy(*stream));
87 [[nodiscard]]
bool is_valid()
const {
return stream_ !=
nullptr; }
94 [[nodiscard]] cudaStream_t
value()
const
96 RMM_LOGGING_ASSERT(is_valid());
103 explicit operator cudaStream_t() const noexcept {
return value(); }
126 void synchronize()
const { RMM_CUDA_TRY(cudaStreamSynchronize(value())); }
135 RMM_ASSERT_CUDA_SUCCESS(cudaStreamSynchronize(value()));
139 std::unique_ptr<cudaStream_t, std::function<void(cudaStream_t*)>> stream_;
具有默认构造函数的 CUDA 流的强类型非拥有包装器。
定义: cuda_stream_view.hpp:39
CUDA 流的拥有包装器。
定义: cuda_stream.hpp:41
void synchronize_no_throw() const noexcept
同步拥有的 CUDA 流。发生错误时不会抛出异常。
定义: cuda_stream.hpp:133
bool is_valid() const
如果拥有的流不为空,则返回 true。
定义: cuda_stream.hpp:87
void synchronize() const
同步拥有的 CUDA 流。
定义: cuda_stream.hpp:126
cuda_stream()
构造一个新的 CUDA 流对象。
定义: cuda_stream.hpp:68
cuda_stream & operator=(cuda_stream &&)=default
移动赋值运算符(默认)
cudaStream_t value() const
获取包装的 CUDA 流的值。
定义: cuda_stream.hpp:94
cuda_stream_view view() const
创建包装的 CUDA 流的不可变、非拥有视图。
定义: cuda_stream.hpp:110
cuda_stream(cuda_stream &&)=default
移动构造函数(默认)