Skip to content

Commit 44cbbef

Browse files
authored
[SYCL][XPTI] Emit XPTI signal when new kernel is submitted (#12123)
`signal` can't be emit if no new dependency is added to the dependency graph, based on current implementation. This PR address this issue.
1 parent 5392ab8 commit 44cbbef

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

sycl/source/detail/scheduler/commands.cpp

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,12 @@ bool CurrentCodeLocationValid() {
6767

6868
void emitInstrumentationGeneral(uint32_t StreamID, uint64_t InstanceID,
6969
xpti_td *TraceEvent, uint16_t Type,
70-
const char *Txt) {
70+
const void *Addr) {
7171
if (!(xptiCheckTraceEnabled(StreamID, Type) && TraceEvent))
7272
return;
7373
// Trace event notifier that emits a Type event
7474
xptiNotifySubscribers(StreamID, Type, detail::GSYCLGraphEvent,
75-
static_cast<xpti_td *>(TraceEvent), InstanceID,
76-
static_cast<const void *>(Txt));
75+
static_cast<xpti_td *>(TraceEvent), InstanceID, Addr);
7776
}
7877
#endif
7978

@@ -788,22 +787,18 @@ Command *Command::addDep(EventImplPtr Event,
788787

789788
void Command::emitEnqueuedEventSignal(sycl::detail::pi::PiEvent &PiEventAddr) {
790789
#ifdef XPTI_ENABLE_INSTRUMENTATION
791-
constexpr uint16_t NotificationTraceType = xpti::trace_signal;
792-
if (!(xptiCheckTraceEnabled(MStreamID, NotificationTraceType) &&
793-
MTraceEvent && PiEventAddr))
794-
return;
795-
// Asynchronous call, so send a signal with the event information as
796-
// user_data
797-
xptiNotifySubscribers(
798-
MStreamID, NotificationTraceType, detail::GSYCLGraphEvent,
799-
static_cast<xpti_td *>(MTraceEvent), MInstanceID, (void *)PiEventAddr);
790+
emitInstrumentationGeneral(
791+
MStreamID, MInstanceID, static_cast<xpti_td *>(MTraceEvent),
792+
xpti::trace_signal, static_cast<const void *>(PiEventAddr));
800793
#endif
794+
std::ignore = PiEventAddr;
801795
}
802796

803797
void Command::emitInstrumentation(uint16_t Type, const char *Txt) {
804798
#ifdef XPTI_ENABLE_INSTRUMENTATION
805-
return emitInstrumentationGeneral(
806-
MStreamID, MInstanceID, static_cast<xpti_td *>(MTraceEvent), Type, Txt);
799+
return emitInstrumentationGeneral(MStreamID, MInstanceID,
800+
static_cast<xpti_td *>(MTraceEvent), Type,
801+
static_cast<const void *>(Txt));
807802
#else
808803
std::ignore = Type;
809804
std::ignore = Txt;

sycl/source/detail/scheduler/commands.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace detail {
3131
bool CurrentCodeLocationValid();
3232
void emitInstrumentationGeneral(uint32_t StreamID, uint64_t InstanceID,
3333
xpti_td *TraceEvent, uint16_t Type,
34-
const char *Txt);
34+
const void *Addr);
3535
#endif
3636

3737
class queue_impl;

sycl/source/handler.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,12 @@ event handler::finalize() {
279279
}
280280
}
281281
#ifdef XPTI_ENABLE_INSTRUMENTATION
282+
// Emit signal only when event is created
283+
if (NewEvent != nullptr) {
284+
detail::emitInstrumentationGeneral(
285+
StreamID, InstanceID, CmdTraceEvent, xpti::trace_signal,
286+
static_cast<const void *>(NewEvent->getHandleRef()));
287+
}
282288
detail::emitInstrumentationGeneral(StreamID, InstanceID, CmdTraceEvent,
283289
xpti::trace_task_end, nullptr);
284290
#endif

0 commit comments

Comments
 (0)