5.12. CUPTI 结果代码
CUPTI 函数返回的错误和结果代码。
枚举
- CUptiResult
CUPTI 结果代码。
函数
- CUptiResult cuptiGetErrorMessage(CUptiResult result, const char **str)
获取 CUPTI 返回的错误代码对应的描述性消息。
- CUptiResult cuptiGetResultString(CUptiResult result, const char **str)
获取 CUptiResult 的描述性字符串。
5.12.1. 枚举
-
enum CUptiResult
CUPTI 结果代码。
CUPTI 函数返回的错误和结果代码。
值
-
enumerator CUPTI_SUCCESS
没有错误。
-
enumerator CUPTI_ERROR_INVALID_PARAMETER
一个或多个参数无效。
-
enumerator CUPTI_ERROR_INVALID_DEVICE
设备与有效的 CUDA 设备不对应。
-
enumerator CUPTI_ERROR_INVALID_CONTEXT
上下文为 NULL 或无效。
-
enumerator CUPTI_ERROR_INVALID_EVENT_DOMAIN_ID
事件域 ID 无效。
-
enumerator CUPTI_ERROR_INVALID_EVENT_ID
事件 ID 无效。
-
enumerator CUPTI_ERROR_INVALID_EVENT_NAME
事件名称无效。
-
enumerator CUPTI_ERROR_INVALID_OPERATION
由于依赖于其他因素,当前操作无法执行。
-
enumerator CUPTI_ERROR_OUT_OF_MEMORY
无法分配足够的内存来执行请求的操作。
-
enumerator CUPTI_ERROR_HARDWARE
性能监控硬件上发生错误。
-
enumerator CUPTI_ERROR_PARAMETER_SIZE_NOT_SUFFICIENT
输出缓冲区大小不足以返回所有请求的数据。
-
enumerator CUPTI_ERROR_API_NOT_IMPLEMENTED
API 未实现。
-
enumerator CUPTI_ERROR_MAX_LIMIT_REACHED
已达到最大限制。
-
enumerator CUPTI_ERROR_NOT_READY
对象尚未准备好执行请求的操作。
-
enumerator CUPTI_ERROR_NOT_COMPATIBLE
当前操作与对象的当前状态不兼容。
-
enumerator CUPTI_ERROR_NOT_INITIALIZED
CUPTI 无法初始化与 CUDA 驱动程序的连接。
-
enumerator CUPTI_ERROR_INVALID_METRIC_ID
指标 ID 无效。
-
enumerator CUPTI_ERROR_INVALID_METRIC_NAME
指标名称无效。
-
enumerator CUPTI_ERROR_QUEUE_EMPTY
队列为空。
-
enumerator CUPTI_ERROR_INVALID_HANDLE
无效句柄(内部?)。
-
enumerator CUPTI_ERROR_INVALID_STREAM
无效流。
-
enumerator CUPTI_ERROR_INVALID_KIND
无效类型。
-
enumerator CUPTI_ERROR_INVALID_EVENT_VALUE
无效事件值。
-
enumerator CUPTI_ERROR_DISABLED
由于与其他已启用的分析器冲突,CUPTI 已禁用。
-
enumerator CUPTI_ERROR_INVALID_MODULE
无效模块。
-
enumerator CUPTI_ERROR_INVALID_METRIC_VALUE
无效指标值。
-
enumerator CUPTI_ERROR_HARDWARE_BUSY
性能监控硬件正被其他客户端使用。
-
enumerator CUPTI_ERROR_NOT_SUPPORTED
当前系统或设备不支持尝试的操作。
-
enumerator CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED
系统不支持统一内存分析。
潜在原因可能是操作系统或架构不受支持。
-
enumerator CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_DEVICE
设备不支持统一内存分析。
-
enumerator CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_NON_P2P_DEVICES
在多 GPU 配置中,如果任何一对设备之间没有 P2P 支持,则不支持统一内存分析。
-
enumerator CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_WITH_MPS
在多进程服务 (MPS) 环境下不支持统一内存分析。
CUDA 7.5 移除了此限制。
-
enumerator CUPTI_ERROR_CDP_TRACING_NOT_SUPPORTED
在 CUDA 9.0 中,计算能力为 7.0 的设备不支持 CDP 跟踪。
-
enumerator CUPTI_ERROR_VIRTUALIZED_DEVICE_NOT_SUPPORTED
不支持在虚拟化 GPU 上进行分析。
-
enumerator CUPTI_ERROR_CUDA_COMPILER_NOT_COMPATIBLE
对于使用 nvcc 版本低于 9.0 编译的 CUDA 应用程序,在计算能力为 6.0 和 6.1 的设备上,分析结果可能不正确。
分析会话将继续,CUPTI 将使用此错误代码通知。建议用户使用 nvcc 版本 9.0 或更高版本重新编译应用程序代码。如果代码已使用推荐的 nvcc 版本编译,请忽略此警告。
-
enumerator CUPTI_ERROR_INSUFFICIENT_PRIVILEGES
用户没有启动分析会话所需的足够权限。
一个可能的原因是 NVIDIA 驱动程序或您的系统管理员可能限制了对 NVIDIA GPU 性能计数器的访问。要了解如何解决此问题并查找更多信息,请访问 https://developer.nvidia.com/CUPTI_ERROR_INSUFFICIENT_PRIVILEGES
-
enumerator CUPTI_ERROR_OLD_PROFILER_API_INITIALIZED
旧版 CUPTI 分析 API,即
来自头文件 cupti_events.h 的事件 API 和来自头文件 cupti_metrics.h 的指标 API 与头文件 cupti_profiler_target.h 中的分析 API 以及头文件 nvperf_host.h 和 nvperf_target.h 中的 Perfworks 指标 API 不兼容。
-
enumerator CUPTI_ERROR_OPENACC_UNDEFINED_ROUTINE
链接的 OpenACC 库中缺少 OpenACC API 例程的定义。
一个可能的原因是 OpenACC 库在用户应用程序中静态链接,这可能没有 OpenACC 分析所需的所有 OpenACC API 例程的定义,因为编译器可能会忽略应用程序中未使用的函数的定义。可以通过动态链接 OpenACC 库来缓解此问题。
-
enumerator CUPTI_ERROR_LEGACY_PROFILER_NOT_SUPPORTED
旧版 CUPTI 分析 API,即
来自头文件 cupti_events.h 的事件 API 和来自头文件 cupti_metrics.h 的指标 API 在计算能力为 7.5 及更高版本(即 Turing 及更高版本的 GPU 架构)的设备上不受支持。这些 API 在 CUDA 12.8 版本中已弃用,并将在未来的 CUDA 版本中移除。它们已被头文件 cupti_profiler_host.h 中的主机分析 API 和头文件 cupti_range_profiler.h 中的目标分析 API 取代,这些 API 在计算能力为 7.0 及更高版本(即 Volta 及更高版本的 GPU 架构)的设备上受支持。
-
enumerator CUPTI_ERROR_MULTIPLE_SUBSCRIBERS_NOT_SUPPORTED
CUPTI 不允许多个回调订阅者。
一次只能注册一个订阅者。当使用 NVIDIA 工具(如 nvprof、Visual Profiler、Nsight Systems、Nsight Compute、cuda-gdb 和 cuda-memcheck)启动应用程序时,也会使用相同的错误代码。
-
enumerator CUPTI_ERROR_VIRTUALIZED_DEVICE_INSUFFICIENT_PRIVILEGES
虚拟机监控程序不允许在虚拟化 GPU 上进行分析。
-
enumerator CUPTI_ERROR_CONFIDENTIAL_COMPUTING_NOT_SUPPORTED
当启用保密计算模式时,不允许进行分析和跟踪。
-
enumerator CUPTI_ERROR_CMP_DEVICE_NOT_SUPPORTED
CUPTI 不支持 NVIDIA 加密货币挖矿处理器 (CMP)。
有关更多信息,请访问 https://developer.nvidia.com/ERR_NVCMPGPU
-
enumerator CUPTI_ERROR_MIG_DEVICE_NOT_SUPPORTED
不支持在多实例 GPU (MIG) 上进行分析。
-
enumerator CUPTI_ERROR_SLI_DEVICE_NOT_SUPPORTED
不支持在 SLI 设备上进行分析。
-
enumerator CUPTI_ERROR_WSL_DEVICE_NOT_SUPPORTED
不支持在 WSL 设备上进行分析。
-
enumerator CUPTI_ERROR_UNKNOWN
发生未知内部错误。
-
enumerator CUPTI_ERROR_FORCE_INT
-
enumerator CUPTI_SUCCESS
5.12.2. 函数
-
CUptiResult cuptiGetErrorMessage(CUptiResult result, const char **str)
获取 CUPTI 返回的错误代码对应的描述性消息。
返回
*str
中 CUptiResult 的描述性错误消息。注意
线程安全性:此函数是线程安全的。
- 参数
result – 要获取描述性错误消息的结果
str – 返回错误消息字符串
- 返回值
CUPTI_SUCCESS – 成功
CUPTI_ERROR_INVALID_PARAMETER – 如果
str
为 NULL 或result
不是有效的 CUptiResult
-
CUptiResult cuptiGetResultString(CUptiResult result, const char **str)
获取 CUptiResult 的描述性字符串。
返回
*str
中 CUptiResult 的描述性字符串。注意
线程安全性:此函数是线程安全的。
- 参数
result – 要获取字符串的结果
str – 返回字符串
- 返回值
CUPTI_SUCCESS – 成功
CUPTI_ERROR_INVALID_PARAMETER – 如果
str
为 NULL 或result
不是有效的 CUptiResult