Skip to content

Commit 1e4274b

Browse files
committed
[UR][L0v2] Parameterize urL0EnqueueAllocMultiQueueSameDeviceTest over all queue types
Enable the urL0EnqueueAllocMultiQueueSameDeviceTest and parameterize it over all queue submission modes (UR_QUEUE_FLAG_SUBMISSION_BATCHED and UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE) by: - Removing SKIP_IF_BATCHED_QUEUE to enable the test for batched queues. - Changing the base class template parameter from EnqueueAllocMultiQueueTestParam to uur::MultiQueueParam<EnqueueAllocMultiQueueTestParam> so that the queue mode becomes part of the test parameter. - Adding getTestParam() and getQueueFlag() helpers to the fixture for clean access to the two parts of the parameter tuple. - Creating queues with the parameterized flag via ur_queue_properties_t instead of a hardcoded UR_QUEUE_FLAG_SUBMISSION_BATCHED. - Switching the test suite macro from UUR_DEVICE_TEST_SUITE_WITH_PARAM to UUR_MULTI_QUEUE_TYPE_TEST_SUITE_WITH_PARAM and the printer to deviceTestWithParamPrinterMulti, which expands the suite to cover both queue modes automatically. - Updating all three test bodies (SuccessMt, SuccessReuse, SuccessDependantMt) to use getTestParam() instead of std::get<1>(this->GetParam()), and restoring the numQueues parameter in SuccessMt to getTestParam().numQueues. This ensures both batched and immediate queues are covered by default test runs without requiring UR_L0_V2_FORCE_BATCHED=1. Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
1 parent 4a71be8 commit 1e4274b

1 file changed

Lines changed: 34 additions & 22 deletions

File tree

unified-runtime/test/adapters/level_zero/enqueue_alloc.cpp

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,18 @@ std::ostream &operator<<(std::ostream &os,
7373
}
7474

7575
struct urL0EnqueueAllocMultiQueueSameDeviceTest
76-
: uur::urContextTestWithParam<EnqueueAllocMultiQueueTestParam> {
76+
: uur::urContextTestWithParam<
77+
uur::MultiQueueParam<EnqueueAllocMultiQueueTestParam>> {
7778
void SetUp() override {
7879
UUR_RETURN_ON_FATAL_FAILURE(urContextTestWithParam::SetUp());
79-
auto param = std::get<1>(this->GetParam());
80+
const auto &param = getParam();
8081

82+
ur_queue_properties_t props = {UR_STRUCTURE_TYPE_QUEUE_PROPERTIES, nullptr,
83+
getQueueFlag()};
8184
queues.reserve(param.numQueues);
8285
for (size_t i = 0; i < param.numQueues; i++) {
8386
ur_queue_handle_t queue = nullptr;
84-
ASSERT_SUCCESS(urQueueCreate(context, device, 0, &queue));
85-
SKIP_IF_BATCHED_QUEUE(queue);
87+
ASSERT_SUCCESS(urQueueCreate(context, device, &props, &queue));
8688
queues.push_back(queue);
8789
}
8890
}
@@ -95,6 +97,20 @@ struct urL0EnqueueAllocMultiQueueSameDeviceTest
9597
UUR_RETURN_ON_FATAL_FAILURE(urContextTestWithParam::TearDown());
9698
}
9799

100+
const uur::MultiQueueParam<EnqueueAllocMultiQueueTestParam> &
101+
getParamTuple() const {
102+
return urContextTestWithParam<
103+
uur::MultiQueueParam<EnqueueAllocMultiQueueTestParam>>::getParam();
104+
}
105+
106+
const EnqueueAllocMultiQueueTestParam &getParam() const {
107+
return std::get<0>(this->getParamTuple());
108+
}
109+
110+
ur_queue_flag_t getQueueFlag() const {
111+
return std::get<1>(this->getParamTuple());
112+
}
113+
98114
std::vector<ur_queue_handle_t> queues;
99115
};
100116

@@ -322,7 +338,7 @@ TEST_P(urL0EnqueueAllocTest, SuccessWithKernelRepeat) {
322338
ValidateEnqueueFree(ptr2);
323339
}
324340

