@@ -66,6 +66,8 @@ TEST_F(ProfilingTagTest, ProfilingTagSupportedDefaultQueue) {
66
66
" urEnqueueTimestampRecordingExp" , &after_urEnqueueTimestampRecordingExp);
67
67
mock::getCallbacks ().set_after_callback (" urEventGetProfilingInfo" ,
68
68
&after_urEventGetProfilingInfo);
69
+ mock::getCallbacks ().set_after_callback (
70
+ " urEnqueueEventsWaitWithBarrier" , &after_urEnqueueEventsWaitWithBarrier);
69
71
70
72
sycl::context Ctx{sycl::platform ()};
71
73
sycl::queue Queue{Ctx, sycl::default_selector_v};
@@ -75,6 +77,39 @@ TEST_F(ProfilingTagTest, ProfilingTagSupportedDefaultQueue) {
75
77
76
78
sycl::event E = sycl::ext::oneapi::experimental::submit_profiling_tag (Queue);
77
79
ASSERT_EQ (size_t {1 }, counter_urEnqueueTimestampRecordingExp);
80
+ // TODO: We expect two barriers for now, while marker events leak. Adjust when
81
+ // addressed.
82
+ ASSERT_EQ (size_t {2 }, counter_urEnqueueEventsWaitWithBarrier);
83
+
84
+ E.get_profiling_info <sycl::info::event_profiling::command_start>();
85
+ ASSERT_TRUE (LatestProfilingQuery.has_value ());
86
+ ASSERT_EQ (*LatestProfilingQuery, UR_PROFILING_INFO_COMMAND_START);
87
+
88
+ E.get_profiling_info <sycl::info::event_profiling::command_end>();
89
+ ASSERT_TRUE (LatestProfilingQuery.has_value ());
90
+ ASSERT_EQ (*LatestProfilingQuery, UR_PROFILING_INFO_COMMAND_END);
91
+ }
92
+
93
+ TEST_F (ProfilingTagTest, ProfilingTagSupportedInOrderQueue) {
94
+ mock::getCallbacks ().set_after_callback (" urDeviceGetInfo" ,
95
+ &after_urDeviceGetInfo<true >);
96
+ mock::getCallbacks ().set_after_callback (
97
+ " urEnqueueTimestampRecordingExp" , &after_urEnqueueTimestampRecordingExp);
98
+ mock::getCallbacks ().set_after_callback (" urEventGetProfilingInfo" ,
99
+ &after_urEventGetProfilingInfo);
100
+ mock::getCallbacks ().set_after_callback (
101
+ " urEnqueueEventsWaitWithBarrier" , &after_urEnqueueEventsWaitWithBarrier);
102
+
103
+ sycl::context Ctx{sycl::platform ()};
104
+ sycl::queue Queue{
105
+ Ctx, sycl::default_selector_v, {sycl::property::queue::in_order ()}};
106
+ sycl::device Dev = Queue.get_device ();
107
+
108
+ ASSERT_TRUE (Dev.has (sycl::aspect::ext_oneapi_queue_profiling_tag));
109
+
110
+ sycl::event E = sycl::ext::oneapi::experimental::submit_profiling_tag (Queue);
111
+ ASSERT_EQ (size_t {1 }, counter_urEnqueueTimestampRecordingExp);
112
+ ASSERT_EQ (size_t {0 }, counter_urEnqueueEventsWaitWithBarrier);
78
113
79
114
E.get_profiling_info <sycl::info::event_profiling::command_start>();
80
115
ASSERT_TRUE (LatestProfilingQuery.has_value ());
@@ -113,6 +148,38 @@ TEST_F(ProfilingTagTest, ProfilingTagSupportedProfilingQueue) {
113
148
ASSERT_EQ (*LatestProfilingQuery, UR_PROFILING_INFO_COMMAND_END);
114
149
}
115
150
151
+ TEST_F (ProfilingTagTest, ProfilingTagSupportedProfilingInOrderQueue) {
152
+ mock::getCallbacks ().set_after_callback (" urDeviceGetInfo" ,
153
+ &after_urDeviceGetInfo<true >);
154
+ mock::getCallbacks ().set_after_callback (
155
+ " urEnqueueTimestampRecordingExp" , &after_urEnqueueTimestampRecordingExp);
156
+ mock::getCallbacks ().set_after_callback (" urEventGetProfilingInfo" ,
157
+ &after_urEventGetProfilingInfo);
158
+ mock::getCallbacks ().set_after_callback (
159
+ " urEnqueueEventsWaitWithBarrier" , &after_urEnqueueEventsWaitWithBarrier);
160
+
161
+ sycl::context Ctx{sycl::platform ()};
162
+ sycl::queue Queue{Ctx,
163
+ sycl::default_selector_v,
164
+ {sycl::property::queue::enable_profiling (),
165
+ sycl::property::queue::in_order ()}};
166
+ sycl::device Dev = Queue.get_device ();
167
+
168
+ ASSERT_TRUE (Dev.has (sycl::aspect::ext_oneapi_queue_profiling_tag));
169
+
170
+ sycl::event E = sycl::ext::oneapi::experimental::submit_profiling_tag (Queue);
171
+ ASSERT_EQ (size_t {1 }, counter_urEnqueueTimestampRecordingExp);
172
+ ASSERT_EQ (size_t {0 }, counter_urEnqueueEventsWaitWithBarrier);
173
+
174
+ E.get_profiling_info <sycl::info::event_profiling::command_start>();
175
+ ASSERT_TRUE (LatestProfilingQuery.has_value ());
176
+ ASSERT_EQ (*LatestProfilingQuery, UR_PROFILING_INFO_COMMAND_START);
177
+
178
+ E.get_profiling_info <sycl::info::event_profiling::command_end>();
179
+ ASSERT_TRUE (LatestProfilingQuery.has_value ());
180
+ ASSERT_EQ (*LatestProfilingQuery, UR_PROFILING_INFO_COMMAND_END);
181
+ }
182
+
116
183
TEST_F (ProfilingTagTest, ProfilingTagFallbackDefaultQueue) {
117
184
mock::getCallbacks ().set_after_callback (" urDeviceGetInfo" ,
118
185
&after_urDeviceGetInfo<false >);
0 commit comments