9 #ifdef XPTI_ENABLE_INSTRUMENTATION
10 #include <xpti/xpti_data_types.h>
11 #include <xpti/xpti_trace_framework.h>
15 #ifdef XPTI_ENABLE_INSTRUMENTATION
17 #endif // XPTI_ENABLE_INSTRUMENTATION
28 #ifdef XPTI_ENABLE_INSTRUMENTATION
29 static xpti_td *GCallEvent =
nullptr;
30 static xpti_td *GDebugEvent =
nullptr;
31 #endif // XPTI_ENABLE_INSTRUMENTATION
37 #ifdef XPTI_ENABLE_INSTRUMENTATION
38 static void cuptiCallback(
void *userdata, CUpti_CallbackDomain,
39 CUpti_CallbackId CBID,
const void *CBData) {
40 if (xptiTraceEnabled()) {
41 const auto *CBInfo =
static_cast<const CUpti_CallbackData *
>(CBData);
43 if (CBInfo->callbackSite == CUPTI_API_ENTER) {
48 const char *FuncName = CBInfo->functionName;
49 uint32_t FuncID =
static_cast<uint32_t
>(CBID);
50 uint16_t TraceTypeArgs = CBInfo->callbackSite == CUPTI_API_ENTER
51 ? xpti::trace_function_with_args_begin
52 : xpti::trace_function_with_args_end;
53 uint16_t TraceType = CBInfo->callbackSite == CUPTI_API_ENTER
54 ? xpti::trace_function_begin
55 : xpti::trace_function_end;
60 xptiNotifySubscribers(CallStreamID, TraceType, GCallEvent,
nullptr,
63 xpti::function_with_args_t Payload{
64 FuncID, FuncName,
const_cast<void *
>(CBInfo->functionParams),
65 CBInfo->functionReturnValue, CBInfo->context};
66 xptiNotifySubscribers(DebugStreamID, TraceTypeArgs, GDebugEvent,
nullptr,
73 #ifdef XPTI_ENABLE_INSTRUMENTATION
74 if (!xptiTraceEnabled())
83 xpti::payload_t CUDAPayload(
"CUDA Plugin Layer");
85 xptiMakeEvent(
"CUDA Plugin Layer", &CUDAPayload,
86 xpti::trace_algorithm_event, xpti_at::active, &Dummy);
88 xpti::payload_t CUDADebugPayload(
"CUDA Plugin Debug Layer");
90 xptiMakeEvent(
"CUDA Plugin Debug Layer", &CUDADebugPayload,
91 xpti::trace_algorithm_event, xpti_at::active, &Dummy);
93 CUpti_SubscriberHandle Subscriber;
94 cuptiSubscribe(&Subscriber, cuptiCallback,
nullptr);
95 cuptiEnableDomain(1, Subscriber, CUPTI_CB_DOMAIN_DRIVER_API);
96 cuptiEnableCallback(0, Subscriber, CUPTI_CB_DOMAIN_DRIVER_API,
97 CUPTI_DRIVER_TRACE_CBID_cuGetErrorString);
98 cuptiEnableCallback(0, Subscriber, CUPTI_CB_DOMAIN_DRIVER_API,
99 CUPTI_DRIVER_TRACE_CBID_cuGetErrorName);
104 #ifdef XPTI_ENABLE_INSTRUMENTATION
105 if (!xptiTraceEnabled())
110 #endif // XPTI_ENABLE_INSTRUMENTATION