28 enum class errc : unsigned int {
51 __SYCL_EXPORT
const std::error_category &
sycl_category() noexcept;
56 const char *
name() const noexcept
override {
return "sycl"; }
57 std::string
message(
int)
const override {
return "SYCL Error"; }
64 class __SYCL_EXPORT
exception :
public virtual std::exception {
67 "no arguments is deprecated.")
71 exception(std::error_code,
const char *Msg);
73 exception(std::error_code,
const std::string &Msg);
77 exception(
int,
const std::error_category &,
const std::string &);
78 exception(
int,
const std::error_category &,
const char *);
79 exception(
int,
const std::error_category &);
88 const std::error_code &code()
const noexcept;
89 const std::error_category &category()
const noexcept;
91 const char *what()
const noexcept
final;
93 bool has_context()
const noexcept;
98 cl_int get_cl_code()
const;
103 std::shared_ptr<std::string> MMsg;
105 std::shared_ptr<context> MContext;
111 std::shared_ptr<context> Context =
nullptr)
115 std::shared_ptr<context> Context =
nullptr)
121 : MMsg(
std::make_shared<
std::string>(Msg)), MContext(nullptr) {}
126 exception(std::error_code ec, std::shared_ptr<context> SharedPtrCtx,
127 const std::string &what_arg);
131 "
use sycl::exception with sycl::errc::runtime
instead.") runtime_error
136 runtime_error(
const char *Msg,
pi_int32 Err)
137 : runtime_error(
std::string(Msg), Err) {}
139 runtime_error(
const std::string &Msg,
pi_int32 Err)
142 runtime_error(std::error_code ec,
const std::string &Msg,
144 : exception(ec, Msg, PIErr) {}
147 runtime_error(std::error_code ec) : exception(ec) {}
151 "errc::kernel_argument
instead.") kernel_error
152 :
public runtime_error {
156 kernel_error(
const char *Msg,
pi_int32 Err)
157 : kernel_error(
std::string(Msg), Err) {}
159 kernel_error(
const std::string &Msg,
pi_int32 Err)
165 :
public runtime_error {
169 accessor_error(
const char *Msg,
pi_int32 Err)
170 : accessor_error(
std::string(Msg), Err) {}
172 accessor_error(
const std::string &Msg,
pi_int32 Err)
177 "
use sycl::exception with sycl::errc::nd_range
instead.") nd_range_error
178 :
public runtime_error {
182 nd_range_error(
const char *Msg,
pi_int32 Err)
183 : nd_range_error(
std::string(Msg), Err) {}
185 nd_range_error(
const std::string &Msg,
pi_int32 Err)
190 "
use sycl::exception with sycl::errc::event
instead.") event_error
191 :
public runtime_error {
195 event_error(
const char *Msg,
pi_int32 Err)
196 : event_error(
std::string(Msg), Err) {}
198 event_error(
const std::string &Msg,
pi_int32 Err)
204 invalid_parameter_error :
public runtime_error {
206 invalid_parameter_error()
209 invalid_parameter_error(
const char *Msg,
pi_int32 Err)
210 : invalid_parameter_error(
std::string(Msg), Err) {}
212 invalid_parameter_error(
const std::string &Msg,
pi_int32 Err)
222 device_error(
const char *Msg,
pi_int32 Err)
223 : device_error(
std::string(Msg), Err) {}
225 device_error(
const std::string &Msg,
pi_int32 Err)
229 device_error(std::error_code ec) : exception(ec) {}
231 device_error(std::error_code ec,
const std::string &Msg,
const pi_int32 PIErr)
232 : exception(ec, Msg, PIErr) {}
250 link_program_error :
public device_error {
254 link_program_error(
const char *Msg,
pi_int32 Err)
255 : link_program_error(
std::string(Msg), Err) {}
257 link_program_error(
const std::string &Msg,
pi_int32 Err)
263 invalid_object_error :
public device_error {
267 invalid_object_error(
const char *Msg,
pi_int32 Err)
268 : invalid_object_error(
std::string(Msg), Err) {}
270 invalid_object_error(
const std::string &Msg,
pi_int32 Err)
275 "
use sycl::exception with sycl::errc::memory_allocation
instead.")
276 memory_allocation_error :
public device_error {
278 memory_allocation_error()
281 memory_allocation_error(
const char *Msg,
pi_int32 Err)
282 : memory_allocation_error(
std::string(Msg), Err) {}
284 memory_allocation_error(
const std::string &Msg,
pi_int32 Err)
289 "
use sycl::exception with sycl::errc::platform
instead.") platform_error
290 :
public device_error {
294 platform_error(
const char *Msg,
pi_int32 Err)
295 : platform_error(
std::string(Msg), Err) {}
297 platform_error(
const std::string &Msg,
pi_int32 Err)
302 "
use sycl::exception with sycl::errc::profiling
instead.") profiling_error
303 :
public device_error {
307 profiling_error(
const char *Msg,
pi_int32 Err)
308 : profiling_error(
std::string(Msg), Err) {}
310 profiling_error(
const std::string &Msg,
pi_int32 Err)
315 "
use sycl::exception with sycl::errc::feature_not_supported
instead.")
332 template <>
struct is_error_code_enum<
sycl::
errc> : true_type {};