26 #ifndef LBANN_UTILS_DNN_LIB_MIOPEN_UTILS_HPP_ 27 #define LBANN_UTILS_DNN_LIB_MIOPEN_UTILS_HPP_ 30 #if defined LBANN_HAS_MIOPEN 33 using namespace miopen;
42 StreamManager(miopenHandle_t handle, hipStream_t stream) : handle_(handle)
44 CHECK_MIOPEN(miopenGetStream(handle_, &old_stream_));
45 CHECK_MIOPEN(miopenSetStream(handle_, stream));
52 CHECK_MIOPEN(miopenSetStream(handle_, old_stream_));
54 catch (std::exception
const& e) {
55 std::cerr <<
"Caught error in ~dnn_lib::StreamManager().\n\n e.what(): " 56 << e.what() <<
"\n\nCalling std::terminate()." << std::endl;
60 StreamManager(StreamManager
const& other) =
delete;
61 StreamManager(StreamManager&& other)
62 : handle_{other.handle_}, old_stream_{other.old_stream_}
64 other.handle_ =
nullptr;
65 other.old_stream_ =
nullptr;
67 StreamManager& operator=(StreamManager
const& other) =
delete;
68 StreamManager& operator=(StreamManager&& other) =
delete;
70 miopenHandle_t
get()
const noexcept {
return handle_; }
73 miopenHandle_t handle_;
74 hipStream_t old_stream_;
78 make_default_handle_manager(El::SyncInfo<El::Device::GPU>
const& si)
80 return StreamManager(get_handle(), si.Stream());
85 #endif // defined LBANN_HAS_MIOPEN 87 #endif // LBANN_UTILS_DNN_LIB_MIOPEN_UTILS_HPP_