/* * Copyright 2010-2021 NVIDIA Corporation. All rights reserved. * * NOTICE TO LICENSEE: * * This source code and/or documentation ("Licensed Deliverables") are * subject to NVIDIA intellectual property rights under U.S. and * international Copyright laws. * * These Licensed Deliverables contained herein is PROPRIETARY and * CONFIDENTIAL to NVIDIA and is being provided under the terms and * conditions of a form of NVIDIA software license agreement by and * between NVIDIA and Licensee ("License Agreement") or electronically * accepted by Licensee. Notwithstanding any terms or conditions to * the contrary in the License Agreement, reproduction or disclosure * of the Licensed Deliverables to any third party without the express * written consent of NVIDIA is prohibited. * * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE * LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE * SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS * PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. * NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED * DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, * NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE * LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY * SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THESE LICENSED DELIVERABLES. * * U.S. Government End Users. These Licensed Deliverables are a * "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT * 1995), consisting of "commercial computer software" and "commercial * computer software documentation" as such terms are used in 48 * C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government * only as a commercial end item. Consistent with 48 C.F.R.12.212 and * 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all * U.S. Government End Users acquire the Licensed Deliverables with * only those rights set forth herein. * * Any use of the Licensed Deliverables in individual and commercial * software must include, in the user documentation and internal * comments to the code, the above Disclaimer and U.S. Government End * Users Notice. */ #if !defined(_CUPTI_RESULT_H_) #define _CUPTI_RESULT_H_ #ifndef CUPTIAPI #ifdef _WIN32 #define CUPTIAPI __stdcall #else #define CUPTIAPI #endif #endif #if defined(__cplusplus) extern "C" { #endif #if defined(__GNUC__) && defined(CUPTI_LIB) #pragma GCC visibility push(default) #endif /** * \defgroup CUPTI_RESULT_API CUPTI Result Codes * Error and result codes returned by CUPTI functions. * @{ */ /** * \brief CUPTI result codes. * * Error and result codes returned by CUPTI functions. */ typedef enum { /** * No error. */ CUPTI_SUCCESS = 0, /** * One or more of the parameters is invalid. */ CUPTI_ERROR_INVALID_PARAMETER = 1, /** * The device does not correspond to a valid CUDA device. */ CUPTI_ERROR_INVALID_DEVICE = 2, /** * The context is NULL or not valid. */ CUPTI_ERROR_INVALID_CONTEXT = 3, /** * The event domain id is invalid. */ CUPTI_ERROR_INVALID_EVENT_DOMAIN_ID = 4, /** * The event id is invalid. */ CUPTI_ERROR_INVALID_EVENT_ID = 5, /** * The event name is invalid. */ CUPTI_ERROR_INVALID_EVENT_NAME = 6, /** * The current operation cannot be performed due to dependency on * other factors. */ CUPTI_ERROR_INVALID_OPERATION = 7, /** * Unable to allocate enough memory to perform the requested * operation. */ CUPTI_ERROR_OUT_OF_MEMORY = 8, /** * An error occurred on the performance monitoring hardware. */ CUPTI_ERROR_HARDWARE = 9, /** * The output buffer size is not sufficient to return all * requested data. */ CUPTI_ERROR_PARAMETER_SIZE_NOT_SUFFICIENT = 10, /** * API is not implemented. */ CUPTI_ERROR_API_NOT_IMPLEMENTED = 11, /** * The maximum limit is reached. */ CUPTI_ERROR_MAX_LIMIT_REACHED = 12, /** * The object is not yet ready to perform the requested operation. */ CUPTI_ERROR_NOT_READY = 13, /** * The current operation is not compatible with the current state * of the object */ CUPTI_ERROR_NOT_COMPATIBLE = 14, /** * CUPTI is unable to initialize its connection to the CUDA * driver. */ CUPTI_ERROR_NOT_INITIALIZED = 15, /** * The metric id is invalid. */ CUPTI_ERROR_INVALID_METRIC_ID = 16, /** * The metric name is invalid. */ CUPTI_ERROR_INVALID_METRIC_NAME = 17, /** * The queue is empty. */ CUPTI_ERROR_QUEUE_EMPTY = 18, /** * Invalid handle (internal?). */ CUPTI_ERROR_INVALID_HANDLE = 19, /** * Invalid stream. */ CUPTI_ERROR_INVALID_STREAM = 20, /** * Invalid kind. */ CUPTI_ERROR_INVALID_KIND = 21, /** * Invalid event value. */ CUPTI_ERROR_INVALID_EVENT_VALUE = 22, /** * CUPTI is disabled due to conflicts with other enabled profilers */ CUPTI_ERROR_DISABLED = 23, /** * Invalid module. */ CUPTI_ERROR_INVALID_MODULE = 24, /** * Invalid metric value. */ CUPTI_ERROR_INVALID_METRIC_VALUE = 25, /** * The performance monitoring hardware is in use by other client. */ CUPTI_ERROR_HARDWARE_BUSY = 26, /** * The attempted operation is not supported on the current * system or device. */ CUPTI_ERROR_NOT_SUPPORTED = 27, /** * Unified memory profiling is not supported on the system. * Potential reason could be unsupported OS or architecture. */ CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED = 28, /** * Unified memory profiling is not supported on the device */ CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_ON_DEVICE = 29, /** * 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_ON_NON_P2P_DEVICES = 30, /** * Unified memory profiling is not supported under the * Multi-Process Service (MPS) environment. CUDA 7.5 removes this * restriction. */ CUPTI_ERROR_UM_PROFILING_NOT_SUPPORTED_WITH_MPS = 31, /** * In CUDA 9.0, devices with compute capability 7.0 don't * support CDP tracing */ CUPTI_ERROR_CDP_TRACING_NOT_SUPPORTED = 32, /** * Profiling on virtualized GPU is not supported. */ CUPTI_ERROR_VIRTUALIZED_DEVICE_NOT_SUPPORTED = 33, /** * 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_CUDA_COMPILER_NOT_COMPATIBLE = 34, /** * 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_INSUFFICIENT_PRIVILEGES = 35, /** * 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_OLD_PROFILER_API_INITIALIZED = 36, /** * 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_OPENACC_UNDEFINED_ROUTINE = 37, /** * 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_LEGACY_PROFILER_NOT_SUPPORTED = 38, /** * 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_MULTIPLE_SUBSCRIBERS_NOT_SUPPORTED = 39, /** * Profiling on virtualized GPU is not allowed by hypervisor. */ CUPTI_ERROR_VIRTUALIZED_DEVICE_INSUFFICIENT_PRIVILEGES = 40, /** * Profiling and tracing are not allowed when confidential computing mode * is enabled. */ CUPTI_ERROR_CONFIDENTIAL_COMPUTING_NOT_SUPPORTED = 41, /** * CUPTI does not support NVIDIA Crypto Mining Processors (CMP). * For more information, please visit https://developer.nvidia.com/ERR_NVCMPGPU */ CUPTI_ERROR_CMP_DEVICE_NOT_SUPPORTED = 42, /** * An unknown internal error has occurred. */ CUPTI_ERROR_UNKNOWN = 999, CUPTI_ERROR_FORCE_INT = 0x7fffffff } CUptiResult; /** * \brief Get the descriptive string for a CUptiResult. * * Return the descriptive string for a CUptiResult in \p *str. * \note \b Thread-safety: this function is thread safe. * * \param result The result to get the string for * \param str Returns the string * * \retval CUPTI_SUCCESS on success * \retval CUPTI_ERROR_INVALID_PARAMETER if \p str is NULL or \p * result is not a valid CUptiResult */ CUptiResult CUPTIAPI cuptiGetResultString(CUptiResult result, const char **str); /** @} */ /* END CUPTI_RESULT_API */ #if defined(__GNUC__) && defined(CUPTI_LIB) #pragma GCC visibility pop #endif #if defined(__cplusplus) } #endif #endif /*_CUPTI_RESULT_H_*/