diff --git a/rocclr/device/rocm/rocdevice.cpp b/rocclr/device/rocm/rocdevice.cpp index 287ece39b5..eacb2f4467 100644 --- a/rocclr/device/rocm/rocdevice.cpp +++ b/rocclr/device/rocm/rocdevice.cpp @@ -1245,6 +1245,13 @@ bool Device::populateOCLDeviceConstants() { assert(global_segment_size > 0); info_.globalMemSize_ = static_cast(global_segment_size); + // For APU with vram size <= 512MiB, use a smaller single alloc percentage + if (info_.globalMemSize_ <= 536870912) { + if (flagIsDefault(GPU_SINGLE_ALLOC_PERCENT)) { + GPU_SINGLE_ALLOC_PERCENT = 75; + } + } + gpuvm_segment_max_alloc_ = uint64_t(info_.globalMemSize_ * std::min(GPU_SINGLE_ALLOC_PERCENT, 100u) / 100u); assert(gpuvm_segment_max_alloc_ > 0);