# CUPTI Result Codes

## Enumerations
enum | CUptiResult { CUPTI_SUCCESS = 0, CUPTI_ERROR_INVALID_PARAMETER = 1, CUPTI_ERROR_INVALID_DEVICE = 2, CUPTI_ERROR_INVALID_CONTEXT = 3, CUPTI_ERROR_INVALID_EVENT_DOMAIN_ID = 4, CUPTI_ERROR_INVALID_EVENT_ID = 5, CUPTI_ERROR_INVALID_EVENT_NAME = 6, CUPTI_ERROR_INVALID_OPERATION = 7, CUPTI_ERROR_OUT_OF_MEMORY = 8, CUPTI_ERROR_HARDWARE = 9, CUPTI_ERROR_PARAMETER_SIZE_NOT_SUFFICIENT = 10, CUPTI_ERROR_API_NOT_IMPLEMENTED = 11, CUPTI_ERROR_MAX_LIMIT_REACHED = 12, CUPTI_ERROR_NOT_READY = 13, CUPTI_ERROR_NOT_COMPATIBLE = 14, CUPTI_ERROR_NOT_INITIALIZED = 15, CUPTI_ERROR_INVALID_METRIC_ID = 16, CUPTI_ERROR_INVALID_METRIC_NAME = 17, CUPTI_ERROR_QUEUE_EMPTY = 18, CUPTI_ERROR_INVALID_HANDLE = 19, CUPTI_ERROR_INVALID_STREAM = 20, CUPTI_ERROR_INVALID_KIND = 21, CUPTI_ERROR_INVALID_EVENT_VALUE = 22, CUPTI_ERROR_DISABLED = 23, CUPTI_ERROR_INVALID_MODULE = 24, CUPTI_ERROR_INVALID_METRIC_VALUE = 25, CUPTI_ERROR_HARDWARE_BUSY = 26, CUPTI_ERROR_NOT_SUPPORTED = 27, CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED = 28, CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_DEVICE = 29, CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_NON_P2P_DEVICES = 30, CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_WITH_MPS = 31, CUPTI_ERROR_CDP_TRACING_NOT_SUPPORTED = 32, CUPTI_ERROR_VIRTUALIZED_DEVICE_NOT_SUPPORTED = 33, CUPTI_ERROR_CUDA_COMPILER_NOT_COMPATIBLE = 34, CUPTI_ERROR_INSUFFICIENT_PRIVILEGES = 35, CUPTI_ERROR_OLD_PROFILER_API_INITIALIZED = 36, CUPTI_ERROR_OPENACC_UNDEFINED_ROUTINE = 37, CUPTI_ERROR_LEGACY_PROFILER_NOT_SUPPORTED = 38, CUPTI_ERROR_MULTIPLE_SUBSCRIBERS_NOT_SUPPORTED = 39, CUPTI_ERROR_VIRTUALIZED_DEVICE_INSUFFICIENT_PRIVILEGES = 40, CUPTI_ERROR_CONFIDENTIAL_COMPUTING_NOT_SUPPORTED = 41, CUPTI_ERROR_CMP_DEVICE_NOT_SUPPORTED = 42, CUPTI_ERROR_UNKNOWN = 999 }
| CUPTI result codes. More...
## Functions
CUptiResult | cuptiGetErrorMessage (CUptiResult result, const char **str)
| Get the descriptive message corresponding to error codes returned by CUPTI.
CUptiResult | cuptiGetResultString (CUptiResult result, const char **str)
| Get the descriptive string for a CUptiResult.

## Detailed Description

Error and result codes returned by CUPTI functions.

## Enumeration Type Documentation

enum CUptiResult

Error and result codes returned by CUPTI functions.

Enumerator:

  CUPTI_SUCCESS | No error.
  CUPTI_ERROR_INVALID_PARAMETER | One or more of the parameters is invalid.
  CUPTI_ERROR_INVALID_DEVICE | The device does not correspond to a valid CUDA device.
  CUPTI_ERROR_INVALID_CONTEXT | The context is NULL or not valid.
  CUPTI_ERROR_INVALID_EVENT_DOMAIN_ID | The event domain id is invalid.
  CUPTI_ERROR_INVALID_EVENT_ID | The event id is invalid.
  CUPTI_ERROR_INVALID_EVENT_NAME | The event name is invalid.
  CUPTI_ERROR_INVALID_OPERATION | The current operation cannot be performed due to dependency on other factors.
  CUPTI_ERROR_OUT_OF_MEMORY | Unable to allocate enough memory to perform the requested operation.
  CUPTI_ERROR_HARDWARE | An error occurred on the performance monitoring hardware.
  CUPTI_ERROR_PARAMETER_SIZE_NOT_SUFFICIENT | The output buffer size is not sufficient to return all requested data.
  CUPTI_ERROR_API_NOT_IMPLEMENTED | API is not implemented.
  CUPTI_ERROR_MAX_LIMIT_REACHED | The maximum limit is reached.
  CUPTI_ERROR_NOT_READY | The object is not yet ready to perform the requested operation.
  CUPTI_ERROR_NOT_COMPATIBLE | The current operation is not compatible with the current state of the object
  CUPTI_ERROR_NOT_INITIALIZED | CUPTI is unable to initialize its connection to the CUDA driver.
  CUPTI_ERROR_INVALID_METRIC_ID | The metric id is invalid.
  CUPTI_ERROR_INVALID_METRIC_NAME | The metric name is invalid.
  CUPTI_ERROR_QUEUE_EMPTY | The queue is empty.
  CUPTI_ERROR_INVALID_HANDLE | Invalid handle (internal?).
  CUPTI_ERROR_INVALID_STREAM | Invalid stream.
  CUPTI_ERROR_INVALID_KIND | Invalid kind.
  CUPTI_ERROR_INVALID_EVENT_VALUE | Invalid event value.
  CUPTI_ERROR_DISABLED | CUPTI is disabled due to conflicts with other enabled profilers
  CUPTI_ERROR_INVALID_MODULE | Invalid module.
  CUPTI_ERROR_INVALID_METRIC_VALUE | Invalid metric value.
  CUPTI_ERROR_HARDWARE_BUSY | The performance monitoring hardware is in use by other client.
  CUPTI_ERROR_NOT_SUPPORTED | The attempted operation is not supported on the current system or device.
  CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED | Unified memory profiling is not supported on the system. Potential reason could be unsupported OS or architecture.
  CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_DEVICE | Unified memory profiling is not supported on the device
  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
  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.
  CUPTI_ERROR_CDP_TRACING_NOT_SUPPORTED | In CUDA 9.0, devices with compute capability 7.0 don't support CDP tracing
  CUPTI_ERROR_VIRTUALIZED_DEVICE_NOT_SUPPORTED | Profiling on virtualized GPU is not supported.
  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.
  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
  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.
  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.
  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.
  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.
  CUPTI_ERROR_VIRTUALIZED_DEVICE_INSUFFICIENT_PRIVILEGES | Profiling on virtualized GPU is not allowed by hypervisor.
  CUPTI_ERROR_CONFIDENTIAL_COMPUTING_NOT_SUPPORTED | Profiling and tracing are not allowed when confidential computing mode is enabled.
  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
  CUPTI_ERROR_UNKNOWN | An unknown internal error has occurred.

## Function Documentation

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

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 |
| ) |  |  |

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