Skip to content

Commit 2dedcee

Browse files
authored
[SYCL][NFC] Barrier unit tests - extend to queue shortcuts (#20260)
Extend the queue/Barrier unit tests to the single task queue shortcut function.
1 parent dfc06dd commit 2dedcee

File tree

2 files changed

+41
-18
lines changed

2 files changed

+41
-18
lines changed

sycl/unittests/helpers/CommandSubmitWrappers.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
#include <sycl/event.hpp>
1212
#include <sycl/handler.hpp>
13+
#include <sycl/queue.hpp>
1314

1415
namespace sycl {
1516

sycl/unittests/queue/Barrier.cpp

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <helpers/CommandSubmitWrappers.hpp>
910
#include <helpers/TestKernel.hpp>
1011
#include <helpers/UrMock.hpp>
1112
#include <sycl/sycl.hpp>
@@ -15,6 +16,8 @@
1516
static unsigned NumOfEventsWaitWithBarrierCalls = 0;
1617
static unsigned NumEventsInWaitList = 0;
1718

19+
class Queue : public testing::TestWithParam<bool> {};
20+
1821
static ur_result_t redefined_urEnqueueEventsWaitWithBarrierExt(void *pParams) {
1922
NumOfEventsWaitWithBarrierCalls++;
2023
// Get the number of events in the wait list
@@ -25,92 +28,111 @@ static ur_result_t redefined_urEnqueueEventsWaitWithBarrierExt(void *pParams) {
2528
return UR_RESULT_SUCCESS;
2629
}
2730

28-
TEST(Queue, HandlerBarrier) {
31+
TEST_P(Queue, HandlerBarrier) {
2932
sycl::unittest::UrMock<> Mock;
3033
mock::getCallbacks().set_before_callback(
3134
"urEnqueueEventsWaitWithBarrierExt",
3235
&redefined_urEnqueueEventsWaitWithBarrierExt);
3336
NumOfEventsWaitWithBarrierCalls = 0;
37+
bool UseShortcutFunction = GetParam();
3438

3539
sycl::queue Q;
3640

37-
Q.submit([&](sycl::handler &cgh) { cgh.single_task<TestKernel>([=]() {}); });
38-
Q.submit([&](sycl::handler &cgh) { cgh.single_task<TestKernel>([=]() {}); });
41+
sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q,
42+
[=]() {});
43+
sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q,
44+
[=]() {});
3945

4046
Q.submit([&](sycl::handler &cgh) { cgh.ext_oneapi_barrier(); });
4147

4248
ASSERT_EQ(NumOfEventsWaitWithBarrierCalls, 1u);
4349
}
4450

45-
TEST(Queue, ExtOneAPISubmitBarrier) {
51+
TEST_P(Queue, ExtOneAPISubmitBarrier) {
4652
sycl::unittest::UrMock<> Mock;
4753
mock::getCallbacks().set_before_callback(
4854
"urEnqueueEventsWaitWithBarrierExt",
4955
&redefined_urEnqueueEventsWaitWithBarrierExt);
5056
NumOfEventsWaitWithBarrierCalls = 0;
57+
bool UseShortcutFunction = GetParam();
5158

5259
sycl::queue Q;
5360

54-
Q.submit([&](sycl::handler &cgh) { cgh.single_task<TestKernel>([=]() {}); });
55-
Q.submit([&](sycl::handler &cgh) { cgh.single_task<TestKernel>([=]() {}); });
61+
sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q,
62+
[=]() {});
63+
sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q,
64+
[=]() {});
5665

5766
Q.ext_oneapi_submit_barrier();
5867

5968
ASSERT_EQ(NumOfEventsWaitWithBarrierCalls, 1u);
6069
}
6170

62-
TEST(Queue, HandlerBarrierWithWaitList) {
71+
TEST_P(Queue, HandlerBarrierWithWaitList) {
6372
sycl::unittest::UrMock<> Mock;
6473
mock::getCallbacks().set_before_callback(
6574
"urEnqueueEventsWaitWithBarrierExt",
6675
&redefined_urEnqueueEventsWaitWithBarrierExt);
6776
NumOfEventsWaitWithBarrierCalls = 0;
77+
bool UseShortcutFunction = GetParam();
6878

6979
sycl::queue Q1;
7080
sycl::queue Q2;
7181
sycl::queue Q3;
7282

73-
auto E1 = Q1.submit(
74-
[&](sycl::handler &cgh) { cgh.single_task<TestKernel>([=]() {}); });
75-
auto E2 = Q2.submit(
76-
[&](sycl::handler &cgh) { cgh.single_task<TestKernel>([=]() {}); });
83+
auto E1 = sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction,
84+
Q1, [=]() {});
85+
auto E2 = sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction,
86+
Q2, [=]() {});
7787

7888
Q3.submit([&](sycl::handler &cgh) { cgh.ext_oneapi_barrier({E1, E2}); });
7989

8090
ASSERT_EQ(NumOfEventsWaitWithBarrierCalls, 1u);
8191
}
8292

83-
TEST(Queue, ExtOneAPISubmitBarrierWithWaitList) {
93+
TEST_P(Queue, ExtOneAPISubmitBarrierWithWaitList) {
8494
sycl::unittest::UrMock<> Mock;
8595
mock::getCallbacks().set_before_callback(
8696
"urEnqueueEventsWaitWithBarrierExt",
8797
&redefined_urEnqueueEventsWaitWithBarrierExt);
8898
NumOfEventsWaitWithBarrierCalls = 0;
99+
bool UseShortcutFunction = GetParam();
89100

90101
sycl::queue Q1;
91102
sycl::queue Q2;
92103
sycl::queue Q3;
93104

94-
auto E1 = Q1.submit(
95-
[&](sycl::handler &cgh) { cgh.single_task<TestKernel>([=]() {}); });
96-
auto E2 = Q2.submit(
97-
[&](sycl::handler &cgh) { cgh.single_task<TestKernel>([=]() {}); });
105+
auto E1 = sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction,
106+
Q1, [=]() {});
107+
auto E2 = sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction,
108+
Q2, [=]() {});
98109

99110
Q3.ext_oneapi_submit_barrier({E1, E2});
100111

101112
ASSERT_EQ(NumOfEventsWaitWithBarrierCalls, 1u);
102113
}
103114

104-
TEST(Queue, BarrierWithBarrierDep) {
115+
TEST_P(Queue, BarrierWithBarrierDep) {
105116
sycl::unittest::UrMock<> Mock;
106117
mock::getCallbacks().set_before_callback(
107118
"urEnqueueEventsWaitWithBarrierExt",
108119
&redefined_urEnqueueEventsWaitWithBarrierExt);
120+
bool UseShortcutFunction = GetParam();
121+
109122
sycl::queue Q1(sycl::property::queue::in_order{});
110123
sycl::queue Q2(sycl::property::queue::in_order{});
111-
Q1.submit([&](sycl::handler &cgh) { cgh.single_task<TestKernel>([=]() {}); });
124+
125+
sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q1,
126+
[=]() {});
127+
112128
sycl::event Barrier1 = Q1.ext_oneapi_submit_barrier();
113129
NumEventsInWaitList = 0;
114130
Q2.ext_oneapi_submit_barrier({Barrier1});
115131
ASSERT_EQ(NumEventsInWaitList, 1u);
116132
}
133+
134+
INSTANTIATE_TEST_SUITE_P(
135+
QueueTestInstance, Queue,
136+
testing::Values(
137+
true,
138+
false)); /* Whether to use the shortcut command submission function */

0 commit comments

Comments
 (0)