diff --git a/rocclr/runtime/device/pal/palresource.cpp b/rocclr/runtime/device/pal/palresource.cpp index 0524ad2c72..09dee8b7fb 100644 --- a/rocclr/runtime/device/pal/palresource.cpp +++ b/rocclr/runtime/device/pal/palresource.cpp @@ -982,12 +982,15 @@ bool Resource::CreatePinned(CreateParams* params) // ================================================================================================ bool Resource::CreateSvm(CreateParams* params, Pal::gpusize svmPtr) { - size_t allocSize = amd::alignUp(desc().width_ * elementSize_, MaxGpuAlignment); - if ((memoryType() == RemoteUSWC) || (memoryType() == Remote)) { + const bool isFineGrain = (memoryType() == RemoteUSWC) || (memoryType() == Remote); + const Pal::gpusize svmAlignment = isFineGrain ? MaxGpuAlignment : + dev().properties().gpuMemoryProperties.fragmentSize; + size_t allocSize = amd::alignUp(desc().width_ * elementSize_, svmAlignment); + if (isFineGrain) { Pal::SvmGpuMemoryCreateInfo createInfo = {}; createInfo.isUsedForKernel = desc_.isAllocExecute_; createInfo.size = allocSize; - createInfo.alignment = MaxGpuAlignment; + createInfo.alignment = svmAlignment; if (svmPtr != 0) { createInfo.flags.useReservedGpuVa = true; createInfo.pReservedGpuVaOwner = params->svmBase_->iMem(); @@ -1001,7 +1004,7 @@ bool Resource::CreateSvm(CreateParams* params, Pal::gpusize svmPtr) else { Pal::GpuMemoryCreateInfo createInfo = {}; createInfo.size = allocSize; - createInfo.alignment = MaxGpuAlignment; + createInfo.alignment = svmAlignment; createInfo.vaRange = Pal::VaRange::Svm; createInfo.priority = Pal::GpuMemPriority::Normal; if (svmPtr != 0) { diff --git a/rocclr/runtime/device/pal/palsettings.cpp b/rocclr/runtime/device/pal/palsettings.cpp index 60d1d30cba..2746439ef8 100644 --- a/rocclr/runtime/device/pal/palsettings.cpp +++ b/rocclr/runtime/device/pal/palsettings.cpp @@ -260,7 +260,7 @@ bool Settings::create(const Pal::DeviceProperties& palProp, ? XCONCAT(OpenCL, XCONCAT(OPENCL_MAJOR, OPENCL_MINOR)) : OpenCL12; } - if ((OPENCL_VERSION < 200) || IS_LINUX) { + if (OPENCL_VERSION < 200) { oclVersion_ = OpenCL12; } numComputeRings_ = 8; diff --git a/rocclr/runtime/platform/memory.cpp b/rocclr/runtime/platform/memory.cpp index 1cf25008f5..90a2432212 100644 --- a/rocclr/runtime/platform/memory.cpp +++ b/rocclr/runtime/platform/memory.cpp @@ -75,7 +75,7 @@ Memory::Memory(Context& context, Type type, Flags flags, size_t size, void* svmP forceSysMemAlloc_(false), mapCount_(0), svmHostAddress_(svmPtr), - svmPtrCommited_(false), + svmPtrCommited_(flags & CL_MEM_SVM_FINE_GRAIN_BUFFER ? true : false), canBeCached_(true), lockMemoryOps_("Memory Ops Lock", true) {}