From 644fc9421c0091b716b95cc0a8a7afa35bb06fc4 Mon Sep 17 00:00:00 2001 From: Sourabh Betigeri Date: Wed, 12 Oct 2022 12:34:52 -0700 Subject: [PATCH] SWDEV-361730 - Fix to match the kernel arg allocation sizes between gpu visible mem and host/runtime mem Change-Id: I6495aa57e97b46373c1d90cc230435780fdcf3ef [ROCm/clr commit: b2665ccc4b8bf885efe13d97463f5ad5c4022cca] --- projects/clr/rocclr/device/pal/palkernel.cpp | 5 +++-- projects/clr/rocclr/device/rocm/rocvirtual.cpp | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/clr/rocclr/device/pal/palkernel.cpp b/projects/clr/rocclr/device/pal/palkernel.cpp index c9bd217fbd..19c6d9fe79 100644 --- a/projects/clr/rocclr/device/pal/palkernel.cpp +++ b/projects/clr/rocclr/device/pal/palkernel.cpp @@ -409,7 +409,7 @@ hsa_kernel_dispatch_packet_t* HSAILKernel::loadArguments(VirtualGPU& gpu, const } break; case amd::KernelParameterDescriptor::HiddenRemainderX: - WriteAqlArgAt(hidden_arguments, static_cast(global[0] % local[0]), + WriteAqlArgAt(hidden_arguments, static_cast(global[0] % local[0]), it.size_, it.offset_); break; case amd::KernelParameterDescriptor::HiddenRemainderY: @@ -447,7 +447,8 @@ hsa_kernel_dispatch_packet_t* HSAILKernel::loadArguments(VirtualGPU& gpu, const // Load all kernel arguments if (signature.version() == kernel.signature().version()) { - memcpy(aqlArgBuf, parameters, argsBufferSize()); + memcpy(aqlArgBuf, parameters, std::min(static_cast(argsBufferSize()), + signature.paramsSize())); } // hsa_kernel_dispatch_packet_t disp; diff --git a/projects/clr/rocclr/device/rocm/rocvirtual.cpp b/projects/clr/rocclr/device/rocm/rocvirtual.cpp index 9f0d2b9c75..7e74db32a6 100644 --- a/projects/clr/rocclr/device/rocm/rocvirtual.cpp +++ b/projects/clr/rocclr/device/rocm/rocvirtual.cpp @@ -2964,7 +2964,8 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, argBuffer = reinterpret_cast
(allocKernArg(gpuKernel.KernargSegmentByteSize(), gpuKernel.KernargSegmentAlignment())); // Load all kernel arguments - memcpy(argBuffer, parameters, gpuKernel.KernargSegmentByteSize()); + memcpy(argBuffer, parameters, std::min(gpuKernel.KernargSegmentByteSize(), + signature.paramsSize())); } // Check for group memory overflow