Add new colouring policy

Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
Lukasz Jobczyk
2021-10-04 15:23:42 +00:00
committed by Compute-Runtime-Automation
parent dc9bcb99c9
commit 7392b5fb8d
10 changed files with 85 additions and 12 deletions

View File

@@ -111,13 +111,25 @@ StorageInfo MemoryManager::createStorageInfoFromProperties(const AllocationPrope
break;
case GraphicsAllocation::AllocationType::BUFFER:
case GraphicsAllocation::AllocationType::BUFFER_COMPRESSED:
case GraphicsAllocation::AllocationType::SVM_GPU:
case GraphicsAllocation::AllocationType::SVM_GPU: {
auto colouringPolicy = properties.colouringPolicy;
auto granularity = properties.colouringGranularity;
if (DebugManager.flags.MultiStorageGranularity.get() != -1) {
colouringPolicy = ColouringPolicy::ChunkSizeBased;
granularity = DebugManager.flags.MultiStorageGranularity.get() * MemoryConstants::kiloByte;
}
DEBUG_BREAK_IF(colouringPolicy == ColouringPolicy::DeviceCountBased && granularity != MemoryConstants::pageSize64k);
if (this->supportsMultiStorageResources &&
properties.multiStorageResource &&
properties.size >= deviceCount * MemoryConstants::pageSize64k &&
properties.size >= deviceCount * granularity &&
properties.subDevicesBitfield.count() != 1u) {
storageInfo.memoryBanks = allTilesValue;
storageInfo.multiStorage = true;
storageInfo.colouringPolicy = colouringPolicy;
storageInfo.colouringGranularity = granularity;
if (DebugManager.flags.OverrideMultiStoragePlacement.get() != -1) {
storageInfo.memoryBanks = DebugManager.flags.OverrideMultiStoragePlacement.get();
}
@@ -130,6 +142,7 @@ StorageInfo MemoryManager::createStorageInfoFromProperties(const AllocationPrope
}
storageInfo.localOnlyRequired = true;
break;
}
case GraphicsAllocation::AllocationType::UNIFIED_SHARED_MEMORY:
storageInfo.memoryBanks = allTilesValue;
break;

View File

@@ -7,7 +7,9 @@
#pragma once
#include "shared/source/helpers/app_resource_defines.h"
#include "shared/source/helpers/basic_math.h"
#include "shared/source/helpers/common_types.h"
#include "shared/source/helpers/constants.h"
#include <cstdint>
@@ -23,11 +25,14 @@ struct StorageInfo {
bool cloningOfPageTables = true;
bool tileInstanced = false;
bool multiStorage = false;
ColouringPolicy colouringPolicy = ColouringPolicy::DeviceCountBased;
size_t colouringGranularity = MemoryConstants::pageSize64k;
bool readOnlyMultiStorage = false;
bool cpuVisibleSegment = false;
bool isLockable = false;
bool localOnlyRequired = false;
char resourceTag[AppResourceDefines::maxStrLen + 1] = "";
uint32_t getMemoryBanks() const { return static_cast<uint32_t>(memoryBanks.to_ulong()); }
uint32_t getTotalBanksCnt() const { return Math::log2(getMemoryBanks()) + 1; }
};
} // namespace NEO