实用工具错误#

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#

获取对象构造期间捕获的存储的堆栈跟踪。

返回:

指向存储输出堆栈跟踪的空终止字符串的指针

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 – 与异常关联的消息

struct cuda_error : public std::runtime_error, public cudf::stacktrace_recorder#
#include <error.hpp>

遇到 CUDA 错误时抛出的异常。

cudf::fatal_cuda_error 继承。

公共函数

inline cuda_error(std::string const &message, cudaError_t const &error)#

构造一个带有错误消息和代码的新 cuda error 对象。

参数:
  • message – 错误消息

  • error – CUDA 错误代码

inline cudaError_t error_code() const#

返回与异常关联的 CUDA 错误代码。

返回:

CUDA 错误代码

struct fatal_cuda_error : public cudf::cuda_error#

公共函数

inline cuda_error(std::string const &message, cudaError_t const &error)#

构造一个带有错误消息和代码的新 cuda error 对象。

参数:
  • message – 错误消息

  • error – CUDA 错误代码

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 – 与异常关联的消息