66 */
77
88#include " shared/source/helpers/basic_math.h"
9+ #include " shared/source/helpers/constants.h"
910#include " shared/source/memory_manager/local_memory_usage.h"
1011#include " shared/test/unit_test/helpers/debug_manager_state_restore.h"
1112
@@ -19,7 +20,12 @@ struct MockLocalMemoryUsageBankSelector : public LocalMemoryUsageBankSelector {
1920 using LocalMemoryUsageBankSelector::LocalMemoryUsageBankSelector;
2021 using LocalMemoryUsageBankSelector::reserveOnBank;
2122 using LocalMemoryUsageBankSelector::updateUsageInfo;
23+ DeviceBitfield bitfield;
2224 std::atomic<uint64_t > *getMemorySizes () { return memorySizes.get (); }
25+
26+ MockLocalMemoryUsageBankSelector (uint32_t banksCount) : LocalMemoryUsageBankSelector(banksCount) {
27+ bitfield = maxNBitValue (banksCount);
28+ }
2329};
2430
2531TEST (localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenItsCreatedAllValuesAreZero) {
@@ -34,7 +40,7 @@ TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryIsReserved
3440 MockLocalMemoryUsageBankSelector selector (4u );
3541
3642 uint64_t allocationSize = 1024u ;
37- auto bankIndex = selector.getLeastOccupiedBank ();
43+ auto bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
3844 selector.reserveOnBank (bankIndex, allocationSize);
3945
4046 EXPECT_EQ (allocationSize, selector.getOccupiedMemorySizeForBank (bankIndex));
@@ -44,11 +50,11 @@ TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryIsReleased
4450 MockLocalMemoryUsageBankSelector selector (1u );
4551
4652 uint64_t allocationSize = 1024u ;
47- auto bankIndex = selector.getLeastOccupiedBank ();
53+ auto bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
4854 EXPECT_EQ (0u , bankIndex);
4955 selector.reserveOnBank (bankIndex, allocationSize);
5056
51- bankIndex = selector.getLeastOccupiedBank ();
57+ bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
5258 EXPECT_EQ (0u , bankIndex);
5359 selector.reserveOnBank (bankIndex, allocationSize);
5460
@@ -60,12 +66,12 @@ TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryIsReleased
6066TEST (localMemoryUsageTest, givenOverrideLeastOccupiedBankDebugFlagWhenGetLeastOccupiedBankIsCalledThenForcedBankIndexIsReturned) {
6167 DebugManagerStateRestore dbgRestore;
6268 MockLocalMemoryUsageBankSelector selector (1u );
63- auto bankIndex = selector.getLeastOccupiedBank ();
69+ auto bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
6470 EXPECT_EQ (0u , bankIndex);
6571
6672 uint32_t forcedBankIndex = 64u ;
6773 DebugManager.flags .OverrideLeastOccupiedBank .set (static_cast <int32_t >(forcedBankIndex));
68- bankIndex = selector.getLeastOccupiedBank ();
74+ bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
6975 EXPECT_EQ (forcedBankIndex, bankIndex);
7076}
7177
@@ -74,15 +80,15 @@ TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenMemoryAllocatedS
7480
7581 uint64_t allocationSize = 1024u ;
7682
77- auto bankIndex = selector.getLeastOccupiedBank ();
83+ auto bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
7884 selector.reserveOnBank (bankIndex, allocationSize);
79- bankIndex = selector.getLeastOccupiedBank ();
85+ bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
8086 selector.reserveOnBank (bankIndex, allocationSize);
81- bankIndex = selector.getLeastOccupiedBank ();
87+ bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
8288 selector.reserveOnBank (bankIndex, allocationSize);
83- bankIndex = selector.getLeastOccupiedBank ();
89+ bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
8490 selector.reserveOnBank (bankIndex, allocationSize);
85- bankIndex = selector.getLeastOccupiedBank ();
91+ bankIndex = selector.getLeastOccupiedBank (selector. bitfield );
8692 selector.reserveOnBank (bankIndex, allocationSize);
8793
8894 for (uint32_t i = 0 ; i < selector.banksCount ; i++) {
@@ -148,4 +154,12 @@ TEST(localMemoryUsageTest, givenLocalMemoryUsageBankSelectorWhenThereAreMoreThan
148154 EXPECT_EQ (0u , selector.getOccupiedMemorySizeForBank (32 ));
149155}
150156
157+ TEST (localMemoryUsageTest, givenBitfieldWhenGettingLeastOccupiedBankThenReturnTheProperOne) {
158+ MockLocalMemoryUsageBankSelector selector (2u );
159+ DeviceBitfield bitfield (0b10 );
160+ auto bank = selector.getLeastOccupiedBank (bitfield);
161+
162+ EXPECT_EQ (bank, 1u );
163+ }
164+
151165} // namespace NEO
0 commit comments