diff --git a/level_zero/core/source/device/device_imp.cpp b/level_zero/core/source/device/device_imp.cpp index af9509a7f8..86ccc37607 100644 --- a/level_zero/core/source/device/device_imp.cpp +++ b/level_zero/core/source/device/device_imp.cpp @@ -139,14 +139,10 @@ ze_result_t DeviceImp::createCommandQueue(const ze_command_queue_desc_t *desc, ze_result_t DeviceImp::getCommandQueueGroupProperties(uint32_t *pCount, ze_command_queue_group_properties_t *pCommandQueueGroupProperties) { NEO::Device *activeDevice = getActiveDevice(); - auto engines = activeDevice->getEngineGroups(); - - uint32_t numEngineGroups = 0; - for (uint32_t i = 0; i < engines.size(); i++) { - if (engines[i].size() > 0) { - numEngineGroups++; - } - } + auto &engineGroups = activeDevice->getEngineGroups(); + auto numEngineGroups = static_cast(std::count_if(std::begin(engineGroups), std::end(engineGroups), [](const auto &engines) { + return !engines.empty(); + })); if (*pCount == 0) { *pCount = numEngineGroups; @@ -158,7 +154,7 @@ ze_result_t DeviceImp::getCommandQueueGroupProperties(uint32_t *pCount, i < static_cast(NEO::EngineGroupType::MaxEngineGroups) && engineGroupCount < *pCount; i++) { - if (engines[i].empty()) { + if (engineGroups[i].empty()) { continue; } const auto &hardwareInfo = this->neoDevice->getHardwareInfo(); @@ -182,7 +178,7 @@ ze_result_t DeviceImp::getCommandQueueGroupProperties(uint32_t *pCount, } auto &l0HwHelper = L0HwHelper::get(hardwareInfo.platform.eRenderCoreFamily); l0HwHelper.setAdditionalGroupProperty(pCommandQueueGroupProperties[engineGroupCount], i); - pCommandQueueGroupProperties[engineGroupCount].numQueues = static_cast(engines[i].size()); + pCommandQueueGroupProperties[engineGroupCount].numQueues = static_cast(engineGroups[i].size()); engineGroupCount++; } @@ -916,7 +912,7 @@ ze_result_t DeviceImp::getCsrForLowPriority(NEO::CommandStreamReceiver **csr) { ze_result_t DeviceImp::mapOrdinalForAvailableEngineGroup(uint32_t *ordinal) { NEO::Device *activeDevice = getActiveDevice(); - auto engines = activeDevice->getEngineGroups(); + const auto &engines = activeDevice->getEngineGroups(); uint32_t numNonEmptyGroups = 0; uint32_t i = 0; for (; i < engines.size() && numNonEmptyGroups <= *ordinal; i++) { diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_1.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_1.cpp index f6cb773c9e..8bb2bf3034 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_1.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_1.cpp @@ -1187,7 +1187,7 @@ TEST_F(CommandListCreate, whenInvokingAppendMemoryCopyFromContextForImmediateCom } TEST_F(CommandListCreate, givenQueueDescriptionwhenCreatingImmediateCommandListForEveryEnigneThenItHasImmediateCommandQueueCreated) { - auto engines = neoDevice->getEngineGroups(); + auto &engines = neoDevice->getEngineGroups(); uint32_t numaAvailableEngineGroups = 0; for (uint32_t ordinal = 0; ordinal < static_cast(NEO::EngineGroupType::MaxEngineGroups); ordinal++) { if (engines[ordinal].size()) { diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_3.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_3.cpp index 8c373e7724..dd7bae45c1 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_3.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_3.cpp @@ -1144,7 +1144,7 @@ TEST_F(CommandListCreate, whenCreatingImmCmdListWithASyncModeAndAppendEventReset } TEST_F(CommandListCreate, givenQueueDescriptionwhenCreatingImmediateCommandListForCopyEnigneThenItHasImmediateCommandQueueCreated) { - auto engines = neoDevice->getEngineGroups(); + auto &engines = neoDevice->getEngineGroups(); uint32_t numaAvailableEngineGroups = 0; for (uint32_t ordinal = 0; ordinal < static_cast(NEO::EngineGroupType::MaxEngineGroups); ordinal++) { if (engines[ordinal].size()) { diff --git a/level_zero/core/test/unit_tests/sources/cmdqueue/test_cmdqueue.cpp b/level_zero/core/test/unit_tests/sources/cmdqueue/test_cmdqueue.cpp index 060114ef51..6ba0ec7bdf 100644 --- a/level_zero/core/test/unit_tests/sources/cmdqueue/test_cmdqueue.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdqueue/test_cmdqueue.cpp @@ -887,7 +887,7 @@ TEST_F(ContextCreateCommandQueueTest, givenCallToContextCreateCommandQueueThenCa HWTEST_F(ContextCreateCommandQueueTest, givenEveryPossibleGroupIndexWhenCreatingCommandQueueThenCommandQueueIsCreated) { ze_command_queue_handle_t commandQueue = {}; - auto engines = neoDevice->getEngineGroups(); + auto &engines = neoDevice->getEngineGroups(); uint32_t numaAvailableEngineGroups = 0; for (uint32_t ordinal = 0; ordinal < static_cast(NEO::EngineGroupType::MaxEngineGroups); ordinal++) { if (engines[ordinal].size()) { @@ -912,7 +912,7 @@ HWTEST_F(ContextCreateCommandQueueTest, givenEveryPossibleGroupIndexWhenCreating HWTEST_F(ContextCreateCommandQueueTest, givenOrdinalBigerThanAvailableEnginesWhenCreatingCommandQueueThenInvalidArgReturned) { ze_command_queue_handle_t commandQueue = {}; - auto engines = neoDevice->getEngineGroups(); + auto &engines = neoDevice->getEngineGroups(); uint32_t numaAvailableEngineGroups = 0; for (uint32_t ordinal = 0; ordinal < static_cast(NEO::EngineGroupType::MaxEngineGroups); ordinal++) { if (engines[ordinal].size()) { diff --git a/opencl/source/command_queue/command_queue.cpp b/opencl/source/command_queue/command_queue.cpp index 98e88bf65d..5169a3fde4 100644 --- a/opencl/source/command_queue/command_queue.cpp +++ b/opencl/source/command_queue/command_queue.cpp @@ -840,7 +840,7 @@ void CommandQueue::processProperties(const cl_queue_properties *properties) { this->queueFamilySelected = true; if (getDevice().getNumAvailableDevices() == 1) { auto queueFamily = getDevice().getNonEmptyEngineGroup(selectedQueueFamilyIndex); - auto engine = queueFamily->at(selectedQueueIndex); + const auto &engine = queueFamily->at(selectedQueueIndex); auto engineType = engine.getEngineType(); this->overrideEngine(engineType); this->queueCapabilities = getClDevice().getDeviceInfo().queueFamilyProperties[selectedQueueFamilyIndex].capabilities; diff --git a/opencl/test/unit_test/api/cl_create_command_queue_with_properties_tests.cpp b/opencl/test/unit_test/api/cl_create_command_queue_with_properties_tests.cpp index 884378046f..6ad211ea85 100644 --- a/opencl/test/unit_test/api/cl_create_command_queue_with_properties_tests.cpp +++ b/opencl/test/unit_test/api/cl_create_command_queue_with_properties_tests.cpp @@ -562,7 +562,7 @@ HWTEST_F(LowPriorityCommandQueueTest, GivenDeviceWithSubdevicesWhenCreatingLowPr auto commandQueueObj = castToObject(cmdQ); auto subDevice = context.getDevice(0)->getDeviceById(0); - auto engine = subDevice->getEngine(getChosenEngineType(subDevice->getHardwareInfo()), EngineUsage::LowPriority); + auto &engine = subDevice->getEngine(getChosenEngineType(subDevice->getHardwareInfo()), EngineUsage::LowPriority); EXPECT_EQ(engine.commandStreamReceiver, &commandQueueObj->getGpgpuCommandStreamReceiver()); EXPECT_EQ(engine.osContext, &commandQueueObj->getGpgpuCommandStreamReceiver().getOsContext()); diff --git a/shared/source/helpers/engine_control.h b/shared/source/helpers/engine_control.h index 4abe966ae3..4415208024 100644 --- a/shared/source/helpers/engine_control.h +++ b/shared/source/helpers/engine_control.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Intel Corporation + * Copyright (C) 2018-2021 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -22,6 +22,6 @@ struct EngineControl { CommandStreamReceiver *commandStreamReceiver = nullptr; OsContext *osContext = nullptr; - aub_stream::EngineType &getEngineType() { return osContext->getEngineType(); } + aub_stream::EngineType &getEngineType() const { return osContext->getEngineType(); } }; } // namespace NEO