Skip to content

Commit c7c9a6f

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 getMultiQueueParam(), getAllocParam() and getQueueFlags() helpers to the fixture for clean access to the two parts of the parameter tuple. getMultiQueueParam() calls the base class getter using the fully qualified name uur::urContextTestWithParam<...>::getParam() to avoid ambiguity. The names are specific enough to not be confused with GoogleTest's conventional GetParam(). - 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 getAllocParam() instead of std::get<1>(this->GetParam()), and restoring the numQueues parameter in SuccessMt to getAllocParam().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 c7c9a6f

1 file changed

Lines changed: 35 additions & 22 deletions

File tree

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

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,19 @@ 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());
8080

81+
const auto &param = getAllocParam();
82+
83+
ur_queue_properties_t props = {UR_STRUCTURE_TYPE_QUEUE_PROPERTIES, nullptr,
84+
getQueueFlags()};
8185
queues.reserve(param.numQueues);
8286
for (size_t i = 0; i < param.numQueues; i++) {
8387
ur_queue_handle_t queue = nullptr;
84-
ASSERT_SUCCESS(urQueueCreate(context, device, 0, &queue));
85-
SKIP_IF_BATCHED_QUEUE(queue);
88+
ASSERT_SUCCESS(urQueueCreate(context, device, &props, &queue));
8689
queues.push_back(queue);
8790
}
8891
}
@@ -95,6 +98,20 @@ struct urL0EnqueueAllocMultiQueueSameDeviceTest
9598
UUR_RETURN_ON_FATAL_FAILURE(urContextTestWithParam::TearDown());
9699
}
97100

101+
const uur::MultiQueueParam<EnqueueAllocMultiQueueTestParam> &
102+
getMultiQueueParam() const {
103+
return uur::urContextTestWithParam<
104+
uur::MultiQueueParam<EnqueueAllocMultiQueueTestParam>>::getParam();
105+
}
106+
107+
const EnqueueAllocMultiQueueTestParam &getAllocParam() const {
108+
return std::get<0>(this->getMultiQueueParam());
109+
}
110+
111+
ur_queue_flag_t getQueueFlags() const {
112+
return std::get<1>(this->getMultiQueueParam());
113+
}
114+
98115
std::vector<ur_queue_handle_t> queues;
99116
};
100117

@@ -322,7 +339,7 @@ TEST_P(urL0EnqueueAllocTest, SuccessWithKernelRepeat) {
322339
ValidateEnqueueFree(ptr2);
323340
}
324341

325-
UUR_DEVICE_TEST_SUITE_WITH_PARAM(
342+
UUR_MULTI_QUEUE_TYPE_TEST_SUITE_WITH_PARAM(
326343
urL0EnqueueAllocMultiQueueSameDeviceTest,
327344
::testing::ValuesIn({
328345
EnqueueAllocMultiQueueTestParam{1024, 256, 8, urEnqueueUSMHostAllocExp,
@@ -334,20 +351,16 @@ UUR_DEVICE_TEST_SUITE_WITH_PARAM(
334351
urEnqueueUSMDeviceAllocExp,
335352
uur::GetDeviceUSMDeviceSupport},
336353
}),
337-
uur::deviceTestWithParamPrinter<EnqueueAllocMultiQueueTestParam>);
354+
uur::deviceTestWithParamPrinterMulti<EnqueueAllocMultiQueueTestParam>);
338355

339356
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;
357+
const size_t allocSize = getAllocParam().allocSize;
358+
const size_t numQueues = getAllocParam().numQueues;
359+
const size_t iterations = getAllocParam().iterations;
343360
const auto enqueueUSMAllocFunc =
344-
std::get<1>(this->GetParam()).funcParams.enqueueUSMAllocFunc;
361+
getAllocParam().funcParams.enqueueUSMAllocFunc;
345362
const auto checkUSMSupportFunc =
346-
std::get<1>(this->GetParam()).funcParams.checkUSMSupportFunc;
347-
348-
if (numQueues > 0) {
349-
SKIP_IF_BATCHED_QUEUE(queues[0]);
350-
}
363+
getAllocParam().funcParams.checkUSMSupportFunc;
351364

352365
ur_device_usm_access_capability_flags_t USMSupport = 0;
353366
ASSERT_SUCCESS(checkUSMSupportFunc(device, USMSupport));
@@ -394,11 +407,11 @@ TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessMt) {
394407
TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessReuse) {
395408
GTEST_SKIP() << "Multi queue reuse is not supported.";
396409

397-
const size_t allocSize = std::get<1>(this->GetParam()).allocSize;
410+
const size_t allocSize = getAllocParam().allocSize;
398411
const auto enqueueUSMAllocFunc =
399-
std::get<1>(this->GetParam()).funcParams.enqueueUSMAllocFunc;
412+
getAllocParam().funcParams.enqueueUSMAllocFunc;
400413
const auto checkUSMSupportFunc =
401-
std::get<1>(this->GetParam()).funcParams.checkUSMSupportFunc;
414+
getAllocParam().funcParams.checkUSMSupportFunc;
402415

403416
ur_device_usm_access_capability_flags_t USMSupport = 0;
404417
ASSERT_SUCCESS(checkUSMSupportFunc(device, USMSupport));
@@ -457,12 +470,12 @@ TEST_P(urL0EnqueueAllocMultiQueueSameDeviceTest, SuccessReuse) {
457470
}
458471

459472
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;
473+
const size_t allocSize = getAllocParam().allocSize;
474+
const size_t iterations = getAllocParam().iterations;
462475
const auto enqueueUSMAllocFunc =
463-
std::get<1>(this->GetParam()).funcParams.enqueueUSMAllocFunc;
476+
getAllocParam().funcParams.enqueueUSMAllocFunc;
464477
const auto checkUSMSupportFunc =
465-
std::get<1>(this->GetParam()).funcParams.checkUSMSupportFunc;
478+
getAllocParam().funcParams.checkUSMSupportFunc;
466479

467480
ur_device_usm_access_capability_flags_t USMSupport = 0;
468481
ASSERT_SUCCESS(checkUSMSupportFunc(device, USMSupport));

0 commit comments

Comments
 (0)