Skip to content

Commit dadbd5a

Browse files
Add debug flag to override bank index in local memory bank selector
Change-Id: Ie85129fc7cbdeb9cfa88b401430f983c096a868f Signed-off-by: Kamil Kopryk <[email protected]>
1 parent 87596d2 commit dadbd5a

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

opencl/test/unit_test/memory_manager/local_memory_usage_tests.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include "shared/source/helpers/basic_math.h"
99
#include "shared/source/memory_manager/local_memory_usage.h"
10+
#include "shared/test/unit_test/helpers/debug_manager_state_restore.h"
1011

1112
#include "third_party/gtest/gtest/gtest.h"
1213

@@ -56,6 +57,18 @@ TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryIsReleased
5657
EXPECT_EQ(allocationSize, selector.getOccupiedMemorySizeForBank(bankIndex));
5758
}
5859

60+
TEST(localMemoryUsageTest, givenOverrideLeastOccupiedBankDebugFlagWhenGetLeastOccupiedBankIsCalledThenForcedBankIndexIsReturned) {
61+
DebugManagerStateRestore dbgRestore;
62+
MockLocalMemoryUsageBankSelector selector(1u);
63+
auto bankIndex = selector.getLeastOccupiedBank();
64+
EXPECT_EQ(0u, bankIndex);
65+
66+
uint32_t forcedBankIndex = 64u;
67+
DebugManager.flags.OverrideLeastOccupiedBank.set(static_cast<int32_t>(forcedBankIndex));
68+
bankIndex = selector.getLeastOccupiedBank();
69+
EXPECT_EQ(forcedBankIndex, bankIndex);
70+
}
71+
5972
TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryAllocatedSeveralTimesItIsStoredOnDifferentBanks) {
6073
MockLocalMemoryUsageBankSelector selector(5u);
6174

opencl/test/unit_test/test_files/igdrcl.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,5 +162,6 @@ LimitBlitterMaxHeight = -1
162162
FlushAfterEachBlit = -1
163163
UseCommandBufferHeaderSizeForWddmQueueSubmission = 1
164164
OverridePreemptionSurfaceSizeInMb = -1
165+
OverrideLeastOccupiedBank = -1
165166
UseAsyncDrmExec = -1
166167
EnableMultiStorageResources = -1

shared/source/debug_settings/debug_variables_base.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, LimitBlitterMaxWidth, -1, "-1: default, >=0: Max
6464
DECLARE_DEBUG_VARIABLE(int32_t, LimitBlitterMaxHeight, -1, "-1: default, >=0: Max height")
6565
DECLARE_DEBUG_VARIABLE(int32_t, FlushAfterEachBlit, -1, "-1: default, 0: disable, 1: enable")
6666
DECLARE_DEBUG_VARIABLE(int32_t, OverridePreemptionSurfaceSizeInMb, -1, "-1: default, >=0 Override preemption surface size with value")
67+
DECLARE_DEBUG_VARIABLE(int32_t, OverrideLeastOccupiedBank, -1, "-1: default, >=0 Override least occupied bank with value")
6768

6869
/*LOGGING FLAGS*/
6970
DECLARE_DEBUG_VARIABLE(bool, PrintDebugSettings, false, "Dump all debug variables settings to text file. Print to stdout if value is different than default.")

shared/source/memory_manager/local_memory_usage.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
#include "shared/source/memory_manager/local_memory_usage.h"
99

10+
#include "shared/source/debug_settings/debug_settings_manager.h"
11+
1012
#include <algorithm>
1113
#include <bitset>
1214
#include <iterator>
@@ -23,6 +25,10 @@ LocalMemoryUsageBankSelector::LocalMemoryUsageBankSelector(uint32_t banksCount)
2325
}
2426

2527
uint32_t LocalMemoryUsageBankSelector::getLeastOccupiedBank() {
28+
if (DebugManager.flags.OverrideLeastOccupiedBank.get() != -1) {
29+
return static_cast<uint32_t>(DebugManager.flags.OverrideLeastOccupiedBank.get());
30+
}
31+
2632
auto leastOccupiedBankIterator = std::min_element(memorySizes.get(), memorySizes.get() + banksCount);
2733
return static_cast<uint32_t>(std::distance(memorySizes.get(), leastOccupiedBankIterator));
2834
}

0 commit comments

Comments
 (0)