实用程序错误#

group utility_error

定义

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);

Parameters:
  • ... – 这个宏接受两个或三个参数:

    • 第一个参数必须是一个计算结果为真或假的表达式,这是被检查的条件。

    • 第二个参数是一个字符串字面量,用于构造异常的what

    • 当提供时,第三个参数是要抛出的异常。如果未指定,则默认为cudf::logic_error

Throws <tt>_exception_type</tt>:

如果条件评估为0(假)。

CUDF_FAIL(...)#

表示已经采取了错误的代码路径。

示例用法:

 {c++}
// Throws `cudf::logic_error`
CUDF_FAIL("Unsupported code path");

// Throws `std::runtime_error`
CUDF_FAIL("Unsupported code path", std::runtime_error);

Parameters:
  • ... – 这个宏接受一个或两个参数:

    • 第一个参数是一个字符串字面量,用于构造异常的what

    • 当提供时,第二个参数是要抛出的异常。如果未指定,则默认为cudf::logic_error

Throws <tt>_exception_type</tt>:

如果条件评估为0(假)。

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#

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

Returns:

指向存储输出堆栈跟踪的以空字符结尾的字符串的指针

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

Parameters:

message – 与异常关联的消息

inline logic_error(std::string const &message)#

使用错误消息构造一个新的逻辑错误对象。

Parameters:

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错误对象。

Parameters:
  • message – 错误信息

  • error – CUDA 错误代码

inline cudaError_t error_code() const#

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

Returns:

CUDA错误代码

struct fatal_cuda_error : public cudf::cuda_error#

公共函数

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

使用错误消息和代码构造一个新的cuda错误对象。

Parameters:
  • message – 错误信息

  • error – CUDA 错误代码

struct data_type_error : public std::invalid_argument, public cudf::stacktrace_recorder#
#include <error.hpp>

当尝试在不支持的数据类型上执行操作时抛出的异常。

当尝试对不支持的data_type进行操作时,应抛出此异常。此异常不应直接抛出,而是由CUDF_EXPECTS或CUDF_FAIL宏抛出。

公共函数

inline data_type_error(char const *const message)#

构造一个带有错误消息的data_type_error

Parameters:

message – 与异常关联的消息

inline data_type_error(std::string const &message)#

构造一个新的data_type_error对象,并带有错误信息。

Parameters:

message – 与异常关联的消息