Disable cross-tile kmd migration for usm allocations

Ensure KMD migrations for USM allocations to occur between smem and lmem only

Related-To: NEO-6969

Signed-off-by: Milczarek, Slawomir <slawomir.milczarek@intel.com>
This commit is contained in:
Milczarek, Slawomir
2022-05-16 08:29:09 +00:00
committed by Compute-Runtime-Automation
parent e32738ee4a
commit 9d31d36491
3 changed files with 81 additions and 1 deletions

View File

@@ -378,6 +378,37 @@ TEST_F(MultiDeviceStorageInfoTest, givenReadOnlyBufferToBeCopiedAcrossTilesWhenD
EXPECT_EQ(3u, storageInfo.getNumBanks());
}
TEST_F(MultiDeviceStorageInfoTest, givenUnifiedSharedMemoryWhenMultiStoragePlacementIsOverridenThenSpecifiedBanksAreUsed) {
DebugManagerStateRestore restorer;
auto proposedTiles = allTilesMask;
proposedTiles[0] = 0;
DebugManager.flags.OverrideMultiStoragePlacement.set(proposedTiles.to_ulong());
AllocationProperties properties{mockRootDeviceIndex, false, 512 * KB, AllocationType::UNIFIED_SHARED_MEMORY, true, allTilesMask};
auto storageInfo = memoryManager->createStorageInfoFromProperties(properties);
EXPECT_EQ(proposedTiles, storageInfo.memoryBanks);
}
TEST_F(MultiDeviceStorageInfoTest, givenUnifiedSharedMemoryWhenKmdMigrationIsUsedThenPreferredTileIsUsed) {
DebugManagerStateRestore restorer;
DebugManager.flags.UseKmdMigration.set(1);
AllocationProperties properties{mockRootDeviceIndex, false, 512 * KB, AllocationType::UNIFIED_SHARED_MEMORY, true, allTilesMask};
auto storageInfo = memoryManager->createStorageInfoFromProperties(properties);
DeviceBitfield preferredTile;
EXPECT_TRUE(properties.subDevicesBitfield.count() > 1);
const auto leastOccupiedBank = memoryManager->getLocalMemoryUsageBankSelector(properties.allocationType, properties.rootDeviceIndex)->getLeastOccupiedBank(properties.subDevicesBitfield);
UNRECOVERABLE_IF(!properties.subDevicesBitfield.test(leastOccupiedBank));
preferredTile.set(leastOccupiedBank);
EXPECT_EQ(preferredTile, storageInfo.memoryBanks);
}
TEST_F(MultiDeviceStorageInfoTest, givenLeastOccupiedBankAndOtherBitsEnabledInSubDeviceBitfieldWhenCreateStorageInfoThenTakeLeastOccupiedBankAsMemoryBank) {
AllocationProperties properties{mockRootDeviceIndex, false, 1u, AllocationType::UNKNOWN, false, singleTileMask};
auto leastOccupiedBank = memoryManager->getLocalMemoryUsageBankSelector(properties.allocationType, properties.rootDeviceIndex)->getLeastOccupiedBank(properties.subDevicesBitfield);