Skip to content

Commit a563456

Browse files
authored
Merge pull request #2390 from pbalcer/low-power-events-tests
add tests for low-power events extension
2 parents 2651b05 + b0c5596 commit a563456

File tree

7 files changed

+83
-21
lines changed

7 files changed

+83
-21
lines changed

source/adapters/cuda/ur_interface_loader.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueProcAddrTable(
174174
pDdiTable->pfnDeviceGlobalVariableWrite = urEnqueueDeviceGlobalVariableWrite;
175175
pDdiTable->pfnEventsWait = urEnqueueEventsWait;
176176
pDdiTable->pfnEventsWaitWithBarrier = urEnqueueEventsWaitWithBarrier;
177+
pDdiTable->pfnEventsWaitWithBarrierExt = urEnqueueEventsWaitWithBarrierExt;
177178
pDdiTable->pfnKernelLaunch = urEnqueueKernelLaunch;
178179
pDdiTable->pfnMemBufferCopy = urEnqueueMemBufferCopy;
179180
pDdiTable->pfnMemBufferCopyRect = urEnqueueMemBufferCopyRect;

source/adapters/hip/ur_interface_loader.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueProcAddrTable(
174174
pDdiTable->pfnDeviceGlobalVariableWrite = urEnqueueDeviceGlobalVariableWrite;
175175
pDdiTable->pfnEventsWait = urEnqueueEventsWait;
176176
pDdiTable->pfnEventsWaitWithBarrier = urEnqueueEventsWaitWithBarrier;
177+
pDdiTable->pfnEventsWaitWithBarrierExt = urEnqueueEventsWaitWithBarrierExt;
177178
pDdiTable->pfnKernelLaunch = urEnqueueKernelLaunch;
178179
pDdiTable->pfnMemBufferCopy = urEnqueueMemBufferCopy;
179180
pDdiTable->pfnMemBufferCopyRect = urEnqueueMemBufferCopyRect;

source/adapters/native_cpu/ur_interface_loader.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueProcAddrTable(
172172
pDdiTable->pfnDeviceGlobalVariableWrite = urEnqueueDeviceGlobalVariableWrite;
173173
pDdiTable->pfnEventsWait = urEnqueueEventsWait;
174174
pDdiTable->pfnEventsWaitWithBarrier = urEnqueueEventsWaitWithBarrier;
175+
pDdiTable->pfnEventsWaitWithBarrierExt = urEnqueueEventsWaitWithBarrierExt;
175176
pDdiTable->pfnKernelLaunch = urEnqueueKernelLaunch;
176177
pDdiTable->pfnMemBufferCopy = urEnqueueMemBufferCopy;
177178
pDdiTable->pfnMemBufferCopyRect = urEnqueueMemBufferCopyRect;

source/adapters/opencl/ur_interface_loader.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueProcAddrTable(
174174
pDdiTable->pfnDeviceGlobalVariableWrite = urEnqueueDeviceGlobalVariableWrite;
175175
pDdiTable->pfnEventsWait = urEnqueueEventsWait;
176176
pDdiTable->pfnEventsWaitWithBarrier = urEnqueueEventsWaitWithBarrier;
177+
pDdiTable->pfnEventsWaitWithBarrierExt = urEnqueueEventsWaitWithBarrierExt;
177178
pDdiTable->pfnKernelLaunch = urEnqueueKernelLaunch;
178179
pDdiTable->pfnMemBufferCopy = urEnqueueMemBufferCopy;
179180
pDdiTable->pfnMemBufferCopyRect = urEnqueueMemBufferCopyRect;

test/conformance/enqueue/urEnqueueEventsWaitWithBarrier.cpp

Lines changed: 54 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,30 @@
44
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55
#include <uur/fixtures.h>
66

7-
struct urEnqueueEventsWaitWithBarrierTest : uur::urMultiQueueTest {
7+
enum class BarrierType {
8+
Normal,
9+
ExtLowPower,
10+
};
11+
12+
std::ostream &operator<<(std::ostream &os, BarrierType barrierType) {
13+
switch (barrierType) {
14+
case BarrierType::Normal:
15+
os << "Normal";
16+
break;
17+
case BarrierType::ExtLowPower:
18+
os << "ExtLowPower";
19+
break;
20+
default:
21+
os << "Unknown";
22+
break;
23+
}
24+
return os;
25+
}
26+
27+
struct urEnqueueEventsWaitWithBarrierTest
28+
: uur::urMultiQueueTestWithParam<BarrierType> {
829
void SetUp() override {
9-
UUR_RETURN_ON_FATAL_FAILURE(urMultiQueueTest::SetUp());
30+
UUR_RETURN_ON_FATAL_FAILURE(urMultiQueueTestWithParam::SetUp());
1031
ASSERT_SUCCESS(urMemBufferCreate(context, UR_MEM_FLAG_WRITE_ONLY, size,
1132
nullptr, &src_buffer));
1233
ASSERT_SUCCESS(urMemBufferCreate(context, UR_MEM_FLAG_READ_ONLY, size,
@@ -24,7 +45,23 @@ struct urEnqueueEventsWaitWithBarrierTest : uur::urMultiQueueTest {
2445
if (dst_buffer) {
2546
EXPECT_SUCCESS(urMemRelease(dst_buffer));
2647
}
27-
urMultiQueueTest::TearDown();
48+
urMultiQueueTestWithParam::TearDown();
49+
}
50+
51+
ur_result_t EnqueueBarrier(ur_queue_handle_t queue, uint32_t num_events,
52+
const ur_event_handle_t *event_list,
53+
ur_event_handle_t *wait_event) {
54+
BarrierType barrier = getParam();
55+
if (barrier == BarrierType::ExtLowPower) {
56+
struct ur_exp_enqueue_ext_properties_t props = {
57+
UR_STRUCTURE_TYPE_EXP_ENQUEUE_EXT_PROPERTIES, nullptr,
58+
UR_EXP_ENQUEUE_EXT_FLAG_LOW_POWER_EVENTS};
59+
return urEnqueueEventsWaitWithBarrierExt(queue, &props, num_events,
60+
event_list, wait_event);
61+
}
62+
63+
return urEnqueueEventsWaitWithBarrier(queue, num_events, event_list,
64+
wait_event);
2865
}
2966

3067
const size_t count = 1024;
@@ -34,7 +71,10 @@ struct urEnqueueEventsWaitWithBarrierTest : uur::urMultiQueueTest {
3471
std::vector<uint32_t> input;
3572
};
3673

37-
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urEnqueueEventsWaitWithBarrierTest);
74+
UUR_TEST_SUITE_P(urEnqueueEventsWaitWithBarrierTest,
75+
::testing::Values(BarrierType::Normal,
76+
BarrierType::ExtLowPower),
77+
uur::deviceTestWithParamPrinter<BarrierType>);
3878

3979
struct urEnqueueEventsWaitWithBarrierOrderingTest : uur::urProgramTest {
4080
void SetUp() override {
@@ -67,8 +107,7 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, Success) {
67107
ur_event_handle_t waitEvent = nullptr;
68108
ASSERT_SUCCESS(urEnqueueMemBufferCopy(queue1, src_buffer, dst_buffer, 0, 0,
69109
size, 0, nullptr, &event1));
70-
EXPECT_SUCCESS(
71-
urEnqueueEventsWaitWithBarrier(queue2, 1, &event1, &waitEvent));
110+
EXPECT_SUCCESS(EnqueueBarrier(queue2, 1, &event1, &waitEvent));
72111
EXPECT_SUCCESS(urQueueFlush(queue2));
73112
EXPECT_SUCCESS(urQueueFlush(queue1));
74113
EXPECT_SUCCESS(urEventWait(1, &waitEvent));
@@ -86,8 +125,7 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, Success) {
86125
input.data(), 0, nullptr, nullptr));
87126
EXPECT_SUCCESS(urEnqueueMemBufferCopy(queue2, src_buffer, dst_buffer, 0, 0,
88127
size, 0, nullptr, &event2));
89-
EXPECT_SUCCESS(
90-
urEnqueueEventsWaitWithBarrier(queue1, 1, &event2, &waitEvent));
128+
EXPECT_SUCCESS(EnqueueBarrier(queue1, 1, &event2, &waitEvent));
91129
EXPECT_SUCCESS(urQueueFlush(queue2));
92130
EXPECT_SUCCESS(urQueueFlush(queue1));
93131
EXPECT_SUCCESS(urEventWait(1, &waitEvent));
@@ -99,27 +137,23 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, Success) {
99137
}
100138

101139
TEST_P(urEnqueueEventsWaitWithBarrierTest, InvalidNullHandleQueue) {
102-
ASSERT_EQ_RESULT(
103-
UR_RESULT_ERROR_INVALID_NULL_HANDLE,
104-
urEnqueueEventsWaitWithBarrier(nullptr, 0, nullptr, nullptr));
140+
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_NULL_HANDLE,
141+
EnqueueBarrier(nullptr, 0, nullptr, nullptr));
105142
}
106143

107144
TEST_P(urEnqueueEventsWaitWithBarrierTest, InvalidNullPtrEventWaitList) {
108-
ASSERT_EQ_RESULT(
109-
urEnqueueEventsWaitWithBarrier(queue1, 1, nullptr, nullptr),
110-
UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
145+
ASSERT_EQ_RESULT(EnqueueBarrier(queue1, 1, nullptr, nullptr),
146+
UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
111147

112148
ur_event_handle_t validEvent;
113149
ASSERT_SUCCESS(urEnqueueEventsWait(queue1, 0, nullptr, &validEvent));
114150

115-
ASSERT_EQ_RESULT(
116-
urEnqueueEventsWaitWithBarrier(queue1, 0, &validEvent, nullptr),
117-
UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
151+
ASSERT_EQ_RESULT(EnqueueBarrier(queue1, 0, &validEvent, nullptr),
152+
UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
118153

119154
ur_event_handle_t inv_evt = nullptr;
120-
ASSERT_EQ_RESULT(
121-
urEnqueueEventsWaitWithBarrier(queue1, 1, &inv_evt, nullptr),
122-
UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
155+
ASSERT_EQ_RESULT(EnqueueBarrier(queue1, 1, &inv_evt, nullptr),
156+
UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
123157

124158
ASSERT_SUCCESS(urEventRelease(validEvent));
125159
}

test/conformance/queue/urQueueCreate.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM Exceptions.
33
// See LICENSE.TXT
44
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5+
#include "ur_api.h"
56
#include "uur/raii.h"
67
#include <uur/fixtures.h>
78

@@ -34,7 +35,8 @@ UUR_TEST_SUITE_P(urQueueCreateWithParamTest,
3435
UR_QUEUE_FLAG_SUBMISSION_BATCHED,
3536
UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE,
3637
UR_QUEUE_FLAG_USE_DEFAULT_STREAM,
37-
UR_QUEUE_FLAG_SYNC_WITH_DEFAULT_STREAM),
38+
UR_QUEUE_FLAG_SYNC_WITH_DEFAULT_STREAM,
39+
UR_QUEUE_FLAG_LOW_POWER_EVENTS_EXP),
3840
uur::deviceTestWithParamPrinter<ur_queue_flag_t>);
3941

4042
TEST_P(urQueueCreateWithParamTest, SuccessWithProperties) {

test/conformance/testing/include/uur/fixtures.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,28 @@ struct urMultiQueueTest : urContextTest {
519519
ur_queue_handle_t queue2 = nullptr;
520520
};
521521

522+
template <class T>
523+
struct urMultiQueueTestWithParam : urContextTestWithParam<T> {
524+
void SetUp() override {
525+
UUR_RETURN_ON_FATAL_FAILURE(urContextTestWithParam<T>::SetUp());
526+
ASSERT_SUCCESS(urQueueCreate(this->context, this->device, 0, &queue1));
527+
ASSERT_SUCCESS(urQueueCreate(this->context, this->device, 0, &queue2));
528+
}
529+
530+
void TearDown() override {
531+
if (queue1 != nullptr) {
532+
EXPECT_SUCCESS(urQueueRelease(queue1));
533+
}
534+
if (queue2 != nullptr) {
535+
EXPECT_SUCCESS(urQueueRelease(queue2));
536+
}
537+
UUR_RETURN_ON_FATAL_FAILURE(urContextTestWithParam<T>::TearDown());
538+
}
539+
540+
ur_queue_handle_t queue1 = nullptr;
541+
ur_queue_handle_t queue2 = nullptr;
542+
};
543+
522544
template <size_t MinDevices = 2>
523545
struct urMultiDeviceContextTestTemplate : urPlatformTest {
524546
void SetUp() override {

0 commit comments

Comments
 (0)