Skip to content

Commit 4e02458

Browse files
staniewzkikswiecicki
authored andcommitted
Cleanups & more scenarios
1 parent 5d508fa commit 4e02458

File tree

2 files changed

+112
-77
lines changed

2 files changed

+112
-77
lines changed

test/adapters/level_zero/async_alloc.cpp

-63
This file was deleted.

test/adapters/level_zero/enqueueAlloc.cpp

+112-14
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,129 @@
44
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55

66
#include <uur/fixtures.h>
7+
struct urL0EnqueueAllocTest : uur::urKernelExecutionTest {
8+
void ValidateEnqueueFree(void *ptr, ur_usm_pool_handle_t pool = nullptr) {
9+
ur_event_handle_t freeEvent = nullptr;
10+
ASSERT_NE(ptr, nullptr);
11+
ASSERT_SUCCESS(urEnqueueUSMFreeExp(queue, pool, ptr, 0, nullptr, &freeEvent));
12+
ASSERT_SUCCESS(urQueueFinish(queue));
13+
ASSERT_NE(freeEvent, nullptr);
14+
}
715

8-
using urL0EnqueueAllocTest = uur::urQueueTest;
16+
static constexpr size_t ARRAY_SIZE = 16;
17+
static constexpr uint32_t DATA = 0xC0FFEE;
18+
};
919
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urL0EnqueueAllocTest);
1020

