From 3d5e34f727c2d0f6f8a8b7fd157f09d34f64721e Mon Sep 17 00:00:00 2001 From: Michal Mrozek Date: Mon, 19 Sep 2022 16:38:59 +0000 Subject: [PATCH] Reduce the size of masks to 4. 32 is not required. Signed-off-by: Michal Mrozek --- .../command_queue/enqueue_kernel_1_tests.cpp | 4 ++-- .../test/unit_test/device/sub_device_tests.cpp | 4 ++-- shared/source/helpers/affinity_mask.h | 2 +- shared/source/helpers/common_types.h | 2 +- .../memory_manager/local_memory_usage.cpp | 2 +- shared/source/os_interface/hw_info_config.inl | 2 +- .../os_interface/linux/drm_memory_manager.cpp | 2 +- .../source/os_interface/linux/memory_info.cpp | 2 +- .../test/common/libult/create_command_stream.h | 4 ++-- .../memory_manager/local_memory_usage_tests.cpp | 6 ++---- .../os_interface/hw_info_config_tests.cpp | 4 ++-- .../unit_test/os_interface/linux/drm_tests.cpp | 17 ++++++++--------- .../unified_memory/unified_memory_tests.cpp | 10 +++++----- 13 files changed, 29 insertions(+), 32 deletions(-) diff --git a/opencl/test/unit_test/command_queue/enqueue_kernel_1_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_kernel_1_tests.cpp index 17fdb20b58..e5dbeeca38 100644 --- a/opencl/test/unit_test/command_queue/enqueue_kernel_1_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_kernel_1_tests.cpp @@ -1548,10 +1548,10 @@ HWTEST_F(EnqueueKernelTest, givenContextWithSeveralDevicesWhenEnqueueKernelThenD clEnqueueNDRangeKernel(this->pCmdQ, mockKernel.mockMultiDeviceKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr); EXPECT_FALSE(mockCsr->passedDispatchFlags.areMultipleSubDevicesInContext); - context->deviceBitfields[rootDeviceIndex].set(7, true); + context->deviceBitfields[rootDeviceIndex].set(3, true); clEnqueueNDRangeKernel(this->pCmdQ, mockKernel.mockMultiDeviceKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr); EXPECT_TRUE(mockCsr->passedDispatchFlags.areMultipleSubDevicesInContext); - context->deviceBitfields[rootDeviceIndex].set(7, false); + context->deviceBitfields[rootDeviceIndex].set(3, false); } HWTEST_F(EnqueueKernelTest, givenNonVMEKernelWhenEnqueueKernelThenDispatchFlagsDoesntHaveMediaSamplerRequired) { diff --git a/opencl/test/unit_test/device/sub_device_tests.cpp b/opencl/test/unit_test/device/sub_device_tests.cpp index 6f783d724d..b869a2b30b 100644 --- a/opencl/test/unit_test/device/sub_device_tests.cpp +++ b/opencl/test/unit_test/device/sub_device_tests.cpp @@ -158,11 +158,11 @@ TEST(SubDevicesTest, givenClDeviceWithSubDevicesWhenSubDeviceInternalRefCountsAr TEST(SubDevicesTest, givenDeviceWithSubDevicesWhenSubDeviceCreationFailThenWholeDeviceIsDestroyed) { DebugManagerStateRestore restorer; - DebugManager.flags.CreateMultipleSubDevices.set(10); + DebugManager.flags.CreateMultipleSubDevices.set(4); MockExecutionEnvironment executionEnvironment; executionEnvironment.prepareRootDeviceEnvironments(1); executionEnvironment.incRefInternal(); - executionEnvironment.memoryManager.reset(new FailMemoryManager(10, executionEnvironment)); + executionEnvironment.memoryManager.reset(new FailMemoryManager(4, executionEnvironment)); auto device = Device::create(&executionEnvironment, 0u); EXPECT_EQ(nullptr, device); } diff --git a/shared/source/helpers/affinity_mask.h b/shared/source/helpers/affinity_mask.h index 6d254df163..0536d63b8f 100644 --- a/shared/source/helpers/affinity_mask.h +++ b/shared/source/helpers/affinity_mask.h @@ -17,7 +17,7 @@ namespace NEO { class AffinityMaskHelper { public: - using AffinityMaskContainer = std::vector>; + using AffinityMaskContainer = std::vector>; AffinityMaskHelper(bool allSubdevicesActive) { if (!allSubdevicesActive) { diff --git a/shared/source/helpers/common_types.h b/shared/source/helpers/common_types.h index 4ac6677a32..49f8bb13cf 100644 --- a/shared/source/helpers/common_types.h +++ b/shared/source/helpers/common_types.h @@ -14,7 +14,7 @@ namespace NEO { struct EngineControl; using EngineControlContainer = std::vector; -using DeviceBitfield = std::bitset<32>; +using DeviceBitfield = std::bitset<4>; class Device; using DeviceVector = std::vector>; diff --git a/shared/source/memory_manager/local_memory_usage.cpp b/shared/source/memory_manager/local_memory_usage.cpp index 5abfc6f489..00c254fc90 100644 --- a/shared/source/memory_manager/local_memory_usage.cpp +++ b/shared/source/memory_manager/local_memory_usage.cpp @@ -56,7 +56,7 @@ void LocalMemoryUsageBankSelector::reserveOnBank(uint32_t bankIndex, uint64_t al } void LocalMemoryUsageBankSelector::updateUsageInfo(uint32_t memoryBanks, uint64_t allocationSize, bool reserve) { - auto banks = std::bitset<32>(memoryBanks); + auto banks = std::bitset<4>(memoryBanks); for (uint32_t bankIndex = 0; bankIndex < banks.size() && bankIndex < banksCount; bankIndex++) { if (banks.test(bankIndex)) { if (reserve) { diff --git a/shared/source/os_interface/hw_info_config.inl b/shared/source/os_interface/hw_info_config.inl index c37cdf09cc..284960b8ce 100644 --- a/shared/source/os_interface/hw_info_config.inl +++ b/shared/source/os_interface/hw_info_config.inl @@ -120,7 +120,7 @@ bool HwInfoConfigHw::getConcurrentAccessMemCapabilitiesSupported(Usm auto supported = false; if (DebugManager.flags.EnableUsmConcurrentAccessSupport.get() > 0) { - auto capabilityBitset = std::bitset<32>(DebugManager.flags.EnableUsmConcurrentAccessSupport.get()); + auto capabilityBitset = std::bitset<4>(DebugManager.flags.EnableUsmConcurrentAccessSupport.get()); supported = capabilityBitset.test(static_cast(capability)); } diff --git a/shared/source/os_interface/linux/drm_memory_manager.cpp b/shared/source/os_interface/linux/drm_memory_manager.cpp index 9957353dfa..3a5682e9a1 100644 --- a/shared/source/os_interface/linux/drm_memory_manager.cpp +++ b/shared/source/os_interface/linux/drm_memory_manager.cpp @@ -1495,7 +1495,7 @@ BufferObject *DrmMemoryManager::createBufferObjectInMemoryRegion(Drm *drm, Gmm * uint32_t handle = 0; uint32_t ret = 0; - auto banks = std::bitset<32>(memoryBanks); + auto banks = std::bitset<4>(memoryBanks); if (banks.count() > 1) { ret = memoryInfo->createGemExtWithMultipleRegions(memoryBanks, size, handle); } else { diff --git a/shared/source/os_interface/linux/memory_info.cpp b/shared/source/os_interface/linux/memory_info.cpp index 12e7646ae6..a6b00855e7 100644 --- a/shared/source/os_interface/linux/memory_info.cpp +++ b/shared/source/os_interface/linux/memory_info.cpp @@ -125,7 +125,7 @@ uint32_t MemoryInfo::createGemExtWithSingleRegion(uint32_t memoryBanks, size_t a uint32_t MemoryInfo::createGemExtWithMultipleRegions(uint32_t memoryBanks, size_t allocSize, uint32_t &handle) { auto pHwInfo = this->drm.getRootDeviceEnvironment().getHardwareInfo(); - auto banks = std::bitset<32>(memoryBanks); + auto banks = std::bitset<4>(memoryBanks); MemRegionsVec memRegions{}; size_t currentBank = 0; size_t i = 0; diff --git a/shared/test/common/libult/create_command_stream.h b/shared/test/common/libult/create_command_stream.h index f21bc95238..2d82b5dbbd 100644 --- a/shared/test/common/libult/create_command_stream.h +++ b/shared/test/common/libult/create_command_stream.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Intel Corporation + * Copyright (C) 2018-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -15,7 +15,7 @@ namespace NEO { class CommandStreamReceiver; class ExecutionEnvironment; -using DeviceBitfield = std::bitset<32>; +using DeviceBitfield = std::bitset<4>; extern CommandStreamReceiver *createCommandStream(ExecutionEnvironment &executionEnvironment, uint32_t rootDeviceIndex, diff --git a/shared/test/unit_test/memory_manager/local_memory_usage_tests.cpp b/shared/test/unit_test/memory_manager/local_memory_usage_tests.cpp index f01586f8e1..92652a13f6 100644 --- a/shared/test/unit_test/memory_manager/local_memory_usage_tests.cpp +++ b/shared/test/unit_test/memory_manager/local_memory_usage_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2021 Intel Corporation + * Copyright (C) 2019-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -76,7 +76,7 @@ TEST(localMemoryUsageTest, givenOverrideLeastOccupiedBankDebugFlagWhenGetLeastOc } TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryAllocatedSeveralTimesThenItIsStoredOnDifferentBanks) { - MockLocalMemoryUsageBankSelector selector(5u); + MockLocalMemoryUsageBankSelector selector(4u); uint64_t allocationSize = 1024u; @@ -88,8 +88,6 @@ TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryAllocatedS selector.reserveOnBank(bankIndex, allocationSize); bankIndex = selector.getLeastOccupiedBank(selector.bitfield); selector.reserveOnBank(bankIndex, allocationSize); - bankIndex = selector.getLeastOccupiedBank(selector.bitfield); - selector.reserveOnBank(bankIndex, allocationSize); for (uint32_t i = 0; i < selector.banksCount; i++) { EXPECT_EQ(allocationSize, selector.getOccupiedMemorySizeForBank(i)); diff --git a/shared/test/unit_test/os_interface/hw_info_config_tests.cpp b/shared/test/unit_test/os_interface/hw_info_config_tests.cpp index 4965859b0e..8094bd256c 100644 --- a/shared/test/unit_test/os_interface/hw_info_config_tests.cpp +++ b/shared/test/unit_test/os_interface/hw_info_config_tests.cpp @@ -62,9 +62,9 @@ HWTEST_F(HwInfoConfigTest, givenHwInfoConfigWhenGettingMemoryCapabilitiesThenCor auto hwInfoConfig = HwInfoConfig::get(pInHwInfo.platform.eProductFamily); - for (auto capabilityBitmask : {0, 0b0001, 0b0010, 0b0100, 0b1000, 0b1111, 0b10000}) { + for (auto capabilityBitmask : {0, 0b0001, 0b0010, 0b0100, 0b1000, 0b1111}) { DebugManager.flags.EnableUsmConcurrentAccessSupport.set(capabilityBitmask); - std::bitset<32> capabilityBitset(capabilityBitmask); + std::bitset<4> capabilityBitset(capabilityBitmask); auto hostMemCapabilities = hwInfoConfig->getHostMemCapabilities(&pInHwInfo); if (hostMemCapabilities > 0) { diff --git a/shared/test/unit_test/os_interface/linux/drm_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_tests.cpp index a0ed51476a..686f46e036 100644 --- a/shared/test/unit_test/os_interface/linux/drm_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_tests.cpp @@ -705,7 +705,7 @@ TEST(DrmTest, givenPerContextVMRequiredWhenCreatingOsContextsThenImplicitVmIdPer EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount); auto &drmVmIds = osContext.getDrmVmIds(); - EXPECT_EQ(32u, drmVmIds.size()); + EXPECT_EQ(4u, drmVmIds.size()); EXPECT_EQ(20u, drmVmIds[0]); } @@ -718,7 +718,7 @@ TEST(DrmTest, givenPerContextVMRequiredWhenCreatingOsContextForSubDeviceThenImpl DrmMock drmMock(rootEnv); EXPECT_TRUE(drmMock.requirePerContextVM); - drmMock.storedRetValForVmId = 20; + drmMock.storedRetValForVmId = 4; DeviceBitfield deviceBitfield(1 << 3); OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor(deviceBitfield)); @@ -726,9 +726,9 @@ TEST(DrmTest, givenPerContextVMRequiredWhenCreatingOsContextForSubDeviceThenImpl EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount); auto &drmVmIds = osContext.getDrmVmIds(); - EXPECT_EQ(32u, drmVmIds.size()); + EXPECT_EQ(4u, drmVmIds.size()); - EXPECT_EQ(20u, drmVmIds[3]); + EXPECT_EQ(4u, drmVmIds[3]); EXPECT_EQ(0u, drmVmIds[0]); EXPECT_EQ(0u, drmVmIds[2]); @@ -742,7 +742,7 @@ TEST(DrmTest, givenPerContextVMRequiredWhenCreatingOsContextsForRootDeviceThenIm DrmMock drmMock(rootEnv); EXPECT_TRUE(drmMock.requirePerContextVM); - drmMock.storedRetValForVmId = 20; + drmMock.storedRetValForVmId = 4; DeviceBitfield deviceBitfield(1 | 1 << 1); OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor(deviceBitfield)); @@ -750,13 +750,12 @@ TEST(DrmTest, givenPerContextVMRequiredWhenCreatingOsContextsForRootDeviceThenIm EXPECT_EQ(2 * 2u, drmMock.receivedContextParamRequestCount); auto &drmVmIds = osContext.getDrmVmIds(); - EXPECT_EQ(32u, drmVmIds.size()); + EXPECT_EQ(4u, drmVmIds.size()); - EXPECT_EQ(20u, drmVmIds[0]); - EXPECT_EQ(20u, drmVmIds[1]); + EXPECT_EQ(4u, drmVmIds[0]); + EXPECT_EQ(4u, drmVmIds[1]); EXPECT_EQ(0u, drmVmIds[2]); - EXPECT_EQ(0u, drmVmIds[31]); } TEST(DrmTest, givenNoPerContextVmsDrmWhenCreatingOsContextsThenVmIdIsNotQueriedAndStored) { diff --git a/shared/test/unit_test/unified_memory/unified_memory_tests.cpp b/shared/test/unit_test/unified_memory/unified_memory_tests.cpp index 161540eca8..67045be034 100644 --- a/shared/test/unit_test/unified_memory/unified_memory_tests.cpp +++ b/shared/test/unit_test/unified_memory/unified_memory_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2020 Intel Corporation + * Copyright (C) 2019-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -12,10 +12,10 @@ #include TEST(UnifiedMemoryTests, givenInternalMemoryTypesThenAllHaveOnlyOneBitSet) { - EXPECT_EQ(1u, std::bitset<32>(InternalMemoryType::DEVICE_UNIFIED_MEMORY).count()); - EXPECT_EQ(1u, std::bitset<32>(InternalMemoryType::HOST_UNIFIED_MEMORY).count()); - EXPECT_EQ(1u, std::bitset<32>(InternalMemoryType::SHARED_UNIFIED_MEMORY).count()); - EXPECT_EQ(1u, std::bitset<32>(InternalMemoryType::SVM).count()); + EXPECT_EQ(1u, std::bitset<4>(InternalMemoryType::DEVICE_UNIFIED_MEMORY).count()); + EXPECT_EQ(1u, std::bitset<4>(InternalMemoryType::HOST_UNIFIED_MEMORY).count()); + EXPECT_EQ(1u, std::bitset<4>(InternalMemoryType::SHARED_UNIFIED_MEMORY).count()); + EXPECT_EQ(1u, std::bitset<4>(InternalMemoryType::SVM).count()); } TEST(UnifiedMemoryTests, givenUnifiedMemoryControlsWhenDedicatedFieldsAreSetThenMaskIsProperlyGenerated) {