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

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