Skip to content

Commit b7cba51

Browse files
fix: Do not increase host USM alignment when CAL enabled
Resolves: GSD-10808 Signed-off-by: Lukasz Jobczyk <[email protected]>
1 parent 417932d commit b7cba51

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

opencl/test/unit_test/memory_manager/unified_memory_manager_tests.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,26 @@ TEST_F(UnifiedMemoryManagerPropertiesTest,
855855
svmManager->freeSVMAlloc(ptr);
856856
}
857857

858+
TEST_F(UnifiedMemoryManagerPropertiesTest,
859+
givenCALAndSizeGreaterThan2mbWhenDiscretGpuAndCreateHostUSMThenDoNotAlignSizeAndVATo2mb) {
860+
DebugManagerStateRestore restorer;
861+
debugManager.flags.NEO_CAL_ENABLED.set(1);
862+
863+
RootDeviceIndicesContainer rootDeviceIndices = {mockRootDeviceIndex};
864+
std::map<uint32_t, DeviceBitfield> deviceBitfields{{mockRootDeviceIndex, DeviceBitfield(0x1)}};
865+
SVMAllocsManager::UnifiedMemoryProperties unifiedMemoryProperties(InternalMemoryType::hostUnifiedMemory, 1, rootDeviceIndices, deviceBitfields);
866+
867+
svmManager->multiOsContextSupport = true;
868+
auto ptr = svmManager->createHostUnifiedMemoryAllocation(4 * MemoryConstants::pageSize2M + MemoryConstants::pageSize64k, unifiedMemoryProperties);
869+
870+
auto allocation = svmManager->getSVMAlloc(ptr);
871+
872+
EXPECT_EQ(4 * MemoryConstants::pageSize2M + MemoryConstants::pageSize64k, allocation->gpuAllocations.getDefaultGraphicsAllocation()->getUnderlyingBufferSize());
873+
EXPECT_TRUE(isAligned(allocation->gpuAllocations.getDefaultGraphicsAllocation()->getGpuAddress(), MemoryConstants::pageSize));
874+
875+
svmManager->freeSVMAlloc(ptr);
876+
}
877+
858878
TEST_F(UnifiedMemoryManagerPropertiesTest,
859879
given1ByteAsAllocationSizeWhenHostMemAllocIsCreatedItIsAlignedTo4k) {
860880
RootDeviceIndicesContainer rootDeviceIndices = {mockRootDeviceIndex};

shared/source/memory_manager/unified_memory_manager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ void *SVMAllocsManager::createSVMAlloc(size_t size, const SvmAllocationPropertie
298298
void *SVMAllocsManager::createHostUnifiedMemoryAllocation(size_t size,
299299
const UnifiedMemoryProperties &memoryProperties) {
300300
bool isDiscrete = false;
301-
if (size >= MemoryConstants::pageSize2M) {
301+
if (size >= MemoryConstants::pageSize2M && !debugManager.flags.NEO_CAL_ENABLED.get()) {
302302
for (const auto rootDeviceIndex : memoryProperties.rootDeviceIndices) {
303303
isDiscrete |= !this->memoryManager->peekExecutionEnvironment().rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo()->capabilityTable.isIntegratedDevice;
304304
if (isDiscrete) {

0 commit comments

Comments
 (0)