diff --git a/hipamd/src/hip_graph_internal.hpp b/hipamd/src/hip_graph_internal.hpp index 76077f5792..51f0b59a0a 100644 --- a/hipamd/src/hip_graph_internal.hpp +++ b/hipamd/src/hip_graph_internal.hpp @@ -685,7 +685,8 @@ class hipGraphKernelNode : public hipGraphNode { } void GetParams(hipKernelNodeParams* params) { - std::memcpy(params, pKernelParams_, sizeof(hipKernelNodeParams)); + *params = *pKernelParams_; + } hipError_t SetParams(const hipKernelNodeParams* params) { @@ -695,6 +696,13 @@ class hipGraphKernelNode : public hipGraphNode { ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "[hipGraph] Failed to validateKernelParams"); return status; } + if (pKernelParams_ && ((pKernelParams_->kernelParams + && pKernelParams_->kernelParams == params->kernelParams) + || (pKernelParams_->extra && pKernelParams_->extra == params->extra))) { + // params is copied from pKernelParams_ and then updated, so just copy it back + *pKernelParams_ = *params; + return status; + } freeParams(); pKernelParams_ = new hipKernelNodeParams(*params); status = copyParams(params);