From 54e2487a77515610f7c8a6edb723b64d5b0c9175 Mon Sep 17 00:00:00 2001 From: John Falkowski Date: Thu, 8 Jan 2026 19:01:38 +0000 Subject: [PATCH 1/6] fix: Add correct tests for shared system USM host user_ptr copy Signed-off-by: John Falkowski --- .../core/test_copy/src/test_copy.cpp | 91 ++++++++++++++++++- 1 file changed, 87 insertions(+), 4 deletions(-) diff --git a/conformance_tests/core/test_copy/src/test_copy.cpp b/conformance_tests/core/test_copy/src/test_copy.cpp index ff97f490..ea4a4e3b 100644 --- a/conformance_tests/core/test_copy/src/test_copy.cpp +++ b/conformance_tests/core/test_copy/src/test_copy.cpp @@ -2574,10 +2574,7 @@ LZT_TEST_P( for (auto driver : lzt::get_all_driver_handles()) { for (auto device : lzt::get_devices(driver)) { - if (!lzt::supports_shared_system_alloc(device)) { - LOG_WARNING << "Device does not support shared system allocation"; - continue; - } + SKIP_IF_SHARED_SYSTEM_ALLOC_UNSUPPORTED(); int *src_memory = nullptr; int *dst_memory = nullptr; @@ -2677,6 +2674,92 @@ void free_aligned(void *ptr) { #endif } +class zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr + : public ::testing::Test, + public ::testing::WithParamInterface< + std::tuple> { +public: + void launchHostUsrPtrAppendMemCopy(ze_device_handle_t device, int *src_memory, + int *dst_memory, size_t size, + bool is_immediate) { + + auto cmd_bundle = lzt::create_command_bundle(device, is_immediate); + const int8_t src_pattern = (rand() & 0x7F); + const int8_t dst_pattern = 0; + + int *expected_data = + static_cast(lzt::allocate_host_memory(size)); + int *verify_data = + static_cast(lzt::allocate_host_memory(size)); + + memset(expected_data, src_pattern, size); + memset(verify_data, dst_pattern, size); + + EXPECT_NE(expected_data, nullptr); + EXPECT_NE(verify_data, nullptr); + + memset(src_memory, src_pattern, size); + memset(dst_memory, dst_pattern, size); + + lzt::append_memory_copy(cmd_bundle.list, static_cast(dst_memory), + static_cast(src_memory), + size); + + lzt::append_barrier(cmd_bundle.list, nullptr, 0, nullptr); + lzt::append_memory_copy(cmd_bundle.list, verify_data, + static_cast(dst_memory), + size); + lzt::append_barrier(cmd_bundle.list, nullptr, 0, nullptr); + lzt::close_command_list(cmd_bundle.list); + lzt::execute_and_sync_command_bundle(cmd_bundle, UINT64_MAX); + + EXPECT_EQ(0, memcmp(expected_data, verify_data, size)); + + lzt::destroy_command_bundle(cmd_bundle); + lzt::free_memory(expected_data); + lzt::free_memory(verify_data); + } +}; + +LZT_TEST_P( + zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr, + GivenSourceAndDestinationSharedSystemUsmWhenAppendingMemoryCopyThenSuccessIsReturnedAndCopyIsCorrect) { + size_t size = std::get<0>(GetParam()); + bool is_immediate = std::get<1>(GetParam()); + + auto context = lzt::get_default_context(); + + for (auto driver : lzt::get_all_driver_handles()) { + for (auto device : lzt::get_devices(driver)) { + + int *src_memory = nullptr; + int *dst_memory = nullptr; + + src_memory = static_cast(malloc (size)); + dst_memory = static_cast(malloc (size)); + + EXPECT_NE(src_memory, nullptr); + EXPECT_NE(dst_memory, nullptr); + + launchHostUsrPtrAppendMemCopy(device, src_memory, dst_memory, size, + is_immediate); + + if (dst_memory) { + free(dst_memory); + } + if (src_memory) { + free(src_memory); + } + } + } +} + +INSTANTIATE_TEST_SUITE_P(ParamAppendMemCopyHostUserPtr, + zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr, + ::testing::Combine(::testing::Values(1, 16, 128, 4096, 65536), + ::testing::Bool())); + + class zeSharedSystemMemoryCopyTests : public ::testing::Test, public ::testing::WithParamInterface< From ad1b116ecba4b149870e5c5a1abd5e5f654fc6ed Mon Sep 17 00:00:00 2001 From: John Falkowski Date: Thu, 8 Jan 2026 19:18:10 +0000 Subject: [PATCH 2/6] fix: Add correct tests for shared system USM host user_ptr copy Signed-off-by: John Falkowski --- .../core/test_copy/src/test_copy.cpp | 47 +++++++++---------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/conformance_tests/core/test_copy/src/test_copy.cpp b/conformance_tests/core/test_copy/src/test_copy.cpp index ea4a4e3b..a4adf6ac 100644 --- a/conformance_tests/core/test_copy/src/test_copy.cpp +++ b/conformance_tests/core/test_copy/src/test_copy.cpp @@ -2676,21 +2676,18 @@ void free_aligned(void *ptr) { class zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr : public ::testing::Test, - public ::testing::WithParamInterface< - std::tuple> { + public ::testing::WithParamInterface> { public: - void launchHostUsrPtrAppendMemCopy(ze_device_handle_t device, int *src_memory, - int *dst_memory, size_t size, - bool is_immediate) { + void launchHostUsrPtrAppendMemCopy(ze_device_handle_t device, char *src_memory, + char *dst_memory, size_t size, + bool is_immediate) { auto cmd_bundle = lzt::create_command_bundle(device, is_immediate); const int8_t src_pattern = (rand() & 0x7F); const int8_t dst_pattern = 0; - int *expected_data = - static_cast(lzt::allocate_host_memory(size)); - int *verify_data = - static_cast(lzt::allocate_host_memory(size)); + int *expected_data = static_cast(lzt::allocate_host_memory(size)); + int *verify_data = static_cast(lzt::allocate_host_memory(size)); memset(expected_data, src_pattern, size); memset(verify_data, dst_pattern, size); @@ -2702,13 +2699,11 @@ class zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr memset(dst_memory, dst_pattern, size); lzt::append_memory_copy(cmd_bundle.list, static_cast(dst_memory), - static_cast(src_memory), - size); + static_cast(src_memory), size); lzt::append_barrier(cmd_bundle.list, nullptr, 0, nullptr); lzt::append_memory_copy(cmd_bundle.list, verify_data, - static_cast(dst_memory), - size); + static_cast(dst_memory), size); lzt::append_barrier(cmd_bundle.list, nullptr, 0, nullptr); lzt::close_command_list(cmd_bundle.list); lzt::execute_and_sync_command_bundle(cmd_bundle, UINT64_MAX); @@ -2724,7 +2719,7 @@ class zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr LZT_TEST_P( zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr, GivenSourceAndDestinationSharedSystemUsmWhenAppendingMemoryCopyThenSuccessIsReturnedAndCopyIsCorrect) { - size_t size = std::get<0>(GetParam()); + size_t size = std::get<0>(GetParam()); bool is_immediate = std::get<1>(GetParam()); auto context = lzt::get_default_context(); @@ -2732,33 +2727,33 @@ LZT_TEST_P( for (auto driver : lzt::get_all_driver_handles()) { for (auto device : lzt::get_devices(driver)) { - int *src_memory = nullptr; - int *dst_memory = nullptr; + char *src_memory = nullptr; + char *dst_memory = nullptr; - src_memory = static_cast(malloc (size)); - dst_memory = static_cast(malloc (size)); + src_memory = static_cast(malloc (size)); + dst_memory = static_cast(malloc (size)); EXPECT_NE(src_memory, nullptr); EXPECT_NE(dst_memory, nullptr); launchHostUsrPtrAppendMemCopy(device, src_memory, dst_memory, size, - is_immediate); + is_immediate); if (dst_memory) { - free(dst_memory); + free(dst_memory); } if (src_memory) { - free(src_memory); + free(src_memory); } } } } -INSTANTIATE_TEST_SUITE_P(ParamAppendMemCopyHostUserPtr, - zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr, - ::testing::Combine(::testing::Values(1, 16, 128, 4096, 65536), - ::testing::Bool())); - +INSTANTIATE_TEST_SUITE_P( + ParamAppendMemCopyHostUserPtr, + zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr, + ::testing::Combine(::testing::Values(1, 16, 128, 4096, 65536), + ::testing::Bool())); class zeSharedSystemMemoryCopyTests : public ::testing::Test, From 47b79e4c583129f01983c978c152b2e91800f8a1 Mon Sep 17 00:00:00 2001 From: John Falkowski Date: Thu, 8 Jan 2026 19:24:51 +0000 Subject: [PATCH 3/6] fix: Add correct tests for shared system USM host user_ptr copy Signed-off-by: John Falkowski --- conformance_tests/core/test_copy/src/test_copy.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/conformance_tests/core/test_copy/src/test_copy.cpp b/conformance_tests/core/test_copy/src/test_copy.cpp index a4adf6ac..ff30be06 100644 --- a/conformance_tests/core/test_copy/src/test_copy.cpp +++ b/conformance_tests/core/test_copy/src/test_copy.cpp @@ -2678,9 +2678,9 @@ class zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr : public ::testing::Test, public ::testing::WithParamInterface> { public: - void launchHostUsrPtrAppendMemCopy(ze_device_handle_t device, char *src_memory, - char *dst_memory, size_t size, - bool is_immediate) { + void launchHostUsrPtrAppendMemCopy(ze_device_handle_t device, + char *src_memory, char *dst_memory, + size_t size, bool is_immediate) { auto cmd_bundle = lzt::create_command_bundle(device, is_immediate); const int8_t src_pattern = (rand() & 0x7F); @@ -2727,11 +2727,11 @@ LZT_TEST_P( for (auto driver : lzt::get_all_driver_handles()) { for (auto device : lzt::get_devices(driver)) { - char *src_memory = nullptr; - char *dst_memory = nullptr; + char *src_memory = nullptr; + char *dst_memory = nullptr; - src_memory = static_cast(malloc (size)); - dst_memory = static_cast(malloc (size)); + src_memory = static_cast(malloc (size)); + dst_memory = static_cast(malloc (size)); EXPECT_NE(src_memory, nullptr); EXPECT_NE(dst_memory, nullptr); From ee9edf85f2fc94e3fbcebca7a81e84e4f79dcb77 Mon Sep 17 00:00:00 2001 From: John Falkowski Date: Thu, 8 Jan 2026 19:27:56 +0000 Subject: [PATCH 4/6] fix: Add correct tests for shared system USM host user_ptr copy Signed-off-by: John Falkowski --- conformance_tests/core/test_copy/src/test_copy.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conformance_tests/core/test_copy/src/test_copy.cpp b/conformance_tests/core/test_copy/src/test_copy.cpp index ff30be06..a5a24bf7 100644 --- a/conformance_tests/core/test_copy/src/test_copy.cpp +++ b/conformance_tests/core/test_copy/src/test_copy.cpp @@ -2730,8 +2730,8 @@ LZT_TEST_P( char *src_memory = nullptr; char *dst_memory = nullptr; - src_memory = static_cast(malloc (size)); - dst_memory = static_cast(malloc (size)); + src_memory = static_cast(malloc(size)); + dst_memory = static_cast(malloc(size)); EXPECT_NE(src_memory, nullptr); EXPECT_NE(dst_memory, nullptr); From 6805476a04a65445412d9e287895467ab90d89c0 Mon Sep 17 00:00:00 2001 From: John Falkowski Date: Fri, 9 Jan 2026 00:14:39 +0000 Subject: [PATCH 5/6] fix: Add correct tests for shared system USM host user_ptr copy Signed-off-by: John Falkowski --- .../core/test_copy/src/test_copy.cpp | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/conformance_tests/core/test_copy/src/test_copy.cpp b/conformance_tests/core/test_copy/src/test_copy.cpp index a5a24bf7..4ee96f80 100644 --- a/conformance_tests/core/test_copy/src/test_copy.cpp +++ b/conformance_tests/core/test_copy/src/test_copy.cpp @@ -2571,10 +2571,23 @@ LZT_TEST_P( auto context = lzt::get_default_context(); const size_t size = 16; - + + std::vector device_svm; + uint32_t svm_count = 0; for (auto driver : lzt::get_all_driver_handles()) { for (auto device : lzt::get_devices(driver)) { - SKIP_IF_SHARED_SYSTEM_ALLOC_UNSUPPORTED(); + if(lzt::supports_shared_system_alloc(device)) { + device_svm.push_back(device); + svm_count++; + } + } + } + + if (!svm_count) { + GTEST_SKIP() << "No devices on any driver support shared system allocation"; + } + else { + for (auto device : device_svm) { int *src_memory = nullptr; int *dst_memory = nullptr; @@ -2683,11 +2696,11 @@ class zeCommandListAppendMemoryCopySharedSystemUsmHostUserPtr size_t size, bool is_immediate) { auto cmd_bundle = lzt::create_command_bundle(device, is_immediate); - const int8_t src_pattern = (rand() & 0x7F); + const int8_t src_pattern = 0x55; const int8_t dst_pattern = 0; - int *expected_data = static_cast(lzt::allocate_host_memory(size)); - int *verify_data = static_cast(lzt::allocate_host_memory(size)); + char *expected_data = static_cast(lzt::allocate_host_memory(size)); + char *verify_data = static_cast(lzt::allocate_host_memory(size)); memset(expected_data, src_pattern, size); memset(verify_data, dst_pattern, size); @@ -2730,8 +2743,10 @@ LZT_TEST_P( char *src_memory = nullptr; char *dst_memory = nullptr; - src_memory = static_cast(malloc(size)); - dst_memory = static_cast(malloc(size)); + src_memory = static_cast(lzt::allocate_device_memory_with_allocator_selector( + size, true)); + dst_memory = static_cast(lzt::allocate_device_memory_with_allocator_selector( + size, true)); EXPECT_NE(src_memory, nullptr); EXPECT_NE(dst_memory, nullptr); @@ -2740,10 +2755,10 @@ LZT_TEST_P( is_immediate); if (dst_memory) { - free(dst_memory); + lzt::free_memory_with_allocator_selector(dst_memory, true); } if (src_memory) { - free(src_memory); + lzt::free_memory_with_allocator_selector(src_memory, true); } } } From f2dc875ecd296a5411bb5368189c7a0df29719df Mon Sep 17 00:00:00 2001 From: John Falkowski Date: Fri, 9 Jan 2026 00:21:07 +0000 Subject: [PATCH 6/6] fix: Add correct tests for shared system USM host user_ptr copy Signed-off-by: John Falkowski --- .../core/test_copy/src/test_copy.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/conformance_tests/core/test_copy/src/test_copy.cpp b/conformance_tests/core/test_copy/src/test_copy.cpp index 4ee96f80..cf158816 100644 --- a/conformance_tests/core/test_copy/src/test_copy.cpp +++ b/conformance_tests/core/test_copy/src/test_copy.cpp @@ -2571,12 +2571,12 @@ LZT_TEST_P( auto context = lzt::get_default_context(); const size_t size = 16; - + std::vector device_svm; uint32_t svm_count = 0; for (auto driver : lzt::get_all_driver_handles()) { for (auto device : lzt::get_devices(driver)) { - if(lzt::supports_shared_system_alloc(device)) { + if (lzt::supports_shared_system_alloc(device)) { device_svm.push_back(device); svm_count++; } @@ -2584,9 +2584,8 @@ LZT_TEST_P( } if (!svm_count) { - GTEST_SKIP() << "No devices on any driver support shared system allocation"; - } - else { + GTEST_SKIP() << "No devices on any driver support shared system allocation"; + } else { for (auto device : device_svm) { int *src_memory = nullptr; int *dst_memory = nullptr; @@ -2743,10 +2742,10 @@ LZT_TEST_P( char *src_memory = nullptr; char *dst_memory = nullptr; - src_memory = static_cast(lzt::allocate_device_memory_with_allocator_selector( - size, true)); - dst_memory = static_cast(lzt::allocate_device_memory_with_allocator_selector( - size, true)); + src_memory = static_cast( + lzt::allocate_device_memory_with_allocator_selector(size, true)); + dst_memory = static_cast( + lzt::allocate_device_memory_with_allocator_selector(size, true)); EXPECT_NE(src_memory, nullptr); EXPECT_NE(dst_memory, nullptr);