|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef CUDADEBUGGER_H |
|
|
#define CUDADEBUGGER_H |
|
|
|
|
|
|
|
|
|
|
|
#include <stdlib.h> |
|
|
#include "cuda_stdint.h" |
|
|
|
|
|
#if defined(__STDC__) |
|
|
#include <inttypes.h> |
|
|
#endif |
|
|
|
|
|
#if defined(_MSC_VER) && _MSC_VER < 1800 |
|
|
|
|
|
typedef unsigned char bool; |
|
|
#undef false |
|
|
#undef true |
|
|
#define false 0 |
|
|
#define true 1 |
|
|
#else |
|
|
#include <stdbool.h> |
|
|
#endif |
|
|
|
|
|
#ifdef __cplusplus |
|
|
extern "C" { |
|
|
#endif |
|
|
|
|
|
|
|
|
#if defined(_WIN32) |
|
|
#define _CUDBG_INLINE __inline |
|
|
#else |
|
|
#define _CUDBG_INLINE inline |
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define CUDBG_API_VERSION_MAJOR 12 |
|
|
#define CUDBG_API_VERSION_MINOR 4 |
|
|
#define CUDBG_API_VERSION_REVISION 142 |
|
|
|
|
|
|
|
|
|
|
|
#define CUDBG_MAX_DEVICES 64 |
|
|
#define CUDBG_MAX_SMS 256 |
|
|
#define CUDBG_MAX_WARPS 64 |
|
|
#define CUDBG_MAX_LANES 32 |
|
|
|
|
|
|
|
|
|
|
|
typedef struct { uint32_t x, y; } CuDim2; |
|
|
typedef struct { uint32_t x, y, z; } CuDim3; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
ptxUNSPECIFIEDStorage, |
|
|
ptxCodeStorage, |
|
|
ptxRegStorage, |
|
|
ptxSregStorage, |
|
|
ptxConstStorage, |
|
|
ptxGlobalStorage, |
|
|
ptxLocalStorage, |
|
|
ptxParamStorage, |
|
|
ptxSharedStorage, |
|
|
ptxSurfStorage, |
|
|
ptxTexStorage, |
|
|
ptxTexSamplerStorage, |
|
|
ptxGenericStorage, |
|
|
ptxIParamStorage, |
|
|
ptxOParamStorage, |
|
|
ptxFrameStorage, |
|
|
ptxURegStorage, |
|
|
ptxMAXStorage |
|
|
} ptxStorageKind; |
|
|
|
|
|
|
|
|
|
|
|
#define CUDBG_IPC_FLAG_NAME cudbgIpcFlag |
|
|
#define CUDBG_RPC_ENABLED cudbgRpcEnabled |
|
|
#define CUDBG_APICLIENT_PID cudbgApiClientPid |
|
|
#define CUDBG_DEBUGGER_INITIALIZED cudbgDebuggerInitialized |
|
|
#define CUDBG_APICLIENT_REVISION cudbgApiClientRevision |
|
|
#define CUDBG_SESSION_ID cudbgSessionId |
|
|
#define CUDBG_ATTACH_HANDLER_AVAILABLE cudbgAttachHandlerAvailable |
|
|
#define CUDBG_DETACH_SUSPENDED_DEVICES_MASK cudbgDetachSuspendedDevicesMask |
|
|
#define CUDBG_ENABLE_LAUNCH_BLOCKING cudbgEnableLaunchBlocking |
|
|
#define CUDBG_ENABLE_INTEGRATED_MEMCHECK cudbgEnableIntegratedMemcheck |
|
|
#define CUDBG_ENABLE_PREEMPTION_DEBUGGING cudbgEnablePreemptionDebugging |
|
|
#define CUDBG_RESUME_FOR_ATTACH_DETACH cudbgResumeForAttachDetach |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define CUDBG_DEBUGGER_CAPABILITIES cudbgDebuggerCapabilities |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define CUDBG_USE_EXTERNAL_DEBUGGER cudbgUseExternalDebugger |
|
|
|
|
|
typedef enum { |
|
|
CUDBG_DEBUGGER_CAPABILITY_NONE = 0, |
|
|
CUDBG_DEBUGGER_CAPABILITY_LAZY_FUNCTION_LOADING = (1 << 0) |
|
|
} CUDBGCapabilityFlags; |
|
|
|
|
|
|
|
|
|
|
|
#define CUDBG_REPORT_DRIVER_API_ERROR cudbgReportDriverApiError |
|
|
#define CUDBG_REPORT_DRIVER_API_ERROR_FLAGS cudbgReportDriverApiErrorFlags |
|
|
#define CUDBG_REPORTED_DRIVER_API_ERROR_CODE cudbgReportedDriverApiErrorCode |
|
|
#define CUDBG_REPORTED_DRIVER_API_ERROR_FUNC_NAME_SIZE cudbgReportedDriverApiErrorFuncNameSize |
|
|
#define CUDBG_REPORTED_DRIVER_API_ERROR_FUNC_NAME_ADDR cudbgReportedDriverApiErrorFuncNameAddr |
|
|
#define CUDBG_REPORT_DRIVER_INTERNAL_ERROR cudbgReportDriverInternalError |
|
|
#define CUDBG_REPORTED_DRIVER_INTERNAL_ERROR_CODE cudbgReportedDriverInternalErrorCode |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_SUCCESS = 0x0000, |
|
|
CUDBG_ERROR_UNKNOWN = 0x0001, |
|
|
CUDBG_ERROR_BUFFER_TOO_SMALL = 0x0002, |
|
|
CUDBG_ERROR_UNKNOWN_FUNCTION = 0x0003, |
|
|
CUDBG_ERROR_INVALID_ARGS = 0x0004, |
|
|
CUDBG_ERROR_UNINITIALIZED = 0x0005, |
|
|
CUDBG_ERROR_INVALID_COORDINATES = 0x0006, |
|
|
CUDBG_ERROR_INVALID_MEMORY_SEGMENT = 0x0007, |
|
|
CUDBG_ERROR_INVALID_MEMORY_ACCESS = 0x0008, |
|
|
CUDBG_ERROR_MEMORY_MAPPING_FAILED = 0x0009, |
|
|
CUDBG_ERROR_INTERNAL = 0x000a, |
|
|
CUDBG_ERROR_INVALID_DEVICE = 0x000b, |
|
|
CUDBG_ERROR_INVALID_SM = 0x000c, |
|
|
CUDBG_ERROR_INVALID_WARP = 0x000d, |
|
|
CUDBG_ERROR_INVALID_LANE = 0x000e, |
|
|
CUDBG_ERROR_SUSPENDED_DEVICE = 0x000f, |
|
|
CUDBG_ERROR_RUNNING_DEVICE = 0x0010, |
|
|
CUDBG_ERROR_RESERVED_0 = 0x0011, |
|
|
CUDBG_ERROR_INVALID_ADDRESS = 0x0012, |
|
|
CUDBG_ERROR_INCOMPATIBLE_API = 0x0013, |
|
|
CUDBG_ERROR_INITIALIZATION_FAILURE = 0x0014, |
|
|
CUDBG_ERROR_INVALID_GRID = 0x0015, |
|
|
CUDBG_ERROR_NO_EVENT_AVAILABLE = 0x0016, |
|
|
CUDBG_ERROR_SOME_DEVICES_WATCHDOGGED = 0x0017, |
|
|
CUDBG_ERROR_ALL_DEVICES_WATCHDOGGED = 0x0018, |
|
|
CUDBG_ERROR_INVALID_ATTRIBUTE = 0x0019, |
|
|
CUDBG_ERROR_ZERO_CALL_DEPTH = 0x001a, |
|
|
CUDBG_ERROR_INVALID_CALL_LEVEL = 0x001b, |
|
|
CUDBG_ERROR_COMMUNICATION_FAILURE = 0x001c, |
|
|
CUDBG_ERROR_INVALID_CONTEXT = 0x001d, |
|
|
CUDBG_ERROR_ADDRESS_NOT_IN_DEVICE_MEM = 0x001e, |
|
|
CUDBG_ERROR_MEMORY_UNMAPPING_FAILED = 0x001f, |
|
|
CUDBG_ERROR_INCOMPATIBLE_DISPLAY_DRIVER = 0x0020, |
|
|
CUDBG_ERROR_INVALID_MODULE = 0x0021, |
|
|
CUDBG_ERROR_LANE_NOT_IN_SYSCALL = 0x0022, |
|
|
CUDBG_ERROR_MEMCHECK_NOT_ENABLED = 0x0023, |
|
|
CUDBG_ERROR_INVALID_ENVVAR_ARGS = 0x0024, |
|
|
CUDBG_ERROR_OS_RESOURCES = 0x0025, |
|
|
CUDBG_ERROR_FORK_FAILED = 0x0026, |
|
|
CUDBG_ERROR_NO_DEVICE_AVAILABLE = 0x0027, |
|
|
CUDBG_ERROR_ATTACH_NOT_POSSIBLE = 0x0028, |
|
|
CUDBG_ERROR_WARP_RESUME_NOT_POSSIBLE = 0x0029, |
|
|
CUDBG_ERROR_INVALID_WARP_MASK = 0x002a, |
|
|
CUDBG_ERROR_AMBIGUOUS_MEMORY_ADDRESS = 0x002b, |
|
|
CUDBG_ERROR_RECURSIVE_API_CALL = 0x002c, |
|
|
CUDBG_ERROR_MISSING_DATA = 0x002d, |
|
|
CUDBG_ERROR_NOT_SUPPORTED = 0x002e, |
|
|
} CUDBGResult; |
|
|
|
|
|
static const char *CUDBGResultNames[] = { |
|
|
"CUDBG_SUCCESS", |
|
|
"CUDBG_ERROR_UNKNOWN", |
|
|
"CUDBG_ERROR_BUFFER_TOO_SMALL", |
|
|
"CUDBG_ERROR_UNKNOWN_FUNCTION", |
|
|
"CUDBG_ERROR_INVALID_ARGS", |
|
|
"CUDBG_ERROR_UNINITIALIZED", |
|
|
"CUDBG_ERROR_INVALID_COORDINATES", |
|
|
"CUDBG_ERROR_INVALID_MEMORY_SEGMENT", |
|
|
"CUDBG_ERROR_INVALID_MEMORY_ACCESS", |
|
|
"CUDBG_ERROR_MEMORY_MAPPING_FAILED", |
|
|
"CUDBG_ERROR_INTERNAL", |
|
|
"CUDBG_ERROR_INVALID_DEVICE", |
|
|
"CUDBG_ERROR_INVALID_SM", |
|
|
"CUDBG_ERROR_INVALID_WARP", |
|
|
"CUDBG_ERROR_INVALID_LANE", |
|
|
"CUDBG_ERROR_SUSPENDED_DEVICE", |
|
|
"CUDBG_ERROR_RUNNING_DEVICE", |
|
|
"CUDBG_ERROR_RESERVED_0", |
|
|
"CUDBG_ERROR_INVALID_ADDRESS", |
|
|
"CUDBG_ERROR_INCOMPATIBLE_API", |
|
|
"CUDBG_ERROR_INITIALIZATION_FAILURE", |
|
|
"CUDBG_ERROR_INVALID_GRID", |
|
|
"CUDBG_ERROR_NO_EVENT_AVAILABLE", |
|
|
"CUDBG_ERROR_SOME_DEVICES_WATCHDOGGED", |
|
|
"CUDBG_ERROR_ALL_DEVICES_WATCHDOGGED", |
|
|
"CUDBG_ERROR_INVALID_ATTRIBUTE", |
|
|
"CUDBG_ERROR_ZERO_CALL_DEPTH", |
|
|
"CUDBG_ERROR_INVALID_CALL_LEVEL", |
|
|
"CUDBG_ERROR_COMMUNICATION_FAILURE", |
|
|
"CUDBG_ERROR_INVALID_CONTEXT", |
|
|
"CUDBG_ERROR_ADDRESS_NOT_IN_DEVICE_MEM", |
|
|
"CUDBG_ERROR_MEMORY_UNMAPPING_FAILED", |
|
|
"CUDBG_ERROR_INCOMPATIBLE_DISPLAY_DRIVER", |
|
|
"CUDBG_ERROR_INVALID_MODULE", |
|
|
"CUDBG_ERROR_LANE_NOT_IN_SYSCALL", |
|
|
"CUDBG_ERROR_MEMCHECK_NOT_ENABLED", |
|
|
"CUDBG_ERROR_INVALID_ENVVAR_ARGS", |
|
|
"CUDBG_ERROR_OS_RESOURCES", |
|
|
"CUDBG_ERROR_FORK_FAILED", |
|
|
"CUDBG_ERROR_NO_DEVICE_AVAILABLE", |
|
|
"CUDBG_ERROR_ATTACH_NOT_POSSIBLE", |
|
|
"CUDBG_ERROR_WARP_RESUME_NOT_POSSIBLE", |
|
|
"CUDBG_ERROR_INVALID_WARP_MASK", |
|
|
"CUDBG_ERROR_AMBIGUOUS_MEMORY_ADDRESS", |
|
|
"CUDBG_ERROR_RECURSIVE_API_CALL", |
|
|
"CUDBG_ERROR_MISSING_DATA", |
|
|
"CUDBG_ERROR_NOT_SUPPORTED", |
|
|
}; |
|
|
|
|
|
static _CUDBG_INLINE const char *cudbgGetErrorString (CUDBGResult error) |
|
|
{ |
|
|
if (((unsigned)error)*sizeof(char *) >= sizeof(CUDBGResultNames)) |
|
|
return "*UNDEFINED*"; |
|
|
return CUDBGResultNames[(unsigned)error]; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_REPORT_DRIVER_API_ERROR_FLAGS_NONE = 0x0000, |
|
|
CUDBG_REPORT_DRIVER_API_ERROR_FLAGS_SUPPRESS_NOT_READY = ( 1U << 0 ), |
|
|
} CUDBGReportDriverApiErrorFlags; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_ATTR_GRID_LAUNCH_BLOCKING = 0x000, |
|
|
CUDBG_ATTR_GRID_TID = 0x001, |
|
|
} CUDBGAttribute; |
|
|
|
|
|
typedef struct { |
|
|
CUDBGAttribute attribute; |
|
|
uint64_t value; |
|
|
} CUDBGAttributeValuePair; |
|
|
|
|
|
typedef enum { |
|
|
CUDBG_GRID_STATUS_INVALID, |
|
|
CUDBG_GRID_STATUS_PENDING, |
|
|
CUDBG_GRID_STATUS_ACTIVE, |
|
|
CUDBG_GRID_STATUS_SLEEPING, |
|
|
CUDBG_GRID_STATUS_TERMINATED, |
|
|
CUDBG_GRID_STATUS_UNDETERMINED, |
|
|
} CUDBGGridStatus; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_KNL_TYPE_UNKNOWN = 0x000, |
|
|
CUDBG_KNL_TYPE_SYSTEM = 0x001, |
|
|
CUDBG_KNL_TYPE_APPLICATION = 0x002, |
|
|
} CUDBGKernelType; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_ELF_IMAGE_PROPERTIES_SYSTEM = 0x001, |
|
|
} CUDBGElfImageProperties; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
REG_CLASS_INVALID = 0x000, |
|
|
REG_CLASS_REG_CC = 0x001, |
|
|
REG_CLASS_REG_PRED = 0x002, |
|
|
REG_CLASS_REG_ADDR = 0x003, |
|
|
REG_CLASS_REG_HALF = 0x004, |
|
|
REG_CLASS_REG_FULL = 0x005, |
|
|
REG_CLASS_MEM_LOCAL = 0x006, |
|
|
REG_CLASS_LMEM_REG_OFFSET = 0x007, |
|
|
REG_CLASS_UREG_PRED = 0x009, |
|
|
REG_CLASS_UREG_HALF = 0x00a, |
|
|
REG_CLASS_UREG_FULL = 0x00b, |
|
|
} CUDBGRegClass; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_EVENT_INVALID = 0x000, |
|
|
CUDBG_EVENT_ELF_IMAGE_LOADED = 0x001, |
|
|
CUDBG_EVENT_KERNEL_READY = 0x002, |
|
|
CUDBG_EVENT_KERNEL_FINISHED = 0x003, |
|
|
CUDBG_EVENT_INTERNAL_ERROR = 0x004, |
|
|
CUDBG_EVENT_CTX_PUSH = 0x005, |
|
|
CUDBG_EVENT_CTX_POP = 0x006, |
|
|
CUDBG_EVENT_CTX_CREATE = 0x007, |
|
|
CUDBG_EVENT_CTX_DESTROY = 0x008, |
|
|
CUDBG_EVENT_TIMEOUT = 0x009, |
|
|
CUDBG_EVENT_ATTACH_COMPLETE = 0x00a, |
|
|
CUDBG_EVENT_DETACH_COMPLETE = 0x00b, |
|
|
CUDBG_EVENT_ELF_IMAGE_UNLOADED = 0x00c, |
|
|
CUDBG_EVENT_FUNCTIONS_LOADED = 0x00d, |
|
|
} CUDBGEventKind; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_KNL_ORIGIN_CPU = 0x000, |
|
|
CUDBG_KNL_ORIGIN_GPU = 0x001, |
|
|
} CUDBGKernelOrigin; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_KNL_LAUNCH_NOTIFY_EVENT = 0x000, |
|
|
CUDBG_KNL_LAUNCH_NOTIFY_DEFER = 0x001, |
|
|
} CUDBGKernelLaunchNotifyMode; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_EVENT_QUEUE_TYPE_SYNC = 0, |
|
|
CUDBG_EVENT_QUEUE_TYPE_ASYNC = 1, |
|
|
} CUDBGEventQueueType; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_ELF_IMAGE_TYPE_NONRELOCATED = 0, |
|
|
CUDBG_ELF_IMAGE_TYPE_RELOCATED = 1, |
|
|
} CUDBGElfImageType; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_ADJ_PREVIOUS_ADDRESS = 0x000, |
|
|
CUDBG_ADJ_CURRENT_ADDRESS = 0x001, |
|
|
CUDBG_ADJ_NEXT_ADDRESS = 0x002, |
|
|
} CUDBGAdjAddrAction; |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
|
|
|
CUDBG_SINGLE_STEP_FLAGS_NONE = 0, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CUDBG_SINGLE_STEP_FLAGS_NO_STEP_OVER_WARP_BARRIERS = (1U << 0), |
|
|
} CUDBGSingleStepFlags; |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
CUDBGEventKind kind; |
|
|
union cases30_st { |
|
|
struct elfImageLoaded30_st { |
|
|
char *relocatedElfImage; |
|
|
char *nonRelocatedElfImage; |
|
|
uint32_t size; |
|
|
} elfImageLoaded; |
|
|
struct kernelReady30_st { |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
} kernelReady; |
|
|
struct kernelFinished30_st { |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
} kernelFinished; |
|
|
} cases; |
|
|
} CUDBGEvent30; |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
CUDBGEventKind kind; |
|
|
union cases32_st { |
|
|
struct elfImageLoaded32_st { |
|
|
char *relocatedElfImage; |
|
|
char *nonRelocatedElfImage; |
|
|
uint32_t size; |
|
|
uint32_t dev; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
} elfImageLoaded; |
|
|
struct kernelReady32_st { |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
} kernelReady; |
|
|
struct kernelFinished32_st { |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
} kernelFinished; |
|
|
struct contextPush32_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPush; |
|
|
struct contextPop32_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPop; |
|
|
struct contextCreate32_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextCreate; |
|
|
struct contextDestroy32_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextDestroy; |
|
|
} cases; |
|
|
} CUDBGEvent32; |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
CUDBGEventKind kind; |
|
|
union cases42_st { |
|
|
struct elfImageLoaded42_st { |
|
|
char *relocatedElfImage; |
|
|
char *nonRelocatedElfImage; |
|
|
uint32_t size32; |
|
|
uint32_t dev; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t size; |
|
|
} elfImageLoaded; |
|
|
struct kernelReady42_st { |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
CuDim3 gridDim; |
|
|
CuDim3 blockDim; |
|
|
CUDBGKernelType type; |
|
|
} kernelReady; |
|
|
struct kernelFinished42_st { |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
} kernelFinished; |
|
|
struct contextPush42_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPush; |
|
|
struct contextPop42_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPop; |
|
|
struct contextCreate42_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextCreate; |
|
|
struct contextDestroy42_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextDestroy; |
|
|
} cases; |
|
|
} CUDBGEvent42; |
|
|
|
|
|
typedef struct { |
|
|
CUDBGEventKind kind; |
|
|
union cases50_st { |
|
|
struct elfImageLoaded50_st { |
|
|
char *relocatedElfImage; |
|
|
char *nonRelocatedElfImage; |
|
|
uint32_t size32; |
|
|
uint32_t dev; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t size; |
|
|
} elfImageLoaded; |
|
|
struct kernelReady50_st{ |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
CuDim3 gridDim; |
|
|
CuDim3 blockDim; |
|
|
CUDBGKernelType type; |
|
|
} kernelReady; |
|
|
struct kernelFinished50_st { |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
} kernelFinished; |
|
|
struct contextPush50_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPush; |
|
|
struct contextPop50_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPop; |
|
|
struct contextCreate50_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextCreate; |
|
|
struct contextDestroy50_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextDestroy; |
|
|
struct internalError50_st { |
|
|
CUDBGResult errorType; |
|
|
} internalError; |
|
|
} cases; |
|
|
} CUDBGEvent50; |
|
|
|
|
|
typedef struct { |
|
|
CUDBGEventKind kind; |
|
|
union cases55_st { |
|
|
struct elfImageLoaded55_st { |
|
|
char *relocatedElfImage; |
|
|
char *nonRelocatedElfImage; |
|
|
uint32_t size32; |
|
|
uint32_t dev; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t size; |
|
|
} elfImageLoaded; |
|
|
struct kernelReady55_st{ |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
CuDim3 gridDim; |
|
|
CuDim3 blockDim; |
|
|
CUDBGKernelType type; |
|
|
uint64_t parentGridId; |
|
|
uint64_t gridId64; |
|
|
CUDBGKernelOrigin origin; |
|
|
} kernelReady; |
|
|
struct kernelFinished55_st { |
|
|
uint32_t dev; |
|
|
uint32_t gridId; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
uint64_t gridId64; |
|
|
} kernelFinished; |
|
|
struct contextPush55_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPush; |
|
|
struct contextPop55_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPop; |
|
|
struct contextCreate55_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextCreate; |
|
|
struct contextDestroy55_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextDestroy; |
|
|
struct internalError55_st { |
|
|
CUDBGResult errorType; |
|
|
} internalError; |
|
|
} cases; |
|
|
} CUDBGEvent55; |
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
CUDBGEventKind kind; |
|
|
union cases_st { |
|
|
struct elfImageLoaded_st { |
|
|
uint32_t dev; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t size; |
|
|
uint64_t handle; |
|
|
uint32_t properties; |
|
|
} elfImageLoaded; |
|
|
struct elfImageUnloaded_st { |
|
|
uint32_t dev; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t size; |
|
|
uint64_t handle; |
|
|
} elfImageUnloaded; |
|
|
struct kernelReady_st{ |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t gridId; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
CuDim3 gridDim; |
|
|
CuDim3 blockDim; |
|
|
CUDBGKernelType type; |
|
|
uint64_t parentGridId; |
|
|
CUDBGKernelOrigin origin; |
|
|
} kernelReady; |
|
|
struct kernelFinished_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
uint64_t gridId; |
|
|
} kernelFinished; |
|
|
struct contextPush_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPush; |
|
|
struct contextPop_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextPop; |
|
|
struct contextCreate_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextCreate; |
|
|
struct contextDestroy_st { |
|
|
uint32_t dev; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
} contextDestroy; |
|
|
struct internalError_st { |
|
|
CUDBGResult errorType; |
|
|
} internalError; |
|
|
struct functionsLoaded_st { |
|
|
uint32_t dev; |
|
|
uint32_t count; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
} functionsLoaded; |
|
|
} cases; |
|
|
} CUDBGEvent; |
|
|
#pragma pack(pop) |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
uint32_t tid; |
|
|
} CUDBGEventCallbackData40; |
|
|
|
|
|
typedef struct { |
|
|
uint32_t tid; |
|
|
uint32_t timeout; |
|
|
} CUDBGEventCallbackData; |
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
uint32_t dev; |
|
|
uint64_t gridId64; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
CuDim3 gridDim; |
|
|
CuDim3 blockDim; |
|
|
CUDBGKernelType type; |
|
|
uint64_t parentGridId; |
|
|
CUDBGKernelOrigin origin; |
|
|
} CUDBGGridInfo55; |
|
|
|
|
|
typedef struct { |
|
|
uint32_t dev; |
|
|
uint64_t gridId64; |
|
|
uint32_t tid; |
|
|
uint64_t context; |
|
|
uint64_t module; |
|
|
uint64_t function; |
|
|
uint64_t functionEntry; |
|
|
CuDim3 gridDim; |
|
|
CuDim3 blockDim; |
|
|
CUDBGKernelType type; |
|
|
uint64_t parentGridId; |
|
|
CUDBGKernelOrigin origin; |
|
|
CuDim3 clusterDim; |
|
|
} CUDBGGridInfo; |
|
|
#pragma pack(pop) |
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
uint64_t sectionIndex; |
|
|
uint64_t address; |
|
|
} CUDBGLoadedFunctionInfo; |
|
|
#pragma pack(pop) |
|
|
|
|
|
typedef void (*CUDBGNotifyNewEventCallback31)(void *data); |
|
|
typedef void (*CUDBGNotifyNewEventCallback40)(CUDBGEventCallbackData40 *data); |
|
|
typedef void (*CUDBGNotifyNewEventCallback)(CUDBGEventCallbackData *data); |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_EXCEPTION_UNKNOWN = 0xFFFFFFFFU, |
|
|
CUDBG_EXCEPTION_NONE = 0, |
|
|
CUDBG_EXCEPTION_LANE_ILLEGAL_ADDRESS = 1, |
|
|
CUDBG_EXCEPTION_LANE_USER_STACK_OVERFLOW = 2, |
|
|
CUDBG_EXCEPTION_DEVICE_HARDWARE_STACK_OVERFLOW = 3, |
|
|
CUDBG_EXCEPTION_WARP_ILLEGAL_INSTRUCTION = 4, |
|
|
CUDBG_EXCEPTION_WARP_OUT_OF_RANGE_ADDRESS = 5, |
|
|
CUDBG_EXCEPTION_WARP_MISALIGNED_ADDRESS = 6, |
|
|
CUDBG_EXCEPTION_WARP_INVALID_ADDRESS_SPACE = 7, |
|
|
CUDBG_EXCEPTION_WARP_INVALID_PC = 8, |
|
|
CUDBG_EXCEPTION_WARP_HARDWARE_STACK_OVERFLOW = 9, |
|
|
CUDBG_EXCEPTION_DEVICE_ILLEGAL_ADDRESS = 10, |
|
|
CUDBG_EXCEPTION_LANE_MISALIGNED_ADDRESS = 11, |
|
|
CUDBG_EXCEPTION_WARP_ASSERT = 12, |
|
|
CUDBG_EXCEPTION_LANE_SYSCALL_ERROR = 13, |
|
|
CUDBG_EXCEPTION_WARP_ILLEGAL_ADDRESS = 14, |
|
|
CUDBG_EXCEPTION_LANE_NONMIGRATABLE_ATOMSYS = 15, |
|
|
CUDBG_EXCEPTION_LANE_INVALID_ATOMSYS = 16, |
|
|
CUDBG_EXCEPTION_CLUSTER_OUT_OF_RANGE_ADDRESS = 17, |
|
|
CUDBG_EXCEPTION_CLUSTER_BLOCK_NOT_PRESENT = 18, |
|
|
} CUDBGException_t; |
|
|
|
|
|
typedef enum { |
|
|
CUDBG_UVM_MEMORY_ACCESS_TYPE_UNKNOWN = 0xFFFFFFFFU, |
|
|
CUDBG_UVM_MEMORY_ACCESS_TYPE_INVALID = 0, |
|
|
CUDBG_UVM_MEMORY_ACCESS_TYPE_READ = 1, |
|
|
CUDBG_UVM_MEMORY_ACCESS_TYPE_WRITE = 2, |
|
|
CUDBG_UVM_MEMORY_ACCESS_TYPE_ATOMIC = 3, |
|
|
CUDBG_UVM_MEMORY_ACCESS_TYPE_PREFETCH = 4, |
|
|
} CUDBGUvmMemoryAccessType_t; |
|
|
|
|
|
typedef enum { |
|
|
CUDBG_UVM_FAULT_TYPE_UNKNOWN = 0xFFFFFFFFU, |
|
|
CUDBG_UVM_FAULT_TYPE_INVALID = 0, |
|
|
CUDBG_UVM_FAULT_TYPE_INVALID_PDE = 1, |
|
|
CUDBG_UVM_FAULT_TYPE_INVALID_PTE = 2, |
|
|
CUDBG_UVM_FAULT_TYPE_WRITE = 3, |
|
|
CUDBG_UVM_FAULT_TYPE_ATOMIC = 4, |
|
|
CUDBG_UVM_FAULT_TYPE_INVALID_PDE_SIZE = 5, |
|
|
CUDBG_UVM_FAULT_TYPE_LIMIT_VIOLATION = 6, |
|
|
CUDBG_UVM_FAULT_TYPE_UNBOUND_INST_BLOCK = 7, |
|
|
CUDBG_UVM_FAULT_TYPE_PRIV_VIOLATION = 8, |
|
|
CUDBG_UVM_FAULT_TYPE_PITCH_MASK_VIOLATION = 9, |
|
|
CUDBG_UVM_FAULT_TYPE_WORK_CREATION = 10, |
|
|
CUDBG_UVM_FAULT_TYPE_UNSUPPORTED_APERTURE = 11, |
|
|
CUDBG_UVM_FAULT_TYPE_COMPRESSION_FAILURE = 12, |
|
|
CUDBG_UVM_FAULT_TYPE_UNSUPPORTED_KIND = 13, |
|
|
CUDBG_UVM_FAULT_TYPE_REGION_VIOLATION = 14, |
|
|
CUDBG_UVM_FAULT_TYPE_POISON = 15, |
|
|
} CUDBGUvmFaultType_t; |
|
|
|
|
|
typedef enum { |
|
|
CUDBG_UVM_FATAL_REASON_UNKNOWN = 0xFFFFFFFFU, |
|
|
CUDBG_UVM_FATAL_REASON_INVALID = 0, |
|
|
CUDBG_UVM_FATAL_REASON_INVALID_ADDRESS = 1, |
|
|
CUDBG_UVM_FATAL_REASON_INVALID_PERMISSIONS = 2, |
|
|
CUDBG_UVM_FATAL_REASON_INVALID_FAULT_TYPE = 3, |
|
|
CUDBG_UVM_FATAL_REASON_OUT_OF_MEMORY = 4, |
|
|
CUDBG_UVM_FATAL_REASON_INTERNAL_ERROR = 5, |
|
|
CUDBG_UVM_FATAL_REASON_INVALID_OPERATION = 6, |
|
|
} CUDBGUvmFatalReason_t; |
|
|
|
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
uint64_t virtualPC; |
|
|
CuDim3 threadIdx; |
|
|
CUDBGException_t exception; |
|
|
} CUDBGLaneState; |
|
|
|
|
|
typedef struct { |
|
|
uint64_t gridId; |
|
|
uint64_t errorPC; |
|
|
CuDim3 blockIdx; |
|
|
uint32_t validLanes; |
|
|
uint32_t activeLanes; |
|
|
uint32_t errorPCValid; |
|
|
CUDBGLaneState lane[32]; |
|
|
} CUDBGWarpState60; |
|
|
|
|
|
typedef struct { |
|
|
uint64_t gridId; |
|
|
uint64_t errorPC; |
|
|
CuDim3 blockIdx; |
|
|
uint32_t validLanes; |
|
|
uint32_t activeLanes; |
|
|
uint32_t errorPCValid; |
|
|
CUDBGLaneState lane[32]; |
|
|
CuDim3 clusterIdx; |
|
|
} CUDBGWarpState; |
|
|
#pragma pack(pop) |
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
uint64_t startAddress; |
|
|
uint64_t size; |
|
|
} CUDBGMemoryInfo; |
|
|
#pragma pack(pop) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
|
|
|
CUDBG_RESPONSE_TYPE_FULL, |
|
|
|
|
|
|
|
|
CUDBG_RESPONSE_TYPE_UPDATE, |
|
|
|
|
|
|
|
|
CUDBG_RESPONSE_TYPE_UNKNOWN = 0xFFFFFFFFU, |
|
|
} CUDBGDeviceInfoQueryType_t; |
|
|
|
|
|
|
|
|
typedef enum { |
|
|
|
|
|
|
|
|
|
|
|
CUDBG_DEVICE_ATTRIBUTE_SM_UPDATE_MASK = 0, |
|
|
|
|
|
|
|
|
|
|
|
CUDBG_DEVICE_ATTRIBUTE_SM_ACTIVE_MASK = 1, |
|
|
|
|
|
|
|
|
|
|
|
CUDBG_DEVICE_ATTRIBUTE_SM_EXCEPTION_MASK = 2, |
|
|
|
|
|
CUDBG_DEVICE_ATTRIBUTE_COUNT = 3, |
|
|
} CUDBGDeviceInfoAttribute_t; |
|
|
|
|
|
|
|
|
typedef enum { |
|
|
|
|
|
|
|
|
|
|
|
CUDBG_SM_ATTRIBUTE_WARP_UPDATE_MASK = 0, |
|
|
|
|
|
CUDBG_SM_ATTRIBUTE_COUNT = 1, |
|
|
} CUDBGSMInfoAttribute_t; |
|
|
|
|
|
|
|
|
typedef enum { |
|
|
|
|
|
|
|
|
|
|
|
CUDBG_WARP_ATTRIBUTE_LANE_UPDATE_MASK = 0, |
|
|
|
|
|
|
|
|
|
|
|
CUDBG_WARP_ATTRIBUTE_LANE_ATTRIBUTES = 1, |
|
|
|
|
|
|
|
|
|
|
|
CUDBG_WARP_ATTRIBUTE_EXCEPTION = 2, |
|
|
|
|
|
|
|
|
|
|
|
CUDBG_WARP_ATTRIBUTE_ERRORPC = 3, |
|
|
|
|
|
|
|
|
|
|
|
CUDBG_WARP_ATTRIBUTE_CLUSTERIDX = 4, |
|
|
|
|
|
CUDBG_WARP_ATTRIBUTE_COUNT = 5, |
|
|
} CUDBGWarpInfoAttribute_t; |
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_LANE_ATTRIBUTE_COUNT = 0, |
|
|
} CUDBGLaneInfoAttribute_t; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
uint32_t requiredBufferSize; |
|
|
|
|
|
uint32_t deviceInfoSize; |
|
|
uint32_t deviceInfoAttributeSizes[32]; |
|
|
|
|
|
uint32_t smInfoSize; |
|
|
uint32_t smInfoAttributeSizes[32]; |
|
|
|
|
|
uint32_t warpInfoSize; |
|
|
uint32_t warpInfoAttributeSizes[32]; |
|
|
|
|
|
uint32_t laneInfoSize; |
|
|
uint32_t laneInfoAttributeSizes[32]; |
|
|
} CUDBGDeviceInfoSizes; |
|
|
#pragma pack(pop) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
CUDBGDeviceInfoQueryType_t responseType; |
|
|
|
|
|
|
|
|
uint32_t deviceAttributeFlags; |
|
|
} CUDBGDeviceInfo; |
|
|
#pragma pack(pop) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
uint64_t warpValidMask; |
|
|
uint64_t warpBrokenMask; |
|
|
|
|
|
|
|
|
uint32_t smAttributeFlags; |
|
|
|
|
|
|
|
|
} CUDBGSMInfo; |
|
|
#pragma pack(pop) |
|
|
|
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
uint64_t gridId; |
|
|
|
|
|
CuDim3 blockIdx; |
|
|
CuDim3 baseThreadIdx; |
|
|
|
|
|
uint32_t validLanes; |
|
|
uint32_t activeLanes; |
|
|
|
|
|
|
|
|
uint32_t warpAttributeFlags; |
|
|
|
|
|
|
|
|
} CUDBGWarpInfo; |
|
|
#pragma pack(pop) |
|
|
|
|
|
|
|
|
#pragma pack(push,1) |
|
|
typedef struct { |
|
|
uint64_t virtualPC; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} CUDBGLaneInfo; |
|
|
#pragma pack(pop) |
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
CUDBG_COREDUMP_DEFAULT_FLAGS = 0, |
|
|
CUDBG_COREDUMP_SKIP_NONRELOCATED_ELF_IMAGES = (1 << 0), |
|
|
CUDBG_COREDUMP_SKIP_GLOBAL_MEMORY = (1 << 1), |
|
|
CUDBG_COREDUMP_SKIP_SHARED_MEMORY = (1 << 2), |
|
|
CUDBG_COREDUMP_SKIP_LOCAL_MEMORY = (1 << 3), |
|
|
CUDBG_COREDUMP_SKIP_ABORT = (1 << 4), |
|
|
|
|
|
CUDBG_COREDUMP_LIGHTWEIGHT_FLAGS = CUDBG_COREDUMP_SKIP_NONRELOCATED_ELF_IMAGES |
|
|
| CUDBG_COREDUMP_SKIP_GLOBAL_MEMORY |
|
|
| CUDBG_COREDUMP_SKIP_SHARED_MEMORY |
|
|
| CUDBG_COREDUMP_SKIP_LOCAL_MEMORY |
|
|
} CUDBGCoredumpGenerationFlags; |
|
|
|
|
|
|
|
|
|
|
|
typedef const struct CUDBGAPI_st *CUDBGAPI; |
|
|
|
|
|
CUDBGResult cudbgGetAPI(uint32_t major, uint32_t minor, uint32_t rev, CUDBGAPI *api); |
|
|
CUDBGResult cudbgGetAPIVersion(uint32_t *major, uint32_t *minor, uint32_t *rev); |
|
|
CUDBGResult cudbgMain(int apiClientPid, uint32_t apiClientRevision, int sessionId, int attachState, |
|
|
int attachEventInitialized, int writeFd, int detachFd, int attachStubInUse, |
|
|
int enablePreemptionDebugging); |
|
|
void cudbgApiInit(uint32_t arg); |
|
|
void cudbgApiAttach(void); |
|
|
void cudbgApiDetach(void); |
|
|
void CUDBG_REPORT_DRIVER_API_ERROR(void); |
|
|
void CUDBG_REPORT_DRIVER_INTERNAL_ERROR(void); |
|
|
|
|
|
extern uint32_t CUDBG_IPC_FLAG_NAME; |
|
|
extern uint32_t CUDBG_RPC_ENABLED; |
|
|
extern uint32_t CUDBG_APICLIENT_PID; |
|
|
extern uint32_t CUDBG_I_AM_DEBUGGER; |
|
|
extern uint32_t CUDBG_DEBUGGER_INITIALIZED; |
|
|
extern uint32_t CUDBG_APICLIENT_REVISION; |
|
|
extern uint32_t CUDBG_SESSION_ID; |
|
|
extern uint64_t CUDBG_REPORTED_DRIVER_API_ERROR_CODE; |
|
|
extern uint64_t CUDBG_REPORTED_DRIVER_API_ERROR_FUNC_NAME_SIZE; |
|
|
extern uint64_t CUDBG_REPORTED_DRIVER_API_ERROR_FUNC_NAME_ADDR; |
|
|
extern uint64_t CUDBG_REPORTED_DRIVER_INTERNAL_ERROR_CODE; |
|
|
extern uint32_t CUDBG_ATTACH_HANDLER_AVAILABLE; |
|
|
extern uint32_t CUDBG_ENABLE_LAUNCH_BLOCKING; |
|
|
extern uint32_t CUDBG_ENABLE_PREEMPTION_DEBUGGING; |
|
|
extern uint32_t CUDBG_RESUME_FOR_ATTACH_DETACH; |
|
|
extern uint32_t CUDBG_REPORT_DRIVER_API_ERROR_FLAGS; |
|
|
extern uint32_t CUDBG_DEBUGGER_CAPABILITIES; |
|
|
|
|
|
|
|
|
extern uint32_t CUDBG_DETACH_SUSPENDED_DEVICES_MASK; |
|
|
|
|
|
|
|
|
extern uint32_t CUDBG_ENABLE_INTEGRATED_MEMCHECK; |
|
|
|
|
|
struct CUDBGAPI_st { |
|
|
|
|
|
CUDBGResult (*initialize)(void); |
|
|
CUDBGResult (*finalize)(void); |
|
|
|
|
|
|
|
|
CUDBGResult (*suspendDevice)(uint32_t dev); |
|
|
CUDBGResult (*resumeDevice)(uint32_t dev); |
|
|
CUDBGResult (*singleStepWarp40)(uint32_t dev, uint32_t sm, uint32_t wp); |
|
|
|
|
|
|
|
|
CUDBGResult (*setBreakpoint31)(uint64_t addr); |
|
|
CUDBGResult (*unsetBreakpoint31)(uint64_t addr); |
|
|
|
|
|
|
|
|
CUDBGResult (*readGridId50)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t *gridId); |
|
|
CUDBGResult (*readBlockIdx32)(uint32_t dev, uint32_t sm, uint32_t wp, CuDim2 *blockIdx); |
|
|
CUDBGResult (*readThreadIdx)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, CuDim3 *threadIdx); |
|
|
CUDBGResult (*readBrokenWarps)(uint32_t dev, uint32_t sm, uint64_t *brokenWarpsMask); |
|
|
CUDBGResult (*readValidWarps)(uint32_t dev, uint32_t sm, uint64_t *validWarpsMask); |
|
|
CUDBGResult (*readValidLanes)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t *validLanesMask); |
|
|
CUDBGResult (*readActiveLanes)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t *activeLanesMask); |
|
|
CUDBGResult (*readCodeMemory)(uint32_t dev, uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*readConstMemory)(uint32_t dev, uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*readGlobalMemory31)(uint32_t dev, uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*readParamMemory)(uint32_t dev, uint32_t sm, uint32_t wp, uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*readSharedMemory)(uint32_t dev, uint32_t sm, uint32_t wp, uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*readLocalMemory)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*readRegister)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t regno, uint32_t *val); |
|
|
CUDBGResult (*readPC)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint64_t *pc); |
|
|
CUDBGResult (*readVirtualPC)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint64_t *pc); |
|
|
CUDBGResult (*readLaneStatus)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, bool *error); |
|
|
|
|
|
|
|
|
CUDBGResult (*writeGlobalMemory31)(uint32_t dev, uint64_t addr, const void *buf, uint32_t sz); |
|
|
CUDBGResult (*writeParamMemory)(uint32_t dev, uint32_t sm, uint32_t wp, uint64_t addr, const void *buf, uint32_t sz); |
|
|
CUDBGResult (*writeSharedMemory)(uint32_t dev, uint32_t sm, uint32_t wp, uint64_t addr, const void *buf, uint32_t sz); |
|
|
CUDBGResult (*writeLocalMemory)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint64_t addr, const void *buf, uint32_t sz); |
|
|
CUDBGResult (*writeRegister)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t regno, uint32_t val); |
|
|
|
|
|
|
|
|
CUDBGResult (*getGridDim32)(uint32_t dev, uint32_t sm, uint32_t wp, CuDim2 *gridDim); |
|
|
CUDBGResult (*getBlockDim)(uint32_t dev, uint32_t sm, uint32_t wp, CuDim3 *blockDim); |
|
|
CUDBGResult (*getTID)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t *tid); |
|
|
CUDBGResult (*getElfImage32)(uint32_t dev, uint32_t sm, uint32_t wp, bool relocated, void **elfImage, uint32_t *size); |
|
|
|
|
|
|
|
|
CUDBGResult (*getDeviceType)(uint32_t dev, char *buf, uint32_t sz); |
|
|
CUDBGResult (*getSmType)(uint32_t dev, char *buf, uint32_t sz); |
|
|
CUDBGResult (*getNumDevices)(uint32_t *numDev); |
|
|
CUDBGResult (*getNumSMs)(uint32_t dev, uint32_t *numSMs); |
|
|
CUDBGResult (*getNumWarps)(uint32_t dev, uint32_t *numWarps); |
|
|
CUDBGResult (*getNumLanes)(uint32_t dev, uint32_t *numLanes); |
|
|
CUDBGResult (*getNumRegisters)(uint32_t dev, uint32_t *numRegs); |
|
|
|
|
|
|
|
|
CUDBGResult (*getPhysicalRegister30)(uint64_t pc, char *reg, uint32_t *buf, uint32_t sz, uint32_t *numPhysRegs, CUDBGRegClass *regClass); |
|
|
CUDBGResult (*disassemble)(uint32_t dev, uint64_t addr, uint32_t *instSize, char *buf, uint32_t sz); |
|
|
CUDBGResult (*isDeviceCodeAddress55)(uintptr_t addr, bool *isDeviceAddress); |
|
|
CUDBGResult (*lookupDeviceCodeSymbol)(char *symName, bool *symFound, uintptr_t *symAddr); |
|
|
|
|
|
|
|
|
CUDBGResult (*setNotifyNewEventCallback31)(CUDBGNotifyNewEventCallback31 callback, void *data); |
|
|
CUDBGResult (*getNextEvent30)(CUDBGEvent30 *event); |
|
|
CUDBGResult (*acknowledgeEvent30)(CUDBGEvent30 *event); |
|
|
|
|
|
|
|
|
CUDBGResult (*getGridAttribute)(uint32_t dev, uint32_t sm, uint32_t wp, CUDBGAttribute attr, uint64_t *value); |
|
|
CUDBGResult (*getGridAttributes)(uint32_t dev, uint32_t sm, uint32_t wp, CUDBGAttributeValuePair *pairs, uint32_t numPairs); |
|
|
CUDBGResult (*getPhysicalRegister40)(uint32_t dev, uint32_t sm, uint32_t wp, uint64_t pc, char *reg, uint32_t *buf, uint32_t sz, uint32_t *numPhysRegs, CUDBGRegClass *regClass); |
|
|
CUDBGResult (*readLaneException)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, CUDBGException_t *exception); |
|
|
CUDBGResult (*getNextEvent32)(CUDBGEvent32 *event); |
|
|
CUDBGResult (*acknowledgeEvents42)(void); |
|
|
|
|
|
|
|
|
CUDBGResult (*readCallDepth32)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t *depth); |
|
|
CUDBGResult (*readReturnAddress32)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t level, uint64_t *ra); |
|
|
CUDBGResult (*readVirtualReturnAddress32)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t level, uint64_t *ra); |
|
|
|
|
|
|
|
|
CUDBGResult (*readGlobalMemory55)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*writeGlobalMemory55)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint64_t addr, const void *buf, uint32_t sz); |
|
|
CUDBGResult (*readPinnedMemory)(uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*writePinnedMemory)(uint64_t addr, const void *buf, uint32_t sz); |
|
|
CUDBGResult (*setBreakpoint)(uint32_t dev, uint64_t addr); |
|
|
CUDBGResult (*unsetBreakpoint)(uint32_t dev, uint64_t addr); |
|
|
CUDBGResult (*setNotifyNewEventCallback40)(CUDBGNotifyNewEventCallback40 callback); |
|
|
|
|
|
|
|
|
CUDBGResult (*getNextEvent42)(CUDBGEvent42 *event); |
|
|
CUDBGResult (*readTextureMemory)(uint32_t devId, uint32_t vsm, uint32_t wp, uint32_t id, uint32_t dim, uint32_t *coords, void *buf, uint32_t sz); |
|
|
CUDBGResult (*readBlockIdx)(uint32_t dev, uint32_t sm, uint32_t wp, CuDim3 *blockIdx); |
|
|
CUDBGResult (*getGridDim)(uint32_t dev, uint32_t sm, uint32_t wp, CuDim3 *gridDim); |
|
|
CUDBGResult (*readCallDepth)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t *depth); |
|
|
CUDBGResult (*readReturnAddress)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t level, uint64_t *ra); |
|
|
CUDBGResult (*readVirtualReturnAddress)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t level, uint64_t *ra); |
|
|
CUDBGResult (*getElfImage)(uint32_t dev, uint32_t sm, uint32_t wp, bool relocated, void **elfImage, uint64_t *size); |
|
|
|
|
|
|
|
|
CUDBGResult (*getHostAddrFromDeviceAddr)(uint32_t dev, uint64_t device_addr, uint64_t *host_addr); |
|
|
CUDBGResult (*singleStepWarp41)(uint32_t dev, uint32_t sm, uint32_t wp, uint64_t *warpMask); |
|
|
CUDBGResult (*setNotifyNewEventCallback)(CUDBGNotifyNewEventCallback callback); |
|
|
CUDBGResult (*readSyscallCallDepth)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t *depth); |
|
|
|
|
|
|
|
|
CUDBGResult (*readTextureMemoryBindless)(uint32_t devId, uint32_t vsm, uint32_t wp, uint32_t texSymtabIndex, uint32_t dim, uint32_t *coords, void *buf, uint32_t sz); |
|
|
|
|
|
|
|
|
CUDBGResult (*clearAttachState)(void); |
|
|
CUDBGResult (*getNextSyncEvent50)(CUDBGEvent50 *event); |
|
|
CUDBGResult (*memcheckReadErrorAddress)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint64_t *address, ptxStorageKind *storage); |
|
|
CUDBGResult (*acknowledgeSyncEvents)(void); |
|
|
CUDBGResult (*getNextAsyncEvent50)(CUDBGEvent50 *event); |
|
|
CUDBGResult (*requestCleanupOnDetach55)(void); |
|
|
CUDBGResult (*initializeAttachStub)(void); |
|
|
CUDBGResult (*getGridStatus50)(uint32_t dev, uint32_t gridId, CUDBGGridStatus *status); |
|
|
|
|
|
|
|
|
CUDBGResult (*getNextSyncEvent55)(CUDBGEvent55 *event); |
|
|
CUDBGResult (*getNextAsyncEvent55)(CUDBGEvent55 *event); |
|
|
CUDBGResult (*getGridInfo55)(uint32_t dev, uint64_t gridId64, CUDBGGridInfo55 *gridInfo); |
|
|
CUDBGResult (*readGridId)(uint32_t dev, uint32_t sm, uint32_t wp, uint64_t *gridId64); |
|
|
CUDBGResult (*getGridStatus)(uint32_t dev, uint64_t gridId64, CUDBGGridStatus *status); |
|
|
CUDBGResult (*setKernelLaunchNotificationMode)(CUDBGKernelLaunchNotifyMode mode); |
|
|
CUDBGResult (*getDevicePCIBusInfo)(uint32_t devId, uint32_t *pciBusId, uint32_t *pciDevId); |
|
|
CUDBGResult (*readDeviceExceptionState80)(uint32_t devId, uint64_t *exceptionSMMask); |
|
|
|
|
|
|
|
|
CUDBGResult (*getAdjustedCodeAddress)(uint32_t devId, uint64_t address, uint64_t *adjustedAddress, CUDBGAdjAddrAction adjAction); |
|
|
CUDBGResult (*readErrorPC)(uint32_t devId, uint32_t sm, uint32_t wp, uint64_t *errorPC, bool *errorPCValid); |
|
|
CUDBGResult (*getNextEvent)(CUDBGEventQueueType type, CUDBGEvent *event); |
|
|
CUDBGResult (*getElfImageByHandle)(uint32_t devId, uint64_t handle, CUDBGElfImageType type, void *elfImage, uint64_t size); |
|
|
CUDBGResult (*resumeWarpsUntilPC)(uint32_t devId, uint32_t sm, uint64_t warpMask, uint64_t virtPC); |
|
|
CUDBGResult (*readWarpState60)(uint32_t devId, uint32_t sm, uint32_t wp, CUDBGWarpState60 *state); |
|
|
CUDBGResult (*readRegisterRange)(uint32_t devId, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t index, uint32_t registers_size, uint32_t *registers); |
|
|
CUDBGResult (*readGenericMemory)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*writeGenericMemory)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint64_t addr, const void *buf, uint32_t sz); |
|
|
CUDBGResult (*readGlobalMemory)(uint64_t addr, void *buf, uint32_t sz); |
|
|
CUDBGResult (*writeGlobalMemory)(uint64_t addr, const void *buf, uint32_t sz); |
|
|
CUDBGResult (*getManagedMemoryRegionInfo)(uint64_t startAddress, CUDBGMemoryInfo *memoryInfo, uint32_t memoryInfo_size, uint32_t *numEntries); |
|
|
CUDBGResult (*isDeviceCodeAddress)(uintptr_t addr, bool *isDeviceAddress); |
|
|
CUDBGResult (*requestCleanupOnDetach)(uint32_t appResumeFlag); |
|
|
|
|
|
|
|
|
CUDBGResult (*readPredicates)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t predicates_size, uint32_t *predicates); |
|
|
CUDBGResult (*writePredicates)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t predicates_size, const uint32_t *predicates); |
|
|
CUDBGResult (*getNumPredicates)(uint32_t dev, uint32_t *numPredicates); |
|
|
CUDBGResult (*readCCRegister)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t *val); |
|
|
CUDBGResult (*writeCCRegister)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t ln, uint32_t val); |
|
|
|
|
|
CUDBGResult (*getDeviceName)(uint32_t dev, char *buf, uint32_t sz); |
|
|
CUDBGResult (*singleStepWarp65)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t nsteps, uint64_t *warpMask); |
|
|
|
|
|
|
|
|
CUDBGResult (*readDeviceExceptionState)(uint32_t devId, uint64_t *mask, uint32_t numWords); |
|
|
|
|
|
|
|
|
CUDBGResult (*getNumUniformRegisters)(uint32_t dev, uint32_t *numRegs); |
|
|
CUDBGResult (*readUniformRegisterRange)(uint32_t devId, uint32_t sm, uint32_t wp, uint32_t regno, uint32_t registers_size, uint32_t *registers); |
|
|
CUDBGResult (*writeUniformRegister)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t regno, uint32_t val); |
|
|
CUDBGResult (*getNumUniformPredicates)(uint32_t dev, uint32_t *numPredicates); |
|
|
CUDBGResult (*readUniformPredicates)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t predicates_size, uint32_t *predicates); |
|
|
CUDBGResult (*writeUniformPredicates)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t predicates_size, const uint32_t *predicates); |
|
|
|
|
|
|
|
|
CUDBGResult (*getLoadedFunctionInfo118)(uint32_t devId, uint64_t handle, CUDBGLoadedFunctionInfo *info, uint32_t numEntries); |
|
|
|
|
|
|
|
|
CUDBGResult (*getGridInfo)(uint32_t dev, uint64_t gridId64, CUDBGGridInfo *gridInfo); |
|
|
CUDBGResult (*getClusterDim)(uint32_t dev, uint64_t gridId64, CuDim3 *clusterDim); |
|
|
CUDBGResult (*readWarpState)(uint32_t dev, uint32_t sm, uint32_t wp, CUDBGWarpState *state); |
|
|
CUDBGResult (*readClusterIdx)(uint32_t dev, uint32_t sm, uint32_t wp, CuDim3 *clusterIdx); |
|
|
|
|
|
|
|
|
CUDBGResult (*getErrorStringEx)(char *buf, uint32_t bufSz, uint32_t *msgSz); |
|
|
|
|
|
|
|
|
CUDBGResult (*getLoadedFunctionInfo)(uint32_t devId, uint64_t handle, CUDBGLoadedFunctionInfo *info, uint32_t startIndex, uint32_t numEntries); |
|
|
CUDBGResult (*generateCoredump)(const char* filename, CUDBGCoredumpGenerationFlags flags); |
|
|
CUDBGResult (*getConstBankAddress123)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t bank, uint32_t offset, uint64_t* address); |
|
|
|
|
|
|
|
|
CUDBGResult (*getDeviceInfoSizes)(uint32_t dev, CUDBGDeviceInfoSizes* sizes); |
|
|
CUDBGResult (*getDeviceInfo)(uint32_t dev, CUDBGDeviceInfoQueryType_t type, void *buffer, uint32_t length, uint32_t *dataLength); |
|
|
CUDBGResult (*getConstBankAddress)(uint32_t dev, uint64_t gridId64, uint32_t bank, uint64_t* address, uint32_t* size); |
|
|
CUDBGResult (*singleStepWarp)(uint32_t dev, uint32_t sm, uint32_t wp, uint32_t laneHint, uint32_t nsteps, uint32_t flags, uint64_t *warpMask); |
|
|
}; |
|
|
|
|
|
#ifdef __cplusplus |
|
|
} |
|
|
#endif |
|
|
|
|
|
#endif |
|
|
|