加载中...
搜索中...
无匹配项
error.hpp 文件参考
#include <cuproj/assert.cuh>
#include <cuda_runtime_api.h>
#include <stdexcept>
#include <string>

转到此文件的源代码。

结构体  cuproj::logic_error
 当逻辑前置条件被违反时抛出的异常。 更多...
 
结构体  cuproj::cuda_error
 当遇到 CUDA 错误时抛出的异常。 更多...
 

#define CUPROJ_STRINGIFY_DETAIL(x)
 
#define CUPROJ_STRINGIFY(x)
 
#define CUPROJ_EXPECTS(cond, reason)
 用于检查(前置)条件并在条件被违反时抛出异常的宏。
 
#define CUPROJ_HOST_DEVICE_EXPECTS(cond, reason)
 用于检查(前置)条件并在条件被违反时抛出异常的宏。
 
#define CUPROJ_FAIL(reason)
 表示代码执行路径发生了错误。
 
#define CUPROJ_CUDA_TRY(call)
 用于检查 CUDA 运行时 API 函数错误的宏。
 
#define CUPROJ_CHECK_CUDA(stream)
 用于检查 CUDA 错误的调试宏。
 

函数

void cuproj::detail::throw_cuda_error (cudaError_t error, const char *file, unsigned int line)
 

宏定义文档

◆ CUPROJ_CHECK_CUDA

#define CUPROJ_CHECK_CUDA ( stream)
定义
do { \
CUPROJ_CUDA_TRY(cudaStreamSynchronize(stream)); \
CUPROJ_CUDA_TRY(cudaPeekAtLastError()); \
} while (0);

用于检查 CUDA 错误的调试宏。

在非发布版本构建中,此宏将在错误检查之前同步指定的流。在发布和非发布版本构建中,此宏都会检查之前调用中任何待处理的 CUDA 错误。如果报告了错误,将抛出异常,详细说明发生的 CUDA 错误。

此宏的目的是为调试异步 CUDA 执行提供一种同步且确定性的执行机制。它应在任何异步 CUDA 调用之后使用,例如 cudaMemcpyAsync 或异步内核启动。

定义位于文件 error.hpp166 行。

◆ CUPROJ_CUDA_TRY

#define CUPROJ_CUDA_TRY ( call)
定义
do { \
cudaError_t const status = (call); \
if (cudaSuccess != status) { \
cudaGetLastError(); \
cuproj::detail::throw_cuda_error(status, __FILE__, __LINE__); \
} \
} while (0);

用于检查 CUDA 运行时 API 函数错误的宏。

调用 CUDA 运行时 API 函数,如果调用未返回 cudaSuccess,则调用 cudaGetLastError() 清除错误并抛出异常,详细说明发生的 CUDA 错误

定义位于文件 error.hpp143 行。

◆ CUPROJ_EXPECTS

#define CUPROJ_EXPECTS ( cond,
reason )
定义
(!!(cond)) ? static_cast<void>(0) \
: throw cuproj::logic_error("cuProj failure at: " __FILE__ \
":" CUPROJ_STRINGIFY(__LINE__) ": " reason)
当逻辑前置条件被违反时抛出的异常。

用于检查(前置)条件并在条件被违反时抛出异常的宏。

示例用法

CUPROJ_EXPECTS(lhs->dtype == rhs->dtype, "Column type mismatch");
#define CUPROJ_EXPECTS(cond, reason)
用于检查(前置)条件并在条件被违反时抛出异常的宏。
参数
[in]cond评估为真或假的表达式
[in]reason期望 cond 为真的原因的字符串字面量描述
异常
cuproj::logic_error如果条件评估为假。

定义位于文件 error.hpp76 行。

◆ CUPROJ_FAIL

#define CUPROJ_FAIL ( reason)
定义
throw cuproj::logic_error("cuProj failure at: " __FILE__ CUPROJ_STRINGIFY( \
__LINE__) ":" \
" " reason)

表示代码执行路径发生了错误。

在主机代码中,抛出 cuproj::logic_error

示例用法

CUPROJ_FAIL("Non-arithmetic operation is not supported");
#define CUPROJ_FAIL(reason)
表示代码执行路径发生了错误。
参数
[in]reason原因的字符串字面量描述

定义位于文件 error.hpp118 行。

◆ CUPROJ_HOST_DEVICE_EXPECTS

#define CUPROJ_HOST_DEVICE_EXPECTS ( cond,
reason )
定义
CUPROJ_EXPECTS(cond, reason)

用于检查(前置)条件并在条件被违反时抛出异常的宏。

示例用法

CUPROJ_HOST_DEVICE_EXPECTS(lhs->dtype == rhs->dtype, "Column type
*mismatch");
#define CUPROJ_HOST_DEVICE_EXPECTS(cond, reason)
用于检查(前置)条件并在条件被违反时抛出异常的宏。
参数
[in]cond评估为真或假的表达式
[in]reason期望 cond 为真的原因的字符串字面量描述

(如果在主机上)

异常
cuproj::logic_error如果条件评估为假。(如果在设备上)程序终止并将断言错误消息打印到 stderr。

定义位于文件 error.hpp100 行。

◆ CUPROJ_STRINGIFY

#define CUPROJ_STRINGIFY ( x)
定义
CUPROJ_STRINGIFY_DETAIL(x)

定义位于文件 error.hpp59 行。

◆ CUPROJ_STRINGIFY_DETAIL

#define CUPROJ_STRINGIFY_DETAIL ( x)
定义
#x

定义位于文件 error.hpp58 行。

函数文档

◆ throw_cuda_error()

void cuproj::detail::throw_cuda_error ( cudaError_t error,
const char * file,
unsigned int line )
inline

定义位于文件 error.hpp126 行。