实用工具错误#
- group 异常
定义
-
CUDF_EXPECTS(...)#
用于检查(前置)条件,并在条件被违反时抛出异常的宏。
默认为抛出
cudf::logic_error
,但也可以指定自定义异常。示例用法
// throws cudf::logic_error CUDF_EXPECTS(p != nullptr, "Unexpected null pointer"); // throws std::runtime_error CUDF_EXPECTS(p != nullptr, "Unexpected nullptr", std::runtime_error);
- 参数:
... – 此宏接受两个或三个参数
第一个参数必须是评估为真或假的表达式,它是正在被检查的条件。
第二个参数是一个字符串字面量,用于构造异常的
what
消息。如果给定,第三个参数是要抛出的异常。如果未指定,则默认为
cudf::logic_error
。
- 抛出 <tt>_exception_type</tt>:
如果条件评估为 0 (false)。
-
CUDF_FAIL(...)#
表示已执行了错误的执行路径。
示例用法
{c++} // Throws `cudf::logic_error` CUDF_FAIL("Unsupported code path"); // Throws `std::runtime_error` CUDF_FAIL("Unsupported code path", std::runtime_error);
- 参数:
... – 此宏接受一个或两个参数
第一个参数是一个字符串字面量,用于构造异常的
what
消息。如果给定,第二个参数是要抛出的异常。如果未指定,则默认为
cudf::logic_error
。
- 抛出 <tt>_exception_type</tt>:
如果条件评估为 0 (false)。
-
CUDF_CUDA_TRY(call)#
用于检查 CUDA 运行时 API 函数错误的宏。
调用 CUDA 运行时 API 函数,如果调用未返回 cudaSuccess,则调用 cudaGetLastError() 以清除错误,并抛出详细说明发生的 CUDA 错误的异常。
-
CUDF_CHECK_CUDA(stream)#
用于检查 CUDA 错误的调试宏。
在非发布版本构建中,此宏将在错误检查之前同步指定的流。在发布版本和非发布版本构建中,此宏都会检查先前调用中是否存在任何待处理的 CUDA 错误。如果报告了错误,则会抛出详细说明发生的 CUDA 错误的异常。
此宏的目的是为调试异步 CUDA 执行提供同步且确定性的执行机制。它应在任何异步 CUDA 调用(例如 cudaMemcpyAsync 或异步内核启动)之后使用。
-
struct stacktrace_recorder#
- #include <error.hpp>
在构造时存储当前堆栈跟踪的结构体。
由 cudf::cuda_error, cudf::data_type_error, cudf::logic_error 继承。
公共函数
-
inline char const *stacktrace() const#
获取对象构造期间捕获的存储的堆栈跟踪。
- 返回:
指向存储输出堆栈跟踪的空终止字符串的指针
-
inline char const *stacktrace() const#
-
struct logic_error : public std::logic_error, public cudf::stacktrace_recorder#
- #include <error.hpp>
当逻辑前置条件被违反时抛出的异常。
此异常不应直接抛出,而是由 CUDF_EXPECTS 宏抛出。
公共函数
-
inline logic_error(char const *const message)#
构造一个带有错误消息的 logic_error。
- 参数:
message – 与异常关联的消息
-
inline logic_error(std::string const &message)#
构造一个新的带有错误消息的 logic error 对象。
- 参数:
message – 与异常关联的消息
-
inline logic_error(char const *const message)#
-
struct cuda_error : public std::runtime_error, public cudf::stacktrace_recorder#
- #include <error.hpp>
遇到 CUDA 错误时抛出的异常。
由 cudf::fatal_cuda_error 继承。
-
struct fatal_cuda_error : public cudf::cuda_error#
公共函数
-
inline cuda_error(std::string const &message, cudaError_t const &error)#
构造一个带有错误消息和代码的新 cuda error 对象。
- 参数:
message – 错误消息
error – CUDA 错误代码
-
inline cuda_error(std::string const &message, cudaError_t const &error)#
-
struct data_type_error : public std::invalid_argument, public cudf::stacktrace_recorder#
- #include <error.hpp>
尝试对不受支持的数据类型 (dtype) 执行操作时抛出的异常。
当尝试对不受支持的 data_type 执行操作时,应抛出此异常。此异常不应直接抛出,而是由 CUDF_EXPECTS 或 CUDF_FAIL 宏抛出。
公共函数
-
inline data_type_error(char const *const message)#
构造一个带有错误消息的 data_type_error。
- 参数:
message – 与异常关联的消息
-
inline data_type_error(std::string const &message)#
构造一个新的带有错误消息的 data_type_error 对象。
- 参数:
message – 与异常关联的消息
-
inline data_type_error(char const *const message)#
-
CUDF_EXPECTS(...)#