325-
UUR_DEVICE_TEST_SUITE_WITH_PARAM(
341+
UUR_MULTI_QUEUE_TYPE_TEST_SUITE_WITH_PARAM(
326342
urL0EnqueueAllocMultiQueueSameDeviceTest,
327343
::testing::ValuesIn({
328344
EnqueueAllocMultiQueueTestParam{1024, 256, 8, urEnqueueUSMHostAllocExp,
@@ -334,20 +350,16 @@ UUR_DEVICE_TEST_SUITE_WITH_PARAM(
334350
urEnqueueUSMDeviceAllocExp,
335351
uur::GetDeviceUSMDeviceSupport},
336352
}),
337-
uur::deviceTestWithParamPrinter<EnqueueAllocMultiQueueTestParam>);
353+
uur::deviceTestWithParamPrinterMulti<EnqueueAllocMultiQueueTestParam>);
338354

339355
TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessMt) {
340-
const size_t allocSize = std::get<1>(this->GetParam()).allocSize;
341-
const size_t numQueues = std::get<1>(this->GetParam()).numQueues;
342-
const size_t iterations = std::get<1>(this->GetParam()).iterations;
356+
const size_t allocSize = getParam().allocSize;
357+
const size_t numQueues = getParam().numQueues;
358+
const size_t iterations = getParam().iterations;
343359
const auto enqueueUSMAllocFunc =
344-
std::get<1>(this->GetParam()).funcParams.enqueueUSMAllocFunc;
360+
getParam().funcParams.enqueueUSMAllocFunc;
345361
const auto checkUSMSupportFunc =
346-
std::get<1>(this->GetParam()).funcParams.checkUSMSupportFunc;
347-
348-
if (numQueues > 0) {
349-
SKIP_IF_BATCHED_QUEUE(queues[0]);
350-
}
362+
getParam().funcParams.checkUSMSupportFunc;
351363

352364
ur_device_usm_access_capability_flags_t USMSupport = 0;
353365
ASSERT_SUCCESS(checkUSMSupportFunc(device, USMSupport));
@@ -394,11 +406,11 @@ TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessMt) {
394406
TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessReuse) {
395407
GTEST_SKIP() << "Multi queue reuse is not supported.";
396408

397-
const size_t allocSize = std::get<1>(this->GetParam()).allocSize;
409+
const size_t allocSize = getParam().allocSize;
398410
const auto enqueueUSMAllocFunc =
399-
std::get<1>(this->GetParam()).funcParams.enqueueUSMAllocFunc;
411+
getParam().funcParams.enqueueUSMAllocFunc;
400412
const auto checkUSMSupportFunc =
401-
std::get<1>(this->GetParam()).funcParams.checkUSMSupportFunc;
413+
getParam().funcParams.checkUSMSupportFunc;
402414

403415
ur_device_usm_access_capability_flags_t USMSupport = 0;
404416
ASSERT_SUCCESS(checkUSMSupportFunc(device, USMSupport));
@@ -457,12 +469,12 @@ TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessReuse) {
457469
}
458470

459471
TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessDependantMt) {
460-
const size_t allocSize = std::get<1>(this->GetParam()).allocSize;
461-
const size_t iterations = std::get<1>(this->GetParam()).iterations;
472+
const size_t allocSize = getParam().allocSize;
473+
const size_t iterations = getParam().iterations;
462474
const auto enqueueUSMAllocFunc =
463-
std::get<1>(this->GetParam()).funcParams.enqueueUSMAllocFunc;
475+
getParam().funcParams.enqueueUSMAllocFunc;
464476
const auto checkUSMSupportFunc =
465-
std::get<1>(this->GetParam()).funcParams.checkUSMSupportFunc;
477+
getParam().funcParams.checkUSMSupportFunc;
466478

467479
ur_device_usm_access_capability_flags_t USMSupport = 0;
468480
ASSERT_SUCCESS(checkUSMSupportFunc(device, USMSupport));

0 commit comments

Comments
 (0)