12 #ifdef XPTI_ENABLE_INSTRUMENTATION
13 #include "xpti/xpti_trace_framework.hpp"
19 #ifdef XPTI_ENABLE_INSTRUMENTATION
20 xpti::trace_event_data_t *XPTIRegistry::createTraceEvent(
21 const void *Obj,
const void *FuncPtr, uint64_t &IId,
22 const detail::code_location &CodeLoc, uint16_t TraceEventType) {
23 xpti::utils::StringHelper NG;
24 auto Name = NG.nameWithAddress<
void *>(CodeLoc.functionName(),
25 const_cast<void *
>(FuncPtr));
26 xpti::payload_t Payload(Name.c_str(),
27 (CodeLoc.fileName() ? CodeLoc.fileName() :
""),
28 CodeLoc.lineNumber(), CodeLoc.columnNumber(), Obj);
33 return xptiMakeEvent(Name.c_str(), &Payload, TraceEventType, xpti_at::active,
36 #endif // XPTI_ENABLE_INSTRUMENTATION
38 void XPTIRegistry::bufferConstructorNotification(
40 const void *HostObj,
const void *Type, uint32_t Dim, uint32_t ElemSize,
49 #ifdef XPTI_ENABLE_INSTRUMENTATION
50 GlobalHandler::instance().getXPTIRegistry().initializeFrameworkOnce();
51 if (!xptiTraceEnabled())
55 xpti::offload_buffer_data_t BufConstr{(uintptr_t)UserObj,
60 {Range[0], Range[1], Range[2]}};
62 xpti::trace_event_data_t *TraceEvent = createTraceEvent(
63 UserObj,
"buffer", IId, CodeLoc, xpti::trace_offload_buffer_event);
64 xptiNotifySubscribers(GBufferStreamID, xpti::trace_offload_alloc_construct,
65 nullptr, TraceEvent, IId, &BufConstr);
69 void XPTIRegistry::bufferAssociateNotification(
const void *UserObj,
73 #ifdef XPTI_ENABLE_INSTRUMENTATION
74 if (!xptiTraceEnabled())
76 uint64_t IId = xptiGetUniqueId();
77 xpti::offload_buffer_association_data_t BufAssoc{(uintptr_t)UserObj,
81 xptiNotifySubscribers(GBufferStreamID, xpti::trace_offload_alloc_associate,
82 nullptr,
nullptr, IId, &BufAssoc);
86 void XPTIRegistry::bufferReleaseNotification(
const void *UserObj,
90 #ifdef XPTI_ENABLE_INSTRUMENTATION
91 if (!xptiTraceEnabled())
93 uint64_t IId = xptiGetUniqueId();
94 xpti::offload_buffer_association_data_t BufRelease{(uintptr_t)UserObj,
98 xptiNotifySubscribers(GBufferStreamID, xpti::trace_offload_alloc_release,
99 nullptr,
nullptr, IId, &BufRelease);
103 void XPTIRegistry::bufferDestructorNotification(
const void *UserObj) {
105 #ifdef XPTI_ENABLE_INSTRUMENTATION
106 if (!xptiTraceEnabled())
108 uint64_t IId = xptiGetUniqueId();
109 xpti::offload_buffer_data_t BufDestr{(uintptr_t)UserObj};
111 xptiNotifySubscribers(GBufferStreamID, xpti::trace_offload_alloc_destruct,
112 nullptr,
nullptr, IId, &BufDestr);
116 void XPTIRegistry::bufferAccessorNotification(
117 const void *UserObj,
const void *AccessorObj, uint32_t Target,
124 #ifdef XPTI_ENABLE_INSTRUMENTATION
125 if (!xptiTraceEnabled())
129 xpti::offload_accessor_data_t AccessorConstr{
130 (uintptr_t)UserObj, (uintptr_t)AccessorObj, Target, Mode};
132 xpti::trace_event_data_t *TraceEvent = createTraceEvent(
133 UserObj,
"accessor", IId, CodeLoc, xpti::trace_offload_accessor_event);
134 xptiNotifySubscribers(GBufferStreamID, xpti::trace_offload_alloc_accessor,
135 nullptr, TraceEvent, IId, &AccessorConstr);