Skip to content

Commit 6d299f3

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 getParamTuple(), getParam() and getQueueFlag() helpers to the fixture, mirroring the naming convention of urMultiQueueTypeTestWithParam, for clean access to the two parts of the parameter tuple. getParamTuple() calls the base class getter using the fully qualified name uur::urContextTestWithParam<...>::getParam() to avoid ambiguity. - 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 getParam() instead of std::get<1>(this->GetParam()), and restoring the numQueues parameter in SuccessMt to getParam().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 cbd9450 commit 6d299f3

1 file changed

Lines changed: 34 additions & 28 deletions

File tree

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

Lines changed: 34 additions & 28 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 uur::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,14 @@ 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;
343-
const auto enqueueUSMAllocFunc =
344-
std::get<1>(this->GetParam()).funcParams.enqueueUSMAllocFunc;
345-
const auto checkUSMSupportFunc =
346-
std::get<1>(this->GetParam()).funcParams.checkUSMSupportFunc;
347-
348-
if (numQueues > 0) {
349-
SKIP_IF_BATCHED_QUEUE(queues[0]);
350-
}
356+
const size_t allocSize = getParam().allocSize;
357+
const size_t numQueues = getParam().numQueues;
358+
const size_t iterations = getParam().iterations;
359+
const auto enqueueUSMAllocFunc = getParam().funcParams.enqueueUSMAllocFunc;
360+
const auto checkUSMSupportFunc = getParam().funcParams.checkUSMSupportFunc;
351361

352362
ur_device_usm_access_capability_flags_t USMSupport = 0;
353363
ASSERT_SUCCESS(checkUSMSupportFunc(device, USMSupport));
@@ -394,11 +404,9 @@ TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessMt) {
394404
TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessReuse) {
395405
GTEST_SKIP() << "Multi queue reuse is not supported.";
396406

397-
const size_t allocSize = std::get<1>(this->GetParam()).allocSize;
398-
const auto enqueueUSMAllocFunc =
399-
std::get<1>(this->GetParam()).funcParams.enqueueUSMAllocFunc;
400-
const auto checkUSMSupportFunc =
401-
std::get<1>(this->GetParam()).funcParams.checkUSMSupportFunc;
407+
const size_t allocSize = getParam().allocSize;
408+
const auto enqueueUSMAllocFunc = getParam().funcParams.enqueueUSMAllocFunc;
409+
const auto checkUSMSupportFunc = getParam().funcParams.checkUSMSupportFunc;
402410

403411
ur_device_usm_access_capability_flags_t USMSupport = 0;
404412
ASSERT_SUCCESS(checkUSMSupportFunc(device, USMSupport));
@@ -457,12 +465,10 @@ TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessReuse) {
457465
}
458466

459467
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;
462-
const auto enqueueUSMAllocFunc =
463-
std::get<1>(this->GetParam()).funcParams.enqueueUSMAllocFunc;
464-
const auto checkUSMSupportFunc =
465-
std::get<1>(this->GetParam()).funcParams.checkUSMSupportFunc;
468+
const size_t allocSize = getParam().allocSize;
469+
const size_t iterations = getParam().iterations;
470+
const auto enqueueUSMAllocFunc = getParam().funcParams.enqueueUSMAllocFunc;
471+
const auto checkUSMSupportFunc = getParam().funcParams.checkUSMSupportFunc;
466472

467473
ur_device_usm_access_capability_flags_t USMSupport = 0;
468474
ASSERT_SUCCESS(checkUSMSupportFunc(device, USMSupport));

0 commit comments

Comments
 (0)