11-
TEST_P(urL0EnqueueAllocTest, SuccessHostAlloc) {
21+
TEST_P(urL0EnqueueAllocTest, SuccessHostDirectAlloc) {
1222
ur_device_usm_access_capability_flags_t hostUSMSupport = 0;
1323
ASSERT_SUCCESS(uur::GetDeviceUSMHostSupport(device, hostUSMSupport));
1424
if (!hostUSMSupport) {
1525
GTEST_SKIP() << "Host USM is not supported.";
1626
}
1727

18-
void *Ptr = nullptr;
19-
size_t allocSize = sizeof(int);
20-
ur_event_handle_t AllocEvent = nullptr;
21-
ASSERT_SUCCESS(urEnqueueUSMHostAllocExp(queue, nullptr, allocSize, nullptr,
22-
0, nullptr, &Ptr, &AllocEvent));
28+
void *ptr = nullptr;
29+
ur_event_handle_t allocEvent = nullptr;
30+
ASSERT_SUCCESS(urEnqueueUSMHostAllocExp(queue, nullptr, sizeof(int), nullptr,
31+
0, nullptr, &ptr, &allocEvent));
2332
ASSERT_SUCCESS(urQueueFinish(queue));
24-
ASSERT_NE(Ptr, nullptr);
25-
ASSERT_NE(AllocEvent, nullptr);
33+
ASSERT_NE(ptr, nullptr);
34+
ASSERT_NE(allocEvent, nullptr);
35+
*(int *)ptr = DATA;
36+
ValidateEnqueueFree(ptr);
37+
}
38+
39+
TEST_P(urL0EnqueueAllocTest, SuccessHostPoolAlloc) {
40+
ur_device_usm_access_capability_flags_t hostUSMSupport = 0;
41+
ASSERT_SUCCESS(uur::GetDeviceUSMHostSupport(device, hostUSMSupport));
42+
if (!hostUSMSupport) {
43+
GTEST_SKIP() << "Host USM is not supported.";
44+
}
2645

27-
*(int *)Ptr = 0xC0FFEE;
46+
ur_usm_pool_handle_t pool = nullptr;
47+
ASSERT_SUCCESS(urUSMPoolCreate(context, nullptr, &pool));
2848

29-
ur_event_handle_t FreeEvent = nullptr;
30-
ASSERT_SUCCESS(
31-
urEnqueueUSMFreeExp(queue, nullptr, Ptr, 0, nullptr, &FreeEvent));
49+
void *ptr = nullptr;
50+
ur_event_handle_t allocEvent = nullptr;
51+
ASSERT_SUCCESS(urEnqueueUSMHostAllocExp(queue, pool, sizeof(uint32_t), nullptr,
52+
0, nullptr, &ptr, &allocEvent));
3253
ASSERT_SUCCESS(urQueueFinish(queue));
33-
ASSERT_NE(FreeEvent, nullptr);
54+
ASSERT_NE(ptr, nullptr);
55+
ASSERT_NE(allocEvent, nullptr);
56+
*static_cast<uint32_t *>(ptr) = DATA;
57+
ValidateEnqueueFree(ptr, pool);
58+
}
59+
60+
TEST_P(urL0EnqueueAllocTest, SuccessDeviceAlloc) {
61+
ur_device_usm_access_capability_flags_t deviceUSMSupport = 0;
62+
ASSERT_SUCCESS(uur::GetDeviceUSMDeviceSupport(device, deviceUSMSupport));
63+
if (!(deviceUSMSupport & UR_DEVICE_USM_ACCESS_CAPABILITY_FLAG_ACCESS)) {
64+
GTEST_SKIP() << "Device USM is not supported.";
65+
}
66+
67+
ur_usm_pool_handle_t pool = nullptr;
68+
urUSMPoolCreate(context, nullptr, &pool);
69+
70+
void *ptr = nullptr;
71+
ur_event_handle_t allocEvent = nullptr;
72+
ASSERT_SUCCESS(urEnqueueUSMDeviceAllocExp(queue, pool, ARRAY_SIZE * sizeof(uint32_t),
73+
nullptr, 0, nullptr, &ptr, &allocEvent));
74+
ASSERT_NE(ptr, nullptr);
75+
ASSERT_NE(allocEvent, nullptr);
76+
ASSERT_SUCCESS(urKernelSetArgPointer(kernel, 0, nullptr, ptr));
77+
ASSERT_SUCCESS(urKernelSetArgValue(kernel, 1, sizeof(DATA), nullptr, &DATA));
78+
Launch1DRange(ARRAY_SIZE);
79+
ValidateEnqueueFree(ptr, pool);
80+
}
81+
82+
TEST_P(urL0EnqueueAllocTest, SuccessDeviceRepeatAlloc) {
83+
ur_device_usm_access_capability_flags_t deviceUSMSupport = 0;
84+
ASSERT_SUCCESS(uur::GetDeviceUSMDeviceSupport(device, deviceUSMSupport));
85+
if (!(deviceUSMSupport & UR_DEVICE_USM_ACCESS_CAPABILITY_FLAG_ACCESS)) {
86+
GTEST_SKIP() << "Device USM is not supported.";
87+
}
88+
89+
ur_usm_pool_handle_t pool = nullptr;
90+
urUSMPoolCreate(context, nullptr, &pool);
91+
92+
void *ptr = nullptr;
93+
ASSERT_SUCCESS(urEnqueueUSMDeviceAllocExp(queue, pool, ARRAY_SIZE * sizeof(uint32_t),
94+
nullptr, 0, nullptr, &ptr, nullptr));
95+
ASSERT_NE(ptr, nullptr);
96+
ASSERT_SUCCESS(urKernelSetArgPointer(kernel, 0, nullptr, ptr));
97+
ASSERT_SUCCESS(urKernelSetArgValue(kernel, 1, sizeof(DATA), nullptr, &DATA));
98+
Launch1DRange(ARRAY_SIZE);
99+
ASSERT_SUCCESS(urEnqueueUSMFreeExp(queue, pool, ptr, 0, nullptr, nullptr));
100+
101+
void *ptr2 = nullptr;
102+
ASSERT_SUCCESS(urEnqueueUSMDeviceAllocExp(queue, pool, ARRAY_SIZE * sizeof(uint32_t),
103+
nullptr, 0, nullptr, &ptr2, nullptr));
104+
ASSERT_NE(ptr, nullptr);
105+
ASSERT_SUCCESS(urKernelSetArgPointer(kernel, 0, nullptr, ptr2));
106+
ASSERT_SUCCESS(urKernelSetArgValue(kernel, 1, sizeof(DATA), nullptr, &DATA));
107+
Launch1DRange(ARRAY_SIZE);
108+
ValidateEnqueueFree(ptr2, pool);
109+
}
110+
111+
TEST_P(urL0EnqueueAllocTest, SuccessSharedAlloc) {
112+
ur_device_usm_access_capability_flags_t sharedUSMSupport = 0;
113+
ASSERT_SUCCESS(
114+
uur::GetDeviceUSMSingleSharedSupport(device, sharedUSMSupport));
115+
if (!(sharedUSMSupport & UR_DEVICE_USM_ACCESS_CAPABILITY_FLAG_ACCESS)) {
116+
GTEST_SKIP() << "Shared USM is not supported.";
117+
}
118+
119+
ur_usm_pool_handle_t pool = nullptr;
120+
urUSMPoolCreate(context, nullptr, &pool);
121+
122+
void *ptr = nullptr;
123+
ur_event_handle_t allocEvent = nullptr;
124+
ASSERT_SUCCESS(urEnqueueUSMSharedAllocExp(queue, pool, ARRAY_SIZE * sizeof(uint32_t),
125+
nullptr, 0, nullptr, &ptr, &allocEvent));
126+
ASSERT_NE(ptr, nullptr);
127+
ASSERT_NE(allocEvent, nullptr);
128+
ASSERT_SUCCESS(urKernelSetArgPointer(kernel, 0, nullptr, ptr));
129+
ASSERT_SUCCESS(urKernelSetArgValue(kernel, 1, sizeof(DATA), nullptr, &DATA));
130+
Launch1DRange(ARRAY_SIZE);
131+
ValidateEnqueueFree(ptr, pool);
34132
}

0 commit comments

Comments
 (0)