#pragma once #include #include #include #include namespace at { namespace native { class miopen_exception : public std::runtime_error { public: miopenStatus_t status; miopen_exception(miopenStatus_t status, const char* msg) : std::runtime_error(msg) , status(status) {} miopen_exception(miopenStatus_t status, const std::string& msg) : std::runtime_error(msg) , status(status) {} }; inline void MIOPEN_CHECK(miopenStatus_t status) { if (status != miopenStatusSuccess) { if (status == miopenStatusNotImplemented) { throw miopen_exception(status, std::string(miopenGetErrorString(status)) + ". This error may appear if you passed in a non-contiguous input."); } throw miopen_exception(status, miopenGetErrorString(status)); } } inline void HIP_CHECK(hipError_t error) { if (error != hipSuccess) { std::string msg("HIP error: "); msg += hipGetErrorString(error); throw std::runtime_error(msg); } } }} // namespace at::native