99#include " SchedulerTest.hpp"
1010#include " SchedulerTestUtils.hpp"
1111
12+ #include < helpers/CommandSubmitWrappers.hpp>
1213#include < helpers/TestKernel.hpp>
1314#include < helpers/UrMock.hpp>
1415#include < sycl/usm.hpp>
@@ -44,7 +45,7 @@ ur_result_t redefinedEnqueueMemUnmap(void *pParams) {
4445 return UR_RESULT_SUCCESS;
4546}
4647
47- TEST_F (SchedulerTest, InOrderQueueDeps) {
48+ TEST_P (SchedulerTest, InOrderQueueDeps) {
4849 sycl::unittest::UrMock<> Mock;
4950 sycl::platform Plt = sycl::platform ();
5051 mock::getCallbacks ().set_before_callback (" urEnqueueMemBufferReadRect" ,
@@ -95,15 +96,12 @@ ur_result_t redefinedEnqueueEventsWaitWithBarrierExt(void *pParams) {
9596 return UR_RESULT_SUCCESS;
9697}
9798
98- sycl::event submitKernel (sycl::queue &Q) {
99- return Q.submit ([&](handler &cgh) { cgh.single_task <TestKernel>([]() {}); });
100- }
101-
102- TEST_F (SchedulerTest, InOrderQueueIsolatedDeps) {
99+ TEST_P (SchedulerTest, InOrderQueueIsolatedDeps) {
103100 // Check that isolated kernels (i.e. those that don't modify the graph)
104101 // are handled properly during filtering.
105102 sycl::unittest::UrMock<> Mock;
106103 sycl::platform Plt = sycl::platform ();
104+ bool UseShortcutFunction = GetParam ();
107105 mock::getCallbacks ().set_before_callback (
108106 " urEnqueueEventsWaitWithBarrierExt" ,
109107 &redefinedEnqueueEventsWaitWithBarrierExt);
@@ -112,14 +110,17 @@ TEST_F(SchedulerTest, InOrderQueueIsolatedDeps) {
112110 context Ctx{Plt.get_devices ()[0 ]};
113111 queue Q1{Ctx, default_selector_v, property::queue::in_order ()};
114112 {
115- event E = submitKernel (Q1);
113+ event E = sycl::unittest::single_task_wrapper<TestKernel>(
114+ UseShortcutFunction, Q1, []() {});
116115 Q1.ext_oneapi_submit_barrier ({E});
117116 EXPECT_FALSE (BarrierCalled);
118117 }
119118 queue Q2{Ctx, default_selector_v, property::queue::in_order ()};
120119 {
121- event E1 = submitKernel (Q1);
122- event E2 = submitKernel (Q2);
120+ event E1 = sycl::unittest::single_task_wrapper<TestKernel>(
121+ UseShortcutFunction, Q1, []() {});
122+ event E2 = sycl::unittest::single_task_wrapper<TestKernel>(
123+ UseShortcutFunction, Q2, []() {});
123124 ExpectedEvent = detail::getSyclObjImpl (E2 )->getHandle ();
124125 Q1.ext_oneapi_submit_barrier ({E1 , E2 });
125126 EXPECT_TRUE (BarrierCalled);
@@ -134,9 +135,10 @@ inline ur_result_t customEnqueueKernelLaunch(void *pParams) {
134135 return UR_RESULT_SUCCESS;
135136}
136137
137- TEST_F (SchedulerTest, TwoInOrderQueuesOnSameContext) {
138+ TEST_P (SchedulerTest, TwoInOrderQueuesOnSameContext) {
138139 KernelEventListSize.clear ();
139140 sycl::unittest::UrMock<> Mock;
141+ bool UseShortcutFunction = GetParam ();
140142 mock::getCallbacks ().set_before_callback (" urEnqueueKernelLaunch" ,
141143 &customEnqueueKernelLaunch);
142144
@@ -147,12 +149,10 @@ TEST_F(SchedulerTest, TwoInOrderQueuesOnSameContext) {
147149 queue InOrderQueueSecond{Ctx, default_selector_v,
148150 property::queue::in_order ()};
149151
150- event EvFirst = InOrderQueueFirst.submit (
151- [&](sycl::handler &CGH) { CGH.single_task <TestKernel>([] {}); });
152- std::ignore = InOrderQueueSecond.submit ([&](sycl::handler &CGH) {
153- CGH.depends_on (EvFirst);
154- CGH.single_task <TestKernel>([] {});
155- });
152+ event EvFirst = sycl::unittest::single_task_wrapper<TestKernel>(
153+ UseShortcutFunction, InOrderQueueFirst, []() {});
154+ std::ignore = sycl::unittest::single_task_wrapper<TestKernel>(
155+ UseShortcutFunction, InOrderQueueSecond, EvFirst, []() {});
156156
157157 InOrderQueueFirst.wait ();
158158 InOrderQueueSecond.wait ();
@@ -162,9 +162,10 @@ TEST_F(SchedulerTest, TwoInOrderQueuesOnSameContext) {
162162 EXPECT_EQ (KernelEventListSize[1 ] /* EventsCount*/ , 1u );
163163}
164164
165- TEST_F (SchedulerTest, InOrderQueueNoSchedulerPath) {
165+ TEST_P (SchedulerTest, InOrderQueueNoSchedulerPath) {
166166 KernelEventListSize.clear ();
167167 sycl::unittest::UrMock<> Mock;
168+ bool UseShortcutFunction = GetParam ();
168169 mock::getCallbacks ().set_before_callback (" urEnqueueKernelLaunch" ,
169170 &customEnqueueKernelLaunch);
170171
@@ -173,12 +174,10 @@ TEST_F(SchedulerTest, InOrderQueueNoSchedulerPath) {
173174 context Ctx{Plt};
174175 queue InOrderQueue{Ctx, default_selector_v, property::queue::in_order ()};
175176
176- event EvFirst = InOrderQueue.submit (
177- [&](sycl::handler &CGH) { CGH.single_task <TestKernel>([] {}); });
178- std::ignore = InOrderQueue.submit ([&](sycl::handler &CGH) {
179- CGH.depends_on (EvFirst);
180- CGH.single_task <TestKernel>([] {});
181- });
177+ event EvFirst = sycl::unittest::single_task_wrapper<TestKernel>(
178+ UseShortcutFunction, InOrderQueue, []() {});
179+ std::ignore = sycl::unittest::single_task_wrapper<TestKernel>(
180+ UseShortcutFunction, InOrderQueue, EvFirst, []() {});
182181
183182 InOrderQueue.wait ();
184183
@@ -190,3 +189,9 @@ TEST_F(SchedulerTest, InOrderQueueNoSchedulerPath) {
190189}
191190
192191} // anonymous namespace
192+
193+ INSTANTIATE_TEST_SUITE_P (
194+ SchedulerTestInstance, SchedulerTest,
195+ testing::Values (
196+ true ,
197+ false )); /* Whether to use the shortcut command submission function */
0 commit comments