From 4c860f41fddd3e09c6b721bc16e7b5f78dfdb346 Mon Sep 17 00:00:00 2001 From: Alex Xie Date: Tue, 31 Oct 2023 20:12:36 -0400 Subject: [PATCH] SWDEV-430062 - Support GPU_MAX_HEAP_SIZE flag in ROCm Change-Id: Ibfe82b3524e09c61879b988f23512f394d725024 [ROCm/clr commit: 4fb9f03f9eac3d92bf3ee19e890057a8471732d2] --- projects/clr/rocclr/device/rocm/rocdevice.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/clr/rocclr/device/rocm/rocdevice.cpp b/projects/clr/rocclr/device/rocm/rocdevice.cpp index 2bf54b0432..4003401c0e 100644 --- a/projects/clr/rocclr/device/rocm/rocdevice.cpp +++ b/projects/clr/rocclr/device/rocm/rocdevice.cpp @@ -1308,7 +1308,8 @@ bool Device::populateOCLDeviceConstants() { } assert(global_segment_size > 0); - info_.globalMemSize_ = static_cast(global_segment_size); + info_.globalMemSize_ = (static_cast(std::min(GPU_MAX_HEAP_SIZE, 100u)) * + static_cast(global_segment_size)) / 100u; // For APU with vram size <= 512MiB, use a smaller single alloc percentage if (info_.globalMemSize_ <= 536870912) { @@ -1344,6 +1345,9 @@ bool Device::populateOCLDeviceConstants() { info_.globalMemSize_ = uint64_t(sysconf(_SC_PAGESIZE)) * uint64_t(sysconf(_SC_PHYS_PAGES)) / 2; info_.globalMemSize_ = std::max(info_.globalMemSize_, uint64_t(1 * Gi)); + info_.globalMemSize_ = (static_cast(std::min(GPU_MAX_HEAP_SIZE, 100u)) * + static_cast(info_.globalMemSize_)) / 100u; + info_.maxMemAllocSize_ = uint64_t(info_.globalMemSize_ * std::min(GPU_SINGLE_ALLOC_PERCENT, 100u) / 100u);