Skip to content

Commit e524922

Browse files
committed
Add tests for L0 provider
1 parent 521d8a0 commit e524922

File tree

1 file changed

+94
-17
lines changed

1 file changed

+94
-17
lines changed

test/providers/provider_level_zero.cpp

Lines changed: 94 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -141,14 +141,9 @@ struct umfLevelZeroProviderTest
141141

142142
auto [l0_params, accessor] = this->GetParam();
143143
params = l0_params;
144-
hDevice = (ze_device_handle_t)params.level_zero_device_handle;
144+
memAccessor = accessor;
145145
hContext = (ze_context_handle_t)params.level_zero_context_handle;
146146

147-
if (params.memory_type == UMF_MEMORY_TYPE_HOST) {
148-
ASSERT_EQ(hDevice, nullptr);
149-
} else {
150-
ASSERT_NE(hDevice, nullptr);
151-
}
152147
ASSERT_NE(hContext, nullptr);
153148

154149
switch (params.memory_type) {
@@ -167,21 +162,14 @@ struct umfLevelZeroProviderTest
167162
}
168163

169164
ASSERT_NE(zeMemoryTypeExpected, ZE_MEMORY_TYPE_UNKNOWN);
170-
171-
memAccessor = accessor;
172165
}
173166

174-
void TearDown() override {
175-
int ret = destroy_context(hContext);
176-
ASSERT_EQ(ret, 0);
177-
test::TearDown();
178-
}
167+
void TearDown() override { test::TearDown(); }
179168

180169
level_zero_memory_provider_params_t params;
181-
ze_device_handle_t hDevice = nullptr;
170+
MemoryAccessor *memAccessor = nullptr;
182171
ze_context_handle_t hContext = nullptr;
183172
ze_memory_type_t zeMemoryTypeExpected = ZE_MEMORY_TYPE_UNKNOWN;
184-
MemoryAccessor *memAccessor = nullptr;
185173
};
186174

187175
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(umfLevelZeroProviderTest);
@@ -222,8 +210,97 @@ TEST_P(umfLevelZeroProviderTest, basic) {
222210
umfMemoryProviderDestroy(provider);
223211
}
224212

225-
// TODO add Level Zero Memory Provider specyfic tests
226-
// TODO add negative test and check for Level Zero native errors
213+
TEST_P(umfLevelZeroProviderTest, getPageSize) {
214+
umf_memory_provider_handle_t provider = nullptr;
215+
umf_result_t umf_result = umfMemoryProviderCreate(
216+
umfLevelZeroMemoryProviderOps(), &params, &provider);
217+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
218+
ASSERT_NE(provider, nullptr);
219+
220+
size_t recommendedPageSize = 0;
221+
umf_result = umfMemoryProviderGetRecommendedPageSize(provider, 0,
222+
&recommendedPageSize);
223+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
224+
ASSERT_GE(recommendedPageSize, 0);
225+
226+
size_t minPageSize = 0;
227+
umf_result =
228+
umfMemoryProviderGetMinPageSize(provider, nullptr, &minPageSize);
229+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
230+
ASSERT_GE(minPageSize, 0);
231+
232+
ASSERT_GE(recommendedPageSize, minPageSize);
233+
234+
umfMemoryProviderDestroy(provider);
235+
}
236+
237+
TEST_P(umfLevelZeroProviderTest, getName) {
238+
umf_memory_provider_handle_t provider = nullptr;
239+
umf_result_t umf_result = umfMemoryProviderCreate(
240+
umfLevelZeroMemoryProviderOps(), &params, &provider);
241+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
242+
ASSERT_NE(provider, nullptr);
243+
244+
const char *name = umfMemoryProviderGetName(provider);
245+
ASSERT_STREQ(name, "LEVEL_ZERO");
246+
247+
umfMemoryProviderDestroy(provider);
248+
}
249+
250+
TEST_P(umfLevelZeroProviderTest, allocInvalidSize) {
251+
umf_memory_provider_handle_t provider = nullptr;
252+
umf_result_t umf_result = umfMemoryProviderCreate(
253+
umfLevelZeroMemoryProviderOps(), &params, &provider);
254+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
255+
ASSERT_NE(provider, nullptr);
256+
257+
// try to alloc (int)-1
258+
void *ptr = nullptr;
259+
umf_result = umfMemoryProviderAlloc(provider, -1, 0, &ptr);
260+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC);
261+
const char *message;
262+
int32_t error;
263+
umfMemoryProviderGetLastNativeError(provider, &message, &error);
264+
ASSERT_EQ(error, ZE_RESULT_ERROR_UNSUPPORTED_SIZE);
265+
266+
// in case of size == 0 we should got INVALID_ARGUMENT error
267+
// NOTE: this is invalid only for the DEVICE or SHARED allocations
268+
if (params.memory_type != UMF_MEMORY_TYPE_HOST) {
269+
umf_result = umfMemoryProviderAlloc(provider, 0, 0, &ptr);
270+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC);
271+
umfMemoryProviderGetLastNativeError(provider, &message, &error);
272+
ASSERT_EQ(error, ZE_RESULT_ERROR_UNSUPPORTED_SIZE);
273+
}
274+
275+
umfMemoryProviderDestroy(provider);
276+
}
277+
278+
TEST_P(umfLevelZeroProviderTest, providerCreateInvalidArgs) {
279+
umf_memory_provider_handle_t provider = nullptr;
280+
umf_result_t umf_result = umfMemoryProviderCreate(
281+
umfLevelZeroMemoryProviderOps(), nullptr, &provider);
282+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
283+
284+
umf_result = umfMemoryProviderCreate(nullptr, &params, nullptr);
285+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
286+
}
287+
288+
TEST_P(umfLevelZeroProviderTest, getPageSizeInvalidArgs) {
289+
umf_memory_provider_handle_t provider = nullptr;
290+
umf_result_t umf_result = umfMemoryProviderCreate(
291+
umfLevelZeroMemoryProviderOps(), &params, &provider);
292+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
293+
ASSERT_NE(provider, nullptr);
294+
295+
umf_result = umfMemoryProviderGetMinPageSize(provider, nullptr, nullptr);
296+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
297+
298+
umf_result = umfMemoryProviderGetRecommendedPageSize(provider, 0, nullptr);
299+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
300+
301+
umfMemoryProviderDestroy(provider);
302+
}
303+
227304
// TODO add tests that mixes Level Zero Memory Provider and Disjoint Pool
228305

229306
level_zero_memory_provider_params_t l0Params_device_memory =

0 commit comments

Comments
 (0)