#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) |
#define CUPROJ_CHECK_CUDA | ( | stream | ) |
用于检查 CUDA 错误的调试宏。
在非发布版本构建中,此宏将在错误检查之前同步指定的流。在发布和非发布版本构建中,此宏都会检查之前调用中任何待处理的 CUDA 错误。如果报告了错误,将抛出异常,详细说明发生的 CUDA 错误。
此宏的目的是为调试异步 CUDA 执行提供一种同步且确定性的执行机制。它应在任何异步 CUDA 调用之后使用,例如 cudaMemcpyAsync 或异步内核启动。
#define CUPROJ_CUDA_TRY | ( | call | ) |
用于检查 CUDA 运行时 API 函数错误的宏。
调用 CUDA 运行时 API 函数,如果调用未返回 cudaSuccess,则调用 cudaGetLastError() 清除错误并抛出异常,详细说明发生的 CUDA 错误
#define CUPROJ_EXPECTS | ( | cond, | |
reason ) |
用于检查(前置)条件并在条件被违反时抛出异常的宏。
示例用法
[in] | cond | 评估为真或假的表达式 |
[in] | reason | 期望 cond 为真的原因的字符串字面量描述 |
cuproj::logic_error | 如果条件评估为假。 |
#define CUPROJ_FAIL | ( | reason | ) |
表示代码执行路径发生了错误。
在主机代码中,抛出 cuproj::logic_error
。
示例用法
[in] | reason | 原因的字符串字面量描述 |
#define CUPROJ_HOST_DEVICE_EXPECTS | ( | cond, | |
reason ) |
用于检查(前置)条件并在条件被违反时抛出异常的宏。
示例用法
[in] | cond | 评估为真或假的表达式 |
[in] | reason | 期望 cond 为真的原因的字符串字面量描述 |
(如果在主机上)
cuproj::logic_error | 如果条件评估为假。(如果在设备上)程序终止并将断言错误消息打印到 stderr。 |