Skip to content

Commit 4928f54

Browse files
Add scenarios using BCS to image SVM tests
- Added new scenarios - Refactored code for choosing queue ordinals Signed-off-by: Misiak, Konstanty <[email protected]>
1 parent ad151ab commit 4928f54

File tree

4 files changed

+180
-69
lines changed

4 files changed

+180
-69
lines changed

conformance_tests/core/test_copy/src/test_copy.cpp

Lines changed: 66 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -26,29 +26,6 @@ using namespace level_zero_tests;
2626

2727
namespace {
2828

29-
void get_copy_and_compute_ordinals(
30-
const std::vector<ze_command_queue_group_properties_t>
31-
&cmd_queue_group_props,
32-
int &compute_ordinal, int &copy_ordinal) {
33-
for (uint32_t i = 0; i < cmd_queue_group_props.size(); i++) {
34-
if (cmd_queue_group_props[i].flags &
35-
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE &&
36-
compute_ordinal < 0) {
37-
compute_ordinal = i;
38-
}
39-
if (cmd_queue_group_props[i].flags &
40-
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY &&
41-
!(cmd_queue_group_props[i].flags &
42-
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE) &&
43-
copy_ordinal < 0) {
44-
copy_ordinal = i;
45-
}
46-
if (compute_ordinal >= 0 && copy_ordinal >= 0) {
47-
break;
48-
}
49-
}
50-
}
51-
5229
class zeCommandListAppendMemoryFillTests : public ::testing::Test {
5330
protected:
5431
void RunMaxMemoryFillTest(bool is_immediate, bool is_shared_system);
@@ -66,15 +43,20 @@ void zeCommandListAppendMemoryFillTests::
6643
auto cmd_queue_group_props = get_command_queue_group_properties(
6744
zeDevice::get_instance()->get_device());
6845

69-
int compute_ordinal = -1, copy_ordinal = -1;
70-
get_copy_and_compute_ordinals(cmd_queue_group_props, compute_ordinal,
71-
copy_ordinal);
72-
ASSERT_TRUE((use_copy_engine && copy_ordinal >= 0) ||
73-
(!use_copy_engine && compute_ordinal >= 0));
46+
auto compute_ordinal = lzt::get_queue_ordinal(
47+
cmd_queue_group_props,
48+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE |
49+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COOPERATIVE_KERNELS,
50+
0);
51+
auto copy_ordinal = lzt::get_queue_ordinal(
52+
cmd_queue_group_props, ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY,
53+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE);
54+
ASSERT_TRUE((use_copy_engine && copy_ordinal) ||
55+
(!use_copy_engine && compute_ordinal));
7456

7557
auto cmd_bundle = lzt::create_command_bundle(
7658
lzt::get_default_context(), zeDevice::get_instance()->get_device(), 0,
77-
use_copy_engine ? copy_ordinal : compute_ordinal, is_immediate);
59+
use_copy_engine ? *copy_ordinal : *compute_ordinal, is_immediate);
7860
const size_t size = 4096;
7961
void *memory = lzt::allocate_device_memory_with_allocator_selector(
8062
size, is_shared_system);
@@ -209,15 +191,20 @@ void zeCommandListAppendMemoryFillTests::
209191
auto cmd_queue_group_props = get_command_queue_group_properties(
210192
zeDevice::get_instance()->get_device());
211193

212-
int compute_ordinal = -1, copy_ordinal = -1;
213-
get_copy_and_compute_ordinals(cmd_queue_group_props, compute_ordinal,
214-
copy_ordinal);
215-
ASSERT_TRUE((use_copy_engine && copy_ordinal >= 0) ||
216-
(!use_copy_engine && compute_ordinal >= 0));
194+
auto compute_ordinal = lzt::get_queue_ordinal(
195+
cmd_queue_group_props,
196+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE |
197+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COOPERATIVE_KERNELS,
198+
0);
199+
auto copy_ordinal = lzt::get_queue_ordinal(
200+
cmd_queue_group_props, ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY,
201+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE);
202+
ASSERT_TRUE((use_copy_engine && copy_ordinal) ||
203+
(!use_copy_engine && compute_ordinal));
217204

218205
auto cmd_bundle = lzt::create_command_bundle(
219206
lzt::get_default_context(), zeDevice::get_instance()->get_device(), 0,
220-
use_copy_engine ? copy_ordinal : compute_ordinal, is_immediate);
207+
use_copy_engine ? *copy_ordinal : *compute_ordinal, is_immediate);
221208
const size_t size = 4096;
222209
void *memory = lzt::allocate_device_memory_with_allocator_selector(
223210
size, is_shared_system);
@@ -304,15 +291,20 @@ void zeCommandListAppendMemoryFillTests::
304291
auto cmd_queue_group_props = get_command_queue_group_properties(
305292
zeDevice::get_instance()->get_device());
306293

307-
int compute_ordinal = -1, copy_ordinal = -1;
308-
get_copy_and_compute_ordinals(cmd_queue_group_props, compute_ordinal,
309-
copy_ordinal);
310-
ASSERT_TRUE((use_copy_engine && copy_ordinal >= 0) ||
311-
(!use_copy_engine && compute_ordinal >= 0));
294+
auto compute_ordinal = lzt::get_queue_ordinal(
295+
cmd_queue_group_props,
296+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE |
297+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COOPERATIVE_KERNELS,
298+
0);
299+
auto copy_ordinal = lzt::get_queue_ordinal(
300+
cmd_queue_group_props, ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY,
301+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE);
302+
ASSERT_TRUE((use_copy_engine && copy_ordinal) ||
303+
(!use_copy_engine && compute_ordinal));
312304

313305
auto cmd_bundle = lzt::create_command_bundle(
314306
lzt::get_default_context(), zeDevice::get_instance()->get_device(), 0,
315-
use_copy_engine ? copy_ordinal : compute_ordinal, is_immediate);
307+
use_copy_engine ? *copy_ordinal : *compute_ordinal, is_immediate);
316308
const size_t size = 4096;
317309
void *memory = lzt::allocate_device_memory_with_allocator_selector(
318310
size, is_shared_system);
@@ -1360,15 +1352,20 @@ void zeCommandListAppendMemoryCopyTests::
13601352
auto cmd_queue_group_props = get_command_queue_group_properties(
13611353
zeDevice::get_instance()->get_device());
13621354

1363-
int compute_ordinal = -1, copy_ordinal = -1;
1364-
get_copy_and_compute_ordinals(cmd_queue_group_props, compute_ordinal,
1365-
copy_ordinal);
1366-
ASSERT_TRUE((use_copy_engine && copy_ordinal >= 0) ||
1367-
(!use_copy_engine && compute_ordinal >= 0));
1355+
auto compute_ordinal = lzt::get_queue_ordinal(
1356+
cmd_queue_group_props,
1357+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE |
1358+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COOPERATIVE_KERNELS,
1359+
0);
1360+
auto copy_ordinal = lzt::get_queue_ordinal(
1361+
cmd_queue_group_props, ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY,
1362+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE);
1363+
ASSERT_TRUE((use_copy_engine && copy_ordinal) ||
1364+
(!use_copy_engine && compute_ordinal));
13681365

13691366
auto cmd_bundle = lzt::create_command_bundle(
13701367
lzt::get_default_context(), zeDevice::get_instance()->get_device(), 0,
1371-
use_copy_engine ? copy_ordinal : compute_ordinal, is_immediate);
1368+
use_copy_engine ? *copy_ordinal : *compute_ordinal, is_immediate);
13721369

13731370
const size_t size = 16;
13741371
const std::vector<char> host_memory(size, 123);
@@ -1442,15 +1439,20 @@ void zeCommandListAppendMemoryCopyTests::
14421439
auto cmd_queue_group_props = get_command_queue_group_properties(
14431440
zeDevice::get_instance()->get_device());
14441441

1445-
int compute_ordinal = -1, copy_ordinal = -1;
1446-
get_copy_and_compute_ordinals(cmd_queue_group_props, compute_ordinal,
1447-
copy_ordinal);
1448-
ASSERT_TRUE((use_copy_engine && copy_ordinal >= 0) ||
1449-
(!use_copy_engine && compute_ordinal >= 0));
1442+
auto compute_ordinal = lzt::get_queue_ordinal(
1443+
cmd_queue_group_props,
1444+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE |
1445+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COOPERATIVE_KERNELS,
1446+
0);
1447+
auto copy_ordinal = lzt::get_queue_ordinal(
1448+
cmd_queue_group_props, ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY,
1449+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE);
1450+
ASSERT_TRUE((use_copy_engine && copy_ordinal) ||
1451+
(!use_copy_engine && compute_ordinal));
14501452

14511453
auto cmd_bundle = lzt::create_command_bundle(
14521454
lzt::get_default_context(), zeDevice::get_instance()->get_device(), 0,
1453-
use_copy_engine ? copy_ordinal : compute_ordinal, is_immediate);
1455+
use_copy_engine ? *copy_ordinal : *compute_ordinal, is_immediate);
14541456

14551457
lzt::zeEventPool ep;
14561458
const size_t size = 16;
@@ -1536,15 +1538,20 @@ void zeCommandListAppendMemoryCopyTests::
15361538
auto cmd_queue_group_props = get_command_queue_group_properties(
15371539
zeDevice::get_instance()->get_device());
15381540

1539-
int compute_ordinal = -1, copy_ordinal = -1;
1540-
get_copy_and_compute_ordinals(cmd_queue_group_props, compute_ordinal,
1541-
copy_ordinal);
1542-
ASSERT_TRUE((use_copy_engine && copy_ordinal >= 0) ||
1543-
(!use_copy_engine && compute_ordinal >= 0));
1541+
auto compute_ordinal = lzt::get_queue_ordinal(
1542+
cmd_queue_group_props,
1543+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE |
1544+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COOPERATIVE_KERNELS,
1545+
0);
1546+
auto copy_ordinal = lzt::get_queue_ordinal(
1547+
cmd_queue_group_props, ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY,
1548+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE);
1549+
ASSERT_TRUE((use_copy_engine && copy_ordinal) ||
1550+
(!use_copy_engine && compute_ordinal));
15441551

15451552
auto cmd_bundle = lzt::create_command_bundle(
15461553
lzt::get_default_context(), zeDevice::get_instance()->get_device(), 0,
1547-
use_copy_engine ? copy_ordinal : compute_ordinal, is_immediate);
1554+
use_copy_engine ? *copy_ordinal : *compute_ordinal, is_immediate);
15481555

15491556
lzt::zeEventPool ep;
15501557
const size_t size = 16;

conformance_tests/core/test_copy/src/test_copy_image.cpp

Lines changed: 92 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,33 @@ using namespace level_zero_tests;
2323

2424
namespace {
2525

26+
/*void get_copy_and_compute_ordinals(
27+
const std::vector<ze_command_queue_group_properties_t>
28+
&cmd_queue_group_props,
29+
int &compute_ordinal, int &copy_ordinal) {
30+
compute_ordinal = -1;
31+
copy_ordinal = -1;
32+
for (uint32_t i = 0; i < cmd_queue_group_props.size(); i++) {
33+
if (cmd_queue_group_props[i].flags &
34+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE &&
35+
cmd_queue_group_props[i].flags &
36+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COOPERATIVE_KERNELS &&
37+
compute_ordinal < 0) {
38+
compute_ordinal = i;
39+
}
40+
if (cmd_queue_group_props[i].flags &
41+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY &&
42+
!(cmd_queue_group_props[i].flags &
43+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE) &&
44+
copy_ordinal < 0) {
45+
copy_ordinal = i;
46+
}
47+
if (compute_ordinal >= 0 && copy_ordinal >= 0) {
48+
break;
49+
}
50+
}
51+
}*/
52+
2653
class zeCommandListAppendImageCopyTests : public ::testing::Test {
2754
public:
2855
zeCommandListAppendImageCopyTests() {
@@ -241,8 +268,25 @@ class zeCommandListAppendImageCopyTests : public ::testing::Test {
241268
void test_image_mem_copy_use_regions(void *source_buff_bot,
242269
void *source_buff_top,
243270
void *dest_buff_bot, void *dest_buff_top,
244-
bool is_immediate) {
245-
auto cmd_bundle = lzt::create_command_bundle(is_immediate);
271+
bool is_immediate,
272+
bool use_copy_engine) {
273+
auto cmd_queue_group_props = get_command_queue_group_properties(
274+
zeDevice::get_instance()->get_device());
275+
276+
auto compute_ordinal = lzt::get_queue_ordinal(
277+
cmd_queue_group_props,
278+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE |
279+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COOPERATIVE_KERNELS,
280+
0);
281+
auto copy_ordinal = lzt::get_queue_ordinal(
282+
cmd_queue_group_props, ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COPY,
283+
ZE_COMMAND_QUEUE_GROUP_PROPERTY_FLAG_COMPUTE);
284+
ASSERT_TRUE((use_copy_engine && copy_ordinal) ||
285+
(!use_copy_engine && compute_ordinal));
286+
287+
auto cmd_bundle = lzt::create_command_bundle(
288+
lzt::get_default_context(), zeDevice::get_instance()->get_device(), 0,
289+
use_copy_engine ? *copy_ordinal : *compute_ordinal, is_immediate);
246290

247291
ze_image_region_t bot_region = {0, 0, 0, image_width, image_height / 2, 1};
248292
ze_image_region_t top_region = {0, image_height / 2, 0,
@@ -510,7 +554,7 @@ LZT_TEST_F(
510554
void *buff_in_bot = lzt::allocate_host_memory(image_size);
511555
void *buff_out_top = lzt::allocate_host_memory(image_size);
512556
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
513-
buff_out_top, false);
557+
buff_out_top, false, false);
514558
lzt::free_memory(buff_in_bot);
515559
lzt::free_memory(buff_in_top);
516560
lzt::free_memory(buff_out_bot);
@@ -528,7 +572,7 @@ LZT_TEST_F(
528572
void *buff_in_bot = lzt::allocate_host_memory(image_size);
529573
void *buff_out_top = lzt::allocate_host_memory(image_size);
530574
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
531-
buff_out_top, true);
575+
buff_out_top, true, false);
532576
lzt::free_memory(buff_in_bot);
533577
lzt::free_memory(buff_in_top);
534578
lzt::free_memory(buff_out_bot);
@@ -572,7 +616,7 @@ LZT_TEST_F(
572616
void *buff_in_bot = lzt::allocate_device_memory(image_size);
573617
void *buff_out_top = lzt::allocate_device_memory(image_size);
574618
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
575-
buff_out_top, false);
619+
buff_out_top, false, false);
576620
lzt::free_memory(buff_in_bot);
577621
lzt::free_memory(buff_in_top);
578622
lzt::free_memory(buff_out_bot);
@@ -590,7 +634,7 @@ LZT_TEST_F(
590634
void *buff_in_bot = lzt::allocate_device_memory(image_size);
591635
void *buff_out_top = lzt::allocate_device_memory(image_size);
592636
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
593-
buff_out_top, true);
637+
buff_out_top, true, false);
594638
lzt::free_memory(buff_in_bot);
595639
lzt::free_memory(buff_in_top);
596640
lzt::free_memory(buff_out_bot);
@@ -634,7 +678,7 @@ LZT_TEST_F(
634678
void *buff_in_bot = lzt::allocate_shared_memory(image_size);
635679
void *buff_out_top = lzt::allocate_shared_memory(image_size);
636680
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
637-
buff_out_top, false);
681+
buff_out_top, false, false);
638682
lzt::free_memory(buff_in_bot);
639683
lzt::free_memory(buff_in_top);
640684
lzt::free_memory(buff_out_bot);
@@ -652,7 +696,7 @@ LZT_TEST_F(
652696
void *buff_in_bot = lzt::allocate_shared_memory(image_size);
653697
void *buff_out_top = lzt::allocate_shared_memory(image_size);
654698
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
655-
buff_out_top, true);
699+
buff_out_top, true, false);
656700
lzt::free_memory(buff_in_bot);
657701
lzt::free_memory(buff_in_top);
658702
lzt::free_memory(buff_out_bot);
@@ -697,7 +741,26 @@ LZT_TEST_F(
697741
void *buff_in_bot = lzt::aligned_malloc(image_size, 1);
698742
void *buff_out_top = lzt::aligned_malloc(image_size, 1);
699743
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
700-
buff_out_top, false);
744+
buff_out_top, false, false);
745+
lzt::aligned_free(buff_in_bot);
746+
lzt::aligned_free(buff_in_top);
747+
lzt::aligned_free(buff_out_bot);
748+
lzt::aligned_free(buff_out_top);
749+
}
750+
751+
LZT_TEST_F(
752+
zeCommandListAppendImageCopyTests,
753+
GivenDeviceImageAndHostImageWhenAppendingImageCopyFromMemoryUsingCopyEngineAndSharedSystemMemoryWithNonNullRegionsThenImageIsCorrectAndSuccessIsReturnedWithSharedSystemAllocator) {
754+
SKIP_IF_SHARED_SYSTEM_ALLOC_UNSUPPORTED();
755+
if (!(lzt::image_support())) {
756+
GTEST_SKIP();
757+
}
758+
void *buff_in_top = lzt::aligned_malloc(image_size, 1);
759+
void *buff_out_bot = lzt::aligned_malloc(image_size, 1);
760+
void *buff_in_bot = lzt::aligned_malloc(image_size, 1);
761+
void *buff_out_top = lzt::aligned_malloc(image_size, 1);
762+
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
763+
buff_out_top, false, true);
701764
lzt::aligned_free(buff_in_bot);
702765
lzt::aligned_free(buff_in_top);
703766
lzt::aligned_free(buff_out_bot);
@@ -716,7 +779,26 @@ LZT_TEST_F(
716779
void *buff_in_bot = lzt::aligned_malloc(image_size, 1);
717780
void *buff_out_top = lzt::aligned_malloc(image_size, 1);
718781
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
719-
buff_out_top, true);
782+
buff_out_top, true, false);
783+
lzt::aligned_free(buff_in_bot);
784+
lzt::aligned_free(buff_in_top);
785+
lzt::aligned_free(buff_out_bot);
786+
lzt::aligned_free(buff_out_top);
787+
}
788+
789+
LZT_TEST_F(
790+
zeCommandListAppendImageCopyTests,
791+
GivenDeviceImageAndHostImageWhenAppendingImageCopyFromMemoryToImmediateCmdListUsingCopyEngineAndSharedSystemMemoryWithNonNullRegionsThenImageIsCorrectAndSuccessIsReturnedWithSharedSystemAllocator) {
792+
SKIP_IF_SHARED_SYSTEM_ALLOC_UNSUPPORTED();
793+
if (!(lzt::image_support())) {
794+
GTEST_SKIP();
795+
}
796+
void *buff_in_top = lzt::aligned_malloc(image_size, 1);
797+
void *buff_out_bot = lzt::aligned_malloc(image_size, 1);
798+
void *buff_in_bot = lzt::aligned_malloc(image_size, 1);
799+
void *buff_out_top = lzt::aligned_malloc(image_size, 1);
800+
test_image_mem_copy_use_regions(buff_in_bot, buff_in_top, buff_out_bot,
801+
buff_out_top, true, true);
720802
lzt::aligned_free(buff_in_bot);
721803
lzt::aligned_free(buff_in_top);
722804
lzt::aligned_free(buff_out_bot);

utils/utils/include/utils/utils.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#include "utils/utils_string.hpp"
2020
#include "utils/utils_gtest_helper.hpp"
2121

22+
#include <boost/core/span.hpp>
23+
2224
namespace level_zero_tests {
2325

2426
zes_driver_handle_t get_default_zes_driver();
@@ -46,6 +48,12 @@ uint32_t get_device_count(ze_driver_handle_t driver);
4648
uint32_t get_driver_handle_count();
4749
uint32_t get_sub_device_count(ze_device_handle_t device);
4850

51+
std::optional<uint32_t>
52+
get_queue_ordinal(boost::span<const ze_command_queue_group_properties_t>
53+
cmd_queue_group_props,
54+
ze_command_queue_group_property_flags_t include_flags,
55+
ze_command_queue_group_property_flags_t exclude_flags);
56+
4957
void print_driver_version();
5058
void print_driver_overview(const ze_driver_handle_t driver);
5159
void print_driver_overview(const std::vector<ze_driver_handle_t> driver);

0 commit comments

Comments
 (0)