diff --git a/conformance_tests/core/test_copy/src/test_copy.cpp b/conformance_tests/core/test_copy/src/test_copy.cpp index 221d2668..c47551a2 100644 --- a/conformance_tests/core/test_copy/src/test_copy.cpp +++ b/conformance_tests/core/test_copy/src/test_copy.cpp @@ -1140,12 +1140,31 @@ INSTANTIATE_TEST_SUITE_P( class AppendMemoryCopyRegionWithSharedSystem : public ::testing::Test, public ::testing::WithParamInterface< - std::tuple> { + std::tuple> { protected: void RunMemoryCopyRegionTest() { is_immediate = std::get<3>(GetParam()); - cmd_bundle = lzt::create_command_bundle(is_immediate); + use_copy_engine = std::get<4>(GetParam()); + + auto cmd_queue_group_props = get_command_queue_group_properties( + zeDevice::get_instance()->get_device()); + + const ze_command_queue_group_property_flags_t queue_group_flags_set = + use_copy_engine + ? ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY + : (ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE | + ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COOPERATIVE_KERNELS); + const ze_command_queue_group_property_flags_t queue_group_flags_not_set = + use_copy_engine ? ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE : 0; + auto ordinal = + lzt::get_queue_ordinal(cmd_queue_group_props, queue_group_flags_set, + queue_group_flags_not_set); + ASSERT_TRUE(ordinal); + + auto cmd_bundle = lzt::create_command_bundle( + lzt::get_default_context(), zeDevice::get_instance()->get_device(), 0, + *ordinal, is_immediate); // Set up memory buffers for test // Device memory has to be copied in so @@ -1233,6 +1252,7 @@ class AppendMemoryCopyRegionWithSharedSystem size_t columns; size_t slices; bool is_immediate; + bool use_copy_engine; size_t memory_size; }; @@ -1346,6 +1366,7 @@ INSTANTIATE_TEST_SUITE_P(MemoryCopies, AppendMemoryCopyRegionWithSharedSystem, ::testing::Values(8, 64), // Cols ::testing::Values(1, 8, 64), // Slices + ::testing::Bool(), ::testing::Bool())); class zeCommandListAppendMemoryCopyTests : public ::testing::Test { diff --git a/utils/utils/include/utils/utils.hpp b/utils/utils/include/utils/utils.hpp index 9a36d6b8..af7c3451 100644 --- a/utils/utils/include/utils/utils.hpp +++ b/utils/utils/include/utils/utils.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -91,6 +92,12 @@ uint32_t get_device_count(ze_driver_handle_t driver); uint32_t get_driver_handle_count(); uint32_t get_sub_device_count(ze_device_handle_t device); +std::optional +get_queue_ordinal(const std::vector + &cmd_queue_group_props, + ze_command_queue_group_property_flags_t include_flags, + ze_command_queue_group_property_flags_t exclude_flags); + void print_driver_version(); void print_driver_overview(const ze_driver_handle_t driver); void print_driver_overview(const std::vector driver); diff --git a/utils/utils/src/utils.cpp b/utils/utils/src/utils.cpp index c6a314d5..a8f319d4 100644 --- a/utils/utils/src/utils.cpp +++ b/utils/utils/src/utils.cpp @@ -344,6 +344,20 @@ void sort_devices(std::vector &devices) { }); } +std::optional +get_queue_ordinal(const std::vector + &cmd_queue_group_props, + ze_command_queue_group_property_flags_t include_flags, + ze_command_queue_group_property_flags_t exclude_flags) { + for (uint32_t i = 0; i < cmd_queue_group_props.size(); i++) { + if ((cmd_queue_group_props[i].flags & include_flags) == include_flags && + (cmd_queue_group_props[i].flags & exclude_flags) == 0) { + return i; + } + } + return std::nullopt; +} + void print_driver_version(ze_driver_handle_t driver) { ze_driver_properties_t properties = {};