PAPI 7.1.0.0
Loading...
Searching...
No Matches
cupti_common.h
Go to the documentation of this file.
1
7#ifndef __CUPTI_COMMON_H__
8#define __CUPTI_COMMON_H__
9
10#include <stdio.h>
11#include <cuda.h>
12#include <cupti.h>
13
14#include "cupti_utils.h"
15#include "lcuda_debug.h"
16
17extern const char *linked_cudart_path;
18extern void *dl_cupti;
19
20extern unsigned int _cuda_lock;
21
22/* cuda driver function pointers */
23extern CUresult ( *cuCtxGetCurrentPtr ) (CUcontext *);
24extern CUresult ( *cuCtxSetCurrentPtr ) (CUcontext);
25extern CUresult ( *cuCtxDestroyPtr ) (CUcontext);
26extern CUresult ( *cuCtxCreatePtr ) (CUcontext *pctx, unsigned int flags, CUdevice dev);
27extern CUresult ( *cuCtxGetDevicePtr ) (CUdevice *);
28extern CUresult ( *cuDeviceGetPtr ) (CUdevice *, int);
29extern CUresult ( *cuDeviceGetCountPtr ) (int *);
30extern CUresult ( *cuDeviceGetNamePtr ) (char *, int, CUdevice);
31extern CUresult ( *cuDevicePrimaryCtxRetainPtr ) (CUcontext *pctx, CUdevice);
32extern CUresult ( *cuDevicePrimaryCtxReleasePtr ) (CUdevice);
33extern CUresult ( *cuInitPtr ) (unsigned int);
34extern CUresult ( *cuGetErrorStringPtr ) (CUresult error, const char** pStr);
35extern CUresult ( *cuCtxPopCurrentPtr ) (CUcontext * pctx);
36extern CUresult ( *cuCtxPushCurrentPtr ) (CUcontext pctx);
37extern CUresult ( *cuCtxSynchronizePtr ) ();
38extern CUresult ( *cuDeviceGetAttributePtr ) (int *, CUdevice_attribute, CUdevice);
39
40/* cuda runtime function pointers */
41extern cudaError_t ( *cudaGetDeviceCountPtr ) (int *);
42extern cudaError_t ( *cudaGetDevicePtr ) (int *);
43extern cudaError_t ( *cudaSetDevicePtr ) (int);
44extern cudaError_t ( *cudaGetDevicePropertiesPtr ) (struct cudaDeviceProp* prop, int device);
45extern cudaError_t ( *cudaDeviceGetAttributePtr ) (int *value, enum cudaDeviceAttr attr, int device);
46extern cudaError_t ( *cudaFreePtr ) (void *);
47extern cudaError_t ( *cudaDriverGetVersionPtr ) (int *);
48extern cudaError_t ( *cudaRuntimeGetVersionPtr ) (int *);
49
50extern CUptiResult ( *cuptiGetVersionPtr ) (uint32_t* );
51
52#define DLSYM_AND_CHECK( dllib, name ) dlsym( dllib, name ); \
53 if (dlerror() != NULL) { \
54 ERRDBG("A CUDA required function '%s' was not found in lib '%s'.\n", name, #dllib); \
55 return PAPI_EMISC; \
56 }
57
58#define CUDA_CALL( call, handleerror ) \
59 do { \
60 CUresult _status = (call); \
61 LOGCUDACALL("\t" #call "\n"); \
62 if (_status != CUDA_SUCCESS) { \
63 ERRDBG("CUDA Error %d: Error in call to " #call "\n", _status); \
64 EXIT_OR_NOT; \
65 handleerror; \
66 } \
67 } while (0);
68#define CUDART_CALL( call, handleerror ) \
69 do { \
70 cudaError_t _status = (call); \
71 LOGCUDACALL("\t" #call "\n"); \
72 if (_status != cudaSuccess) { \
73 ERRDBG("CUDART Error %d: Error in call to " #call "\n", _status); \
74 EXIT_OR_NOT; \
75 handleerror; \
76 } \
77 } while (0);
78#define CUPTI_CALL( call, handleerror ) \
79 do { \
80 CUptiResult _status = (call); \
81 LOGCUPTICALL("\t" #call "\n"); \
82 if (_status != CUPTI_SUCCESS) { \
83 ERRDBG("CUPTI Error %d: Error in call to " #call "\n", _status); \
84 EXIT_OR_NOT; \
85 handleerror; \
86 } \
87 } while (0);
88
89void cuptic_disabled_reason_set(const char *msg);
90void cuptic_disabled_reason_get(const char **pmsg);
91
92void *cuptic_load_dynamic_syms(const char *parent_path, const char *dlname, const char *search_subpaths[]);
93int cuptic_shutdown(void);
95int cuptic_init(void);
98
99typedef struct cuptic_info *cuptic_info_t;
100
101int cuptic_ctxarr_create(cuptic_info_t *pinfo);
102int cuptic_ctxarr_update_current(cuptic_info_t info);
103int cuptic_ctxarr_get_ctx(cuptic_info_t info, int gpu_idx, CUcontext *ctx);
104int cuptic_ctxarr_destroy(cuptic_info_t *pinfo);
105
106/* Functions to track the occupancy of gpu counters in event sets */
109
110#endif /* __CUPTI_COMMON_H__ */
CUresult(* cuCtxGetDevicePtr)(CUdevice *)
Definition: cupti_common.c:27
void * cuptic_load_dynamic_syms(const char *parent_path, const char *dlname, const char *search_subpaths[])
Definition: cupti_common.c:110
CUresult(* cuGetErrorStringPtr)(CUresult error, const char **pStr)
Definition: cupti_common.c:34
void cuptic_disabled_reason_set(const char *msg)
Definition: cupti_common.c:385
int cuptic_is_runtime_perfworks_api(void)
Definition: cupti_common.c:447
cudaError_t(* cudaFreePtr)(void *)
Definition: cupti_common.c:46
void cuptic_disabled_reason_get(const char **pmsg)
Definition: cupti_common.c:390
CUresult(* cuDeviceGetCountPtr)(int *)
Definition: cupti_common.c:29
CUresult(* cuCtxSetCurrentPtr)(CUcontext)
Definition: cupti_common.c:24
int cuptic_ctxarr_create(cuptic_info_t *pinfo)
Definition: cupti_common.c:520
int cuptic_device_release(cuptiu_event_table_t *evt_table)
Definition: cupti_common.c:644
cudaError_t(* cudaDriverGetVersionPtr)(int *)
Definition: cupti_common.c:47
CUresult(* cuDeviceGetAttributePtr)(int *, CUdevice_attribute, CUdevice)
Definition: cupti_common.c:38
CUresult(* cuDevicePrimaryCtxRetainPtr)(CUcontext *pctx, CUdevice)
Definition: cupti_common.c:31
CUptiResult(* cuptiGetVersionPtr)(uint32_t *)
Definition: cupti_common.c:50
int cuptic_ctxarr_get_ctx(cuptic_info_t info, int gpu_idx, CUcontext *ctx)
Definition: cupti_common.c:566
int cuptic_ctxarr_destroy(cuptic_info_t *pinfo)
Definition: cupti_common.c:572
int cuptic_is_runtime_events_api(void)
Definition: cupti_common.c:488
CUresult(* cuDeviceGetPtr)(CUdevice *, int)
Definition: cupti_common.c:28
CUresult(* cuCtxPopCurrentPtr)(CUcontext *pctx)
Definition: cupti_common.c:35
void * dl_cupti
Definition: cupti_common.c:19
int cuptic_ctxarr_update_current(cuptic_info_t info)
Definition: cupti_common.c:536
int cuptic_device_get_count(int *num_gpus)
Definition: cupti_common.c:303
CUresult(* cuCtxCreatePtr)(CUcontext *pctx, unsigned int flags, CUdevice dev)
Definition: cupti_common.c:26
unsigned int _cuda_lock
Definition: cupti_common.c:21
CUresult(* cuDeviceGetNamePtr)(char *, int, CUdevice)
Definition: cupti_common.c:30
CUresult(* cuCtxDestroyPtr)(CUcontext)
Definition: cupti_common.c:25
cudaError_t(* cudaGetDeviceCountPtr)(int *)
Definition: cupti_common.c:40
cudaError_t(* cudaDeviceGetAttributePtr)(int *value, enum cudaDeviceAttr attr, int device)
Definition: cupti_common.c:45
int cuptic_init(void)
Definition: cupti_common.c:417
const char * linked_cudart_path
Definition: cupti_common.c:18
CUresult(* cuCtxGetCurrentPtr)(CUcontext *)
Definition: cupti_common.c:23
cudaError_t(* cudaGetDevicePropertiesPtr)(struct cudaDeviceProp *prop, int device)
Definition: cupti_common.c:44
CUresult(* cuInitPtr)(unsigned int)
Definition: cupti_common.c:33
cudaError_t(* cudaRuntimeGetVersionPtr)(int *)
Definition: cupti_common.c:48
cudaError_t(* cudaGetDevicePtr)(int *)
Definition: cupti_common.c:41
int cuptic_device_acquire(cuptiu_event_table_t *evt_table)
Definition: cupti_common.c:629
CUresult(* cuCtxSynchronizePtr)()
Definition: cupti_common.c:37
cudaError_t(* cudaSetDevicePtr)(int)
Definition: cupti_common.c:43
CUresult(* cuCtxPushCurrentPtr)(CUcontext pctx)
Definition: cupti_common.c:36
CUresult(* cuDevicePrimaryCtxReleasePtr)(CUdevice)
Definition: cupti_common.c:32
int cuptic_shutdown(void)
Definition: cupti_common.c:280
static int num_gpus
int
Definition: sde_internal.h:89
CUcontext ctx
Definition: cupti_common.c:517