13 #include <unordered_set>
17 #ifdef XPTI_ENABLE_INSTRUMENTATION
20 #include "xpti/xpti_trace_framework.h"
35 "sycl.experimental.mem_alloc";
37 #ifdef XPTI_ENABLE_INSTRUMENTATION
38 extern uint8_t GBufferStreamID;
39 extern uint8_t GMemAllocStreamID;
40 extern xpti::trace_event_data_t *GMemAllocEvent;
45 "sycl.experimental.buffer";
50 #ifdef XPTI_ENABLE_INSTRUMENTATION
51 std::call_once(MInitialized, [
this] {
52 xptiFrameworkInitialize();
60 xpti::payload_t MAPayload(
"SYCL Memory Allocations Layer");
61 uint64_t MAInstanceNo = 0;
62 GMemAllocEvent = xptiMakeEvent(
"SYCL Memory Allocations", &MAPayload,
63 xpti::trace_algorithm_event,
64 xpti_at::active, &MAInstanceNo);
76 uint32_t MinVer,
const std::string &VerStr) {
77 #ifdef XPTI_ENABLE_INSTRUMENTATION
78 MActiveStreams.insert(StreamName);
79 xptiInitialize(StreamName.c_str(), MajVer, MinVer, VerStr.c_str());
80 #endif // XPTI_ENABLE_INSTRUMENTATION
84 #ifdef XPTI_ENABLE_INSTRUMENTATION
85 for (
const auto &StreamName : MActiveStreams) {
86 xptiFinalize(StreamName.c_str());
88 xptiFrameworkFinalize();
89 #endif // XPTI_ENABLE_INSTRUMENTATION
92 static void bufferConstructorNotification(
const void *,
94 const void *,
const void *,
95 uint32_t, uint32_t,
size_t[3]);
96 static void bufferAssociateNotification(
const void *,
const void *);
97 static void bufferReleaseNotification(
const void *,
const void *);
98 static void bufferDestructorNotification(
const void *);
99 static void bufferAccessorNotification(
const void *,
const void *, uint32_t,
104 std::unordered_set<std::string> MActiveStreams;
105 std::once_flag MInitialized;
107 #ifdef XPTI_ENABLE_INSTRUMENTATION
108 static xpti::trace_event_data_t *
109 createTraceEvent(
const void *Obj,
const void *ObjName, uint64_t &IId,
111 uint16_t TraceEventType);
112 #endif // XPTI_ENABLE_INSTRUMENTATION