6 #include "hamr_config.h"
11 #if defined(HAMR_ENABLE_CUDA)
12 #include <cuda_runtime.h>
14 using cudaStream_t =
void*;
16 #if defined(HAMR_ENABLE_HIP)
17 #include <hip/hip_runtime.h>
19 using hipStream_t =
void*;
40 #if defined(HAMR_ENABLE_CUDA)
41 m_stream(std::in_place_index<1>, cudaStreamPerThread)
42 #elif defined(HAMR_ENABLE_HIP)
43 m_stream(std::in_place_index<2>, hipStreamPerThread)
45 m_stream(std::in_place_index<0>,
'\0')
55 #if defined(HAMR_ENABLE_CUDA)
57 operator cudaStream_t ()
const {
return this->get_cuda_stream(); }
60 stream &operator=(cudaStream_t strm)
67 stream(
const cudaStream_t &strm) : m_stream(std::in_place_index<1>, strm) {}
70 cudaStream_t get_cuda_stream()
const
72 const cudaStream_t *cs;
73 if ((cs = std::get_if<1>(&m_stream)))
78 #if defined(HAMR_ENABLE_HIP)
80 operator hipStream_t ()
const {
return this->get_hip_stream(); }
83 stream &operator=(hipStream_t strm)
90 stream(hipStream_t &strm) : m_stream(std::in_place_index<2>, strm) {}
93 hipStream_t get_hip_stream()
const
95 const hipStream_t *hs;
96 if ((hs = std::get_if<2>(&m_stream)))
106 operator bool()
const;
115 std::variant<char, cudaStream_t, hipStream_t> m_stream;