Skip to content

Commit e18c691

Browse files
Merge pull request #1666 from igchor/fix_l0_test
Fix level zero specific test
2 parents 3fca424 + 54a2173 commit e18c691

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

test/adapters/level_zero/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ if(NOT UR_DPCXX)
77
# Tests that require kernels can't be used if we aren't generating
88
# device binaries
99
message(WARNING
10-
"UR_DPCXX is not defined, skipping adapter tests for level_zero")
10+
"UR_DPCXX is not defined, skipping some adapter tests for level_zero")
1111
else()
1212
add_adapter_test(level_zero
1313
FIXTURE KERNELS
@@ -39,14 +39,14 @@ else()
3939
generate_device_binaries kernel_names_header)
4040
endif()
4141

42-
if(LINUX)
42+
if(NOT WIN32)
4343
# Make L0 use CallMap from a seprate shared lib so that we can access the map
4444
# from the tests. This only seems to work on linux
4545
add_library(zeCallMap SHARED zeCallMap.cpp)
4646
target_compile_definitions(ur_adapter_level_zero PRIVATE UR_L0_CALL_COUNT_IN_TESTS)
4747
target_link_libraries(ur_adapter_level_zero PRIVATE zeCallMap)
4848

49-
add_adapter_test(level_zero
49+
add_adapter_test(level_zero_ze_calls
5050
FIXTURE DEVICES
5151
SOURCES
5252
event_cache_tests.cpp
@@ -55,5 +55,5 @@ if(LINUX)
5555
"UR_L0_LEAKS_DEBUG=1"
5656
)
5757

58-
target_link_libraries(test-adapter-level_zero PRIVATE zeCallMap)
58+
target_link_libraries(test-adapter-level_zero_ze_calls PRIVATE zeCallMap)
5959
endif()

test/adapters/level_zero/event_cache_tests.cpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ extern std::map<std::string, int> *ZeCallCount;
1919
using FlagsTupleType = std::tuple<ur_queue_flags_t, ur_queue_flags_t,
2020
ur_queue_flags_t, ur_queue_flags_t>;
2121

22+
// TODO: get rid of this, this is a workaround for fails on older driver
23+
// where for some reason continuing the test leads to a segfault
24+
#define UUR_ASSERT_SUCCESS_OR_EXIT_IF_UNSUPPORTED(ret) \
25+
auto status = ret; \
26+
if (status == UR_RESULT_ERROR_UNSUPPORTED_FEATURE) { \
27+
exit(0); \
28+
} else { \
29+
ASSERT_EQ(status, UR_RESULT_SUCCESS); \
30+
}
31+
2232
struct urEventCacheTest : uur::urContextTestWithParam<FlagsTupleType> {
2333
void SetUp() override {
2434
UUR_RETURN_ON_FATAL_FAILURE(urContextTestWithParam::SetUp());
@@ -42,20 +52,20 @@ struct urEventCacheTest : uur::urContextTestWithParam<FlagsTupleType> {
4252
EXPECT_SUCCESS(urMemRelease(buffer));
4353
}
4454
if (queue) {
45-
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urQueueRelease(queue));
55+
UUR_ASSERT_SUCCESS_OR_EXIT_IF_UNSUPPORTED(urQueueRelease(queue));
4656
}
4757
UUR_RETURN_ON_FATAL_FAILURE(urContextTestWithParam::TearDown());
4858
}
4959

5060
auto enqueueWork(ur_event_handle_t *hEvent, int data) {
5161
input.assign(count, data);
52-
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urEnqueueMemBufferWrite(
62+
UUR_ASSERT_SUCCESS_OR_EXIT_IF_UNSUPPORTED(urEnqueueMemBufferWrite(
5363
queue, buffer, false, 0, size, input.data(), 0, nullptr, hEvent));
5464
}
5565

5666
void verifyData() {
5767
std::vector<uint32_t> output(count, 1);
58-
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urEnqueueMemBufferRead(
68+
UUR_ASSERT_SUCCESS_OR_EXIT_IF_UNSUPPORTED(urEnqueueMemBufferRead(
5969
queue, buffer, true, 0, size, output.data(), 0, nullptr, nullptr));
6070

6171
if (!(flags & UR_QUEUE_FLAG_OUT_OF_ORDER_EXEC_MODE_ENABLE)) {
@@ -79,7 +89,7 @@ TEST_P(urEventCacheTest, eventsReuseNoVisibleEvent) {
7989
for (int j = 0; j < numEnqueues; j++) {
8090
enqueueWork(nullptr, i * numEnqueues + j);
8191
}
82-
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urQueueFinish(queue));
92+
UUR_ASSERT_SUCCESS_OR_EXIT_IF_UNSUPPORTED(urQueueFinish(queue));
8393
verifyData();
8494
}
8595

@@ -101,7 +111,7 @@ TEST_P(urEventCacheTest, eventsReuseWithVisibleEvent) {
101111
for (int j = 0; j < numEnqueues; j++) {
102112
enqueueWork(events[j].ptr(), i * numEnqueues + j);
103113
}
104-
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urQueueFinish(queue));
114+
UUR_ASSERT_SUCCESS_OR_EXIT_IF_UNSUPPORTED(urQueueFinish(queue));
105115
verifyData();
106116
}
107117

@@ -126,7 +136,7 @@ TEST_P(urEventCacheTest, eventsReuseWithVisibleEventAndWait) {
126136
events.clear();
127137
}
128138
}
129-
UUR_ASSERT_SUCCESS_OR_UNSUPPORTED(urQueueFinish(queue));
139+
UUR_ASSERT_SUCCESS_OR_EXIT_IF_UNSUPPORTED(urQueueFinish(queue));
130140
}
131141

132142
ASSERT_GE((*ZeCallCount)["zeEventCreate"], waitEveryN);

0 commit comments

Comments
 (0)