From 1ce795c26540409e1e9006e9333f78d22b8f458f Mon Sep 17 00:00:00 2001 From: Mateusz Hoppe Date: Fri, 17 Jan 2025 18:24:49 +0000 Subject: [PATCH] refactor: fixes in ults Related-To: NEO-13789 Signed-off-by: Mateusz Hoppe --- opencl/test/unit_test/device/device_tests.cpp | 4 +++- shared/source/built_ins/sip.cpp | 11 +---------- shared/source/built_ins/sip_init.cpp | 13 ++++++++++++- shared/test/common/helpers/sip_init.cpp | 11 ++++++++++- shared/test/common/mocks/mock_device.cpp | 12 ++++++++++++ .../test/common/mocks/mock_memory_manager.cpp | 19 ++++++++++++++++++- .../test/common/mocks/mock_memory_manager.h | 4 +++- .../aub_command_stream_receiver_1_tests.cpp | 5 +++-- ...nd_stream_receiver_with_aub_dump_tests.cpp | 3 ++- .../tbx_command_stream_tests.cpp | 1 + .../execution_environment_tests.cpp | 1 + 11 files changed, 66 insertions(+), 18 deletions(-) diff --git a/opencl/test/unit_test/device/device_tests.cpp b/opencl/test/unit_test/device/device_tests.cpp index 19da92612c..d9fcb1fe22 100644 --- a/opencl/test/unit_test/device/device_tests.cpp +++ b/opencl/test/unit_test/device/device_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -257,6 +257,8 @@ TEST(DeviceCleanup, givenDeviceWhenItIsDestroyedThenFlushBatchedSubmissionsIsCal } TEST(DeviceCreation, GiveNonExistingFclWhenCreatingDeviceThenCompilerInterfaceIsNotCreated) { + DebugManagerStateRestore restore{}; + debugManager.flags.ForcePreemptionMode.set(PreemptionMode::Disabled); VariableBackup frontEndDllName(&Os::frontEndDllName); Os::frontEndDllName = "_fake_fcl1_so"; diff --git a/shared/source/built_ins/sip.cpp b/shared/source/built_ins/sip.cpp index 21777af18c..7fa06ccccb 100644 --- a/shared/source/built_ins/sip.cpp +++ b/shared/source/built_ins/sip.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -249,15 +249,6 @@ bool SipKernel::initHexadecimalArraySipKernel(SipKernelType type, Device &device return true; } -void SipKernel::freeSipKernels(RootDeviceEnvironment *rootDeviceEnvironment, MemoryManager *memoryManager) { - for (auto &sipKernel : rootDeviceEnvironment->sipKernels) { - if (sipKernel.get()) { - memoryManager->freeGraphicsMemory(sipKernel->getSipAllocation()); - sipKernel.reset(); - } - } -} - void SipKernel::selectSipClassType(std::string &fileName, Device &device) { const GfxCoreHelper &gfxCoreHelper = device.getGfxCoreHelper(); const std::string unknown("unk"); diff --git a/shared/source/built_ins/sip_init.cpp b/shared/source/built_ins/sip_init.cpp index 7960e514b3..b8892cc51d 100644 --- a/shared/source/built_ins/sip_init.cpp +++ b/shared/source/built_ins/sip_init.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2024 Intel Corporation + * Copyright (C) 2021-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -8,6 +8,8 @@ #include "shared/source/built_ins/sip.h" #include "shared/source/device/device.h" #include "shared/source/execution_environment/execution_environment.h" +#include "shared/source/execution_environment/root_device_environment.h" +#include "shared/source/memory_manager/memory_manager.h" namespace NEO { @@ -15,6 +17,15 @@ bool SipKernel::initSipKernel(SipKernelType type, Device &device) { return SipKernel::initSipKernelImpl(type, device, nullptr); } +void SipKernel::freeSipKernels(RootDeviceEnvironment *rootDeviceEnvironment, MemoryManager *memoryManager) { + for (auto &sipKernel : rootDeviceEnvironment->sipKernels) { + if (sipKernel.get()) { + memoryManager->freeGraphicsMemory(sipKernel->getSipAllocation()); + sipKernel.reset(); + } + } +} + const SipKernel &SipKernel::getSipKernel(Device &device, OsContext *context) { if (context && device.getExecutionEnvironment()->getDebuggingMode() == NEO::DebuggingMode::offline) { return SipKernel::getDebugSipKernel(device, context); diff --git a/shared/test/common/helpers/sip_init.cpp b/shared/test/common/helpers/sip_init.cpp index 9d4160ab0b..25ec3ee831 100644 --- a/shared/test/common/helpers/sip_init.cpp +++ b/shared/test/common/helpers/sip_init.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2024 Intel Corporation + * Copyright (C) 2021-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -243,6 +243,15 @@ bool SipKernel::initSipKernel(SipKernelType type, Device &device) { } } +void SipKernel::freeSipKernels(RootDeviceEnvironment *rootDeviceEnvironment, MemoryManager *memoryManager) { + for (auto &sipKernel : rootDeviceEnvironment->sipKernels) { + if (sipKernel.get()) { + memoryManager->freeGraphicsMemory(sipKernel->getSipAllocation()); + sipKernel.reset(); + } + } +} + const SipKernel &SipKernel::getSipKernel(Device &device, OsContext *context) { if (MockSipData::useMockSip) { if (!MockSipData::called) { diff --git a/shared/test/common/mocks/mock_device.cpp b/shared/test/common/mocks/mock_device.cpp index 41b3947416..7d226895a6 100644 --- a/shared/test/common/mocks/mock_device.cpp +++ b/shared/test/common/mocks/mock_device.cpp @@ -60,6 +60,7 @@ MockDevice::MockDevice(ExecutionEnvironment *executionEnvironment, uint32_t root UnitTestSetter::setRcsExposure(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]); UnitTestSetter::setCcsExposure(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]); executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->initGmm(); + executionEnvironment->calculateMaxOsContextCount(); if (!executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->memoryOperationsInterface) { executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->memoryOperationsInterface = std::make_unique(); @@ -96,6 +97,17 @@ void MockDevice::resetCommandStreamReceiver(CommandStreamReceiver *newCsr, uint3 registeredEngine.commandStreamReceiver = newCsr; allEngines[engineIndex].commandStreamReceiver = newCsr; + + if (osContext->isPartOfContextGroup()) { + auto &secondaryEnginesForType = secondaryEngines[osContext->getEngineType()]; + for (size_t i = 0; i < secondaryEnginesForType.engines.size(); i++) { + if (secondaryEnginesForType.engines[i].commandStreamReceiver == commandStreamReceivers[engineIndex].get()) { + secondaryEnginesForType.engines[i].commandStreamReceiver = newCsr; + break; + } + } + } + const_cast(memoryManager->getRegisteredEngines(rootDeviceIndex)).emplace_back(registeredEngine); osContext->incRefInternal(); newCsr->setupContext(*osContext); diff --git a/shared/test/common/mocks/mock_memory_manager.cpp b/shared/test/common/mocks/mock_memory_manager.cpp index 7859493976..bef20e86ac 100644 --- a/shared/test/common/mocks/mock_memory_manager.cpp +++ b/shared/test/common/mocks/mock_memory_manager.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -300,6 +300,23 @@ OsContext *MockMemoryManagerOsAgnosticContext::createAndRegisterOsContext(Comman return osContext; } +OsContext *MockMemoryManagerOsAgnosticContext::createAndRegisterSecondaryOsContext(const OsContext *primaryContext, CommandStreamReceiver *commandStreamReceiver, + const EngineDescriptor &engineDescriptor) { + auto rootDeviceIndex = commandStreamReceiver->getRootDeviceIndex(); + + auto osContext = new OsContext(rootDeviceIndex, 0, engineDescriptor); + osContext->incRefInternal(); + + osContext->setPrimaryContext(primaryContext); + + UNRECOVERABLE_IF(rootDeviceIndex != osContext->getRootDeviceIndex()); + + secondaryEngines[rootDeviceIndex].emplace_back(commandStreamReceiver, osContext); + allRegisteredEngines[rootDeviceIndex].emplace_back(commandStreamReceiver, osContext); + + return osContext; +} + OsContext *MockMemoryManagerWithDebuggableOsContext::createAndRegisterOsContext(CommandStreamReceiver *commandStreamReceiver, const EngineDescriptor &engineDescriptor) { auto osContext = new MockOsContext(0, engineDescriptor); diff --git a/shared/test/common/mocks/mock_memory_manager.h b/shared/test/common/mocks/mock_memory_manager.h index ae03907757..28b497d4b8 100644 --- a/shared/test/common/mocks/mock_memory_manager.h +++ b/shared/test/common/mocks/mock_memory_manager.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -473,6 +473,8 @@ class MockMemoryManagerOsAgnosticContext : public MockMemoryManager { MockMemoryManagerOsAgnosticContext(NEO::ExecutionEnvironment &executionEnvironment) : MockMemoryManager(executionEnvironment) {} OsContext *createAndRegisterOsContext(CommandStreamReceiver *commandStreamReceiver, const EngineDescriptor &engineDescriptor) override; + OsContext *createAndRegisterSecondaryOsContext(const OsContext *primaryContext, CommandStreamReceiver *commandStreamReceiver, + const EngineDescriptor &engineDescriptor) override; }; class MockMemoryManagerWithDebuggableOsContext : public MockMemoryManager { diff --git a/shared/test/unit_test/command_stream/aub_command_stream_receiver_1_tests.cpp b/shared/test/unit_test/command_stream/aub_command_stream_receiver_1_tests.cpp index 7c7fabd3d8..cae653169b 100644 --- a/shared/test/unit_test/command_stream/aub_command_stream_receiver_1_tests.cpp +++ b/shared/test/unit_test/command_stream/aub_command_stream_receiver_1_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -74,7 +74,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenDebugFlagSetWhenCreatingContextThen aubCsr->aubManager = &mockAubManager; aubCsr->setupContext(*pDevice->getDefaultEngine().osContext); - EXPECT_EQ(0x123u, mockAubManager.contextFlags); + EXPECT_EQ(0x123u, mockAubManager.contextFlags & 0x123); } TEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenItIsCreatedWithWrongGfxCoreFamilyThenNullPointerShouldBeReturned) { @@ -350,6 +350,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenAubCsrAndResidentAllocationWhenProc auto commandStreamReceiver = std::make_unique>("", true, *pDevice->getExecutionEnvironment(), 0, pDevice->getDeviceBitfield()); + pDevice->getExecutionEnvironment()->memoryManager->reInitLatestContextId(); auto osContext = pDevice->getExecutionEnvironment()->memoryManager->createAndRegisterOsContext(commandStreamReceiver.get(), EngineDescriptorHelper::getDefaultDescriptor({getChosenEngineType(*defaultHwInfo), EngineUsage::regular}, PreemptionHelper::getDefaultPreemptionMode(*defaultHwInfo))); diff --git a/shared/test/unit_test/command_stream/command_stream_receiver_with_aub_dump_tests.cpp b/shared/test/unit_test/command_stream/command_stream_receiver_with_aub_dump_tests.cpp index 81fda897fe..2473b42b58 100644 --- a/shared/test/unit_test/command_stream/command_stream_receiver_with_aub_dump_tests.cpp +++ b/shared/test/unit_test/command_stream/command_stream_receiver_with_aub_dump_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -155,6 +155,7 @@ struct CommandStreamReceiverWithAubDumpTest : public ::testing::TestWithParamgetExecutionEnvironment()->memoryManager->reInitLatestContextId(); auto osContext = executionEnvironment->memoryManager->createAndRegisterOsContext(csrWithAubDump, engineDescriptor); csrWithAubDump->setupContext(*osContext); } diff --git a/shared/test/unit_test/command_stream/tbx_command_stream_tests.cpp b/shared/test/unit_test/command_stream/tbx_command_stream_tests.cpp index f09dd20275..fff56dab11 100644 --- a/shared/test/unit_test/command_stream/tbx_command_stream_tests.cpp +++ b/shared/test/unit_test/command_stream/tbx_command_stream_tests.cpp @@ -366,6 +366,7 @@ HWTEST_F(TbxCommandSteamSimpleTest, givenTbxCsrAndResidentAllocationWhenProcessR auto commandStreamReceiver = std::make_unique>(*pDevice->getExecutionEnvironment(), pDevice->getDeviceBitfield()); + pDevice->getExecutionEnvironment()->memoryManager->reInitLatestContextId(); auto osContext = pDevice->getExecutionEnvironment()->memoryManager->createAndRegisterOsContext(commandStreamReceiver.get(), EngineDescriptorHelper::getDefaultDescriptor({getChosenEngineType(*defaultHwInfo), EngineUsage::regular}, PreemptionHelper::getDefaultPreemptionMode(*defaultHwInfo))); diff --git a/shared/test/unit_test/execution_environment/execution_environment_tests.cpp b/shared/test/unit_test/execution_environment/execution_environment_tests.cpp index 9b7ba90c45..84221d9b1e 100644 --- a/shared/test/unit_test/execution_environment/execution_environment_tests.cpp +++ b/shared/test/unit_test/execution_environment/execution_environment_tests.cpp @@ -504,6 +504,7 @@ TEST(ExecutionEnvironment, givenUnproperSetCsrFlagValueWhenInitializingMemoryMan TEST(ExecutionEnvironment, whenCalculateMaxOsContexCountThenGlobalVariableHasProperValue) { DebugManagerStateRestore restore; + debugManager.flags.ContextGroupSize.set(0); VariableBackup osContextCountBackup(&MemoryManager::maxOsContextCount, 0); uint32_t numRootDevices = 17u; uint32_t expectedOsContextCount = 0u;