# 5.9. CUPTI Result Codes

Error and result codes returned by CUPTI functions.

Enumerations

- CUptiResult: CUPTI result codes.

Functions

- cuptiGetErrorMessage(CUptiResult result, const char **str): Get the descriptive message corresponding to error codes returned by CUPTI.

- cuptiGetResultString(CUptiResult result, const char **str): Get the descriptive string for a CUptiResult.

## 5.9.1. Enumerations

enum CUptiResult

  CUPTI result codes.

  Error and result codes returned by CUPTI functions.

  Values:

  enumerator CUPTI_SUCCESS

    No error.

  enumerator CUPTI_ERROR_INVALID_PARAMETER

    One or more of the parameters is invalid.

  enumerator CUPTI_ERROR_INVALID_DEVICE

    The device does not correspond to a valid CUDA device.

  enumerator CUPTI_ERROR_INVALID_CONTEXT

    The context is NULL or not valid.

  enumerator CUPTI_ERROR_INVALID_EVENT_DOMAIN_ID

    The event domain id is invalid.

  enumerator CUPTI_ERROR_INVALID_EVENT_ID

    The event id is invalid.

  enumerator CUPTI_ERROR_INVALID_EVENT_NAME

    The event name is invalid.

  enumerator CUPTI_ERROR_INVALID_OPERATION

    The current operation cannot be performed due to dependency on other factors.

  enumerator CUPTI_ERROR_OUT_OF_MEMORY

    Unable to allocate enough memory to perform the requested operation.

  enumerator CUPTI_ERROR_HARDWARE

    An error occurred on the performance monitoring hardware.

  enumerator CUPTI_ERROR_PARAMETER_SIZE_NOT_SUFFICIENT

    The output buffer size is not sufficient to return all requested data.

  enumerator CUPTI_ERROR_API_NOT_IMPLEMENTED

    API is not implemented.

  enumerator CUPTI_ERROR_MAX_LIMIT_REACHED

    The maximum limit is reached.

  enumerator CUPTI_ERROR_NOT_READY

    The object is not yet ready to perform the requested operation.

  enumerator CUPTI_ERROR_NOT_COMPATIBLE

    The current operation is not compatible with the current state of the object.

  enumerator CUPTI_ERROR_NOT_INITIALIZED

    CUPTI is unable to initialize its connection to the CUDA driver.

  enumerator CUPTI_ERROR_INVALID_METRIC_ID

    The metric id is invalid.

  enumerator CUPTI_ERROR_INVALID_METRIC_NAME

    The metric name is invalid.

  enumerator CUPTI_ERROR_QUEUE_EMPTY

    The queue is empty.

  enumerator CUPTI_ERROR_INVALID_HANDLE

    Invalid handle (internal?).

  enumerator CUPTI_ERROR_INVALID_STREAM

    Invalid stream.

  enumerator CUPTI_ERROR_INVALID_KIND

    Invalid kind.

  enumerator CUPTI_ERROR_INVALID_EVENT_VALUE

    Invalid event value.

  enumerator CUPTI_ERROR_DISABLED

    CUPTI is disabled due to conflicts with other enabled profilers.

  enumerator CUPTI_ERROR_INVALID_MODULE

    Invalid module.

  enumerator CUPTI_ERROR_INVALID_METRIC_VALUE

    Invalid metric value.

  enumerator CUPTI_ERROR_HARDWARE_BUSY

    The performance monitoring hardware is in use by other client.

  enumerator CUPTI_ERROR_NOT_SUPPORTED

    The attempted operation is not supported on the current system or device.

  enumerator CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED

    Unified memory profiling is not supported on the system.

    Potential reason could be unsupported OS or architecture.

  enumerator CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_DEVICE

    Unified memory profiling is not supported on the device.

  enumerator CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_NON_P2P_DEVICES

    Unified memory profiling is not supported on a multi-GPU configuration without P2P support between any pair of devices.

  enumerator CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_WITH_MPS

    Unified memory profiling is not supported under the Multi-Process Service (MPS) environment.

    CUDA 7.5 removes this restriction.

  enumerator CUPTI_ERROR_CDP_TRACING_NOT_SUPPORTED

    In CUDA 9.0, devices with compute capability 7.0 don’t support CDP tracing.

  enumerator CUPTI_ERROR_VIRTUALIZED_DEVICE_NOT_SUPPORTED

    Profiling on virtualized GPU is not supported.

  enumerator CUPTI_ERROR_CUDA_COMPILER_NOT_COMPATIBLE

    Profiling results might be incorrect for CUDA applications compiled with nvcc version older than 9.0 for devices with compute capability 6.0 and 6.1.

    Profiling session will continue and CUPTI will notify it using this error code. User is advised to recompile the application code with nvcc version 9.0 or later. Ignore this warning if code is already compiled with the recommended nvcc version.

  enumerator CUPTI_ERROR_INSUFFICIENT_PRIVILEGES

    User doesn’t have sufficient privileges which are required to start the profiling session.

    One possible reason for this may be that the NVIDIA driver or your system administrator may have restricted access to the NVIDIA GPU performance counters. To learn how to resolve this issue and find more information, please visit https://developer.nvidia.com/CUPTI_ERROR_INSUFFICIENT_PRIVILEGES

  enumerator CUPTI_ERROR_OLD_PROFILER_API_INITIALIZED

    Legacy CUPTI Profiling API i.e.

    event API from the header cupti_events.h and metric API from the header cupti_metrics.h are not compatible with the Profiling API in the header cupti_profiler_target.h and Perfworks metrics API in the headers nvperf_host.h and nvperf_target.h.

  enumerator CUPTI_ERROR_OPENACC_UNDEFINED_ROUTINE

    Missing definition of the OpenACC API routine in the linked OpenACC library.

    One possible reason is that OpenACC library is linked statically in the user application, which might not have the definition of all the OpenACC API routines needed for the OpenACC profiling, as compiler might ignore definitions for the functions not used in the application. This issue can be mitigated by linking the OpenACC library dynamically.

  enumerator CUPTI_ERROR_LEGACY_PROFILER_NOT_SUPPORTED

    Legacy CUPTI Profiling API i.e.

    event API from the header cupti_events.h and metric API from the header cupti_metrics.h are not supported on devices with compute capability 7.5 and higher (i.e. Turing and later GPU architectures). These API will be deprecated in a future CUDA release. These are replaced by Profiling API in the header cupti_profiler_target.h and Perfworks metrics API in the headers nvperf_host.h and nvperf_target.h.

  enumerator CUPTI_ERROR_MULTIPLE_SUBSCRIBERS_NOT_SUPPORTED

    CUPTI doesn’t allow multiple callback subscribers.

    Only a single subscriber can be registered at a time. Same error code is used when application is launched using NVIDIA tools like nvprof, Visual Profiler, Nsight Systems, Nsight Compute, cuda-gdb and cuda-memcheck.

  enumerator CUPTI_ERROR_VIRTUALIZED_DEVICE_INSUFFICIENT_PRIVILEGES

    Profiling on virtualized GPU is not allowed by hypervisor.

  enumerator CUPTI_ERROR_CONFIDENTIAL_COMPUTING_NOT_SUPPORTED

    Profiling and tracing are not allowed when confidential computing mode is enabled.

  enumerator CUPTI_ERROR_CMP_DEVICE_NOT_SUPPORTED

    CUPTI does not support NVIDIA Crypto Mining Processors (CMP).

    For more information, please visit https://developer.nvidia.com/ERR_NVCMPGPU

  enumerator CUPTI_ERROR_UNKNOWN

    An unknown internal error has occurred.

  enumerator CUPTI_ERROR_FORCE_INT

## 5.9.2. Functions

CUptiResult cuptiGetErrorMessage(CUptiResult result, const char **str)

  Get the descriptive message corresponding to error codes returned by CUPTI.

  Return the descriptive error message for a CUptiResult in `*str`.

  Note

  Thread-safety: this function is thread safe.

  Parameters

    - result – The result to get the descriptive error message for

    - str – Returns the error message string

  Return values

    - CUPTI_SUCCESS – on success

    - CUPTI_ERROR_INVALID_PARAMETER – if `str` is NULL or `result` is not a valid CUptiResult

CUptiResult cuptiGetResultString(CUptiResult result, const char **str)

  Get the descriptive string for a CUptiResult.

  Return the descriptive string for a CUptiResult in `*str`.

  Note

  Thread-safety: this function is thread safe.

  Parameters

    - result – The result to get the string for

    - str – Returns the string

  Return values

    - CUPTI_SUCCESS – on success

    - CUPTI_ERROR_INVALID_PARAMETER – if `str` is NULL or `result` is not a valid CUptiResult