mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 17:20:26 +08:00
Add new colouring policy
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
dc9bcb99c9
commit
7392b5fb8d
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user