From 8534f600aec33787e4f77feb636554e34af39931 Mon Sep 17 00:00:00 2001 From: "Kim, SungEun" Date: Thu, 16 Jul 2026 13:36:00 +0900 Subject: [PATCH 1/2] fix(gpu): avoid overflow in MoE weight offsets --- .../src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/intel_gpu/src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp b/src/plugins/intel_gpu/src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp index 8d4059d629e7..465cb2f2b465 100644 --- a/src/plugins/intel_gpu/src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp +++ b/src/plugins/intel_gpu/src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp @@ -1105,12 +1105,13 @@ class moe_3gemm_swiglu_opt_impl : public PrimitiveImplOCL { } } // weight shape: [ic, oc], type: u4/i8 - int64_t wei_offset = j * get_bytes_count(dnnl_weights[i].ic * dnnl_weights[i].oc, moe_fusion_wei_addr.weight[i]->get_layout()); + int64_t wei_offset = j * get_bytes_count(static_cast(dnnl_weights[i].ic) * dnnl_weights[i].oc, + moe_fusion_wei_addr.weight[i]->get_layout()); dnnl_weights[i].weight = convert2dnnl(moe_fusion_wei_addr.weight[i], {dnnl_weights[i].ic, dnnl_weights[i].oc}, dnnl::memory::format_tag::ba, wei_offset); // scale shape: [ic / ic_group_size, oc], type: f16 - int64_t scale_offset = j * get_bytes_count(dnnl_weights[i].ic * dnnl_weights[i].oc / dnnl_weights[i].ic_group_size, + int64_t scale_offset = j * get_bytes_count(static_cast(dnnl_weights[i].ic) * dnnl_weights[i].oc / dnnl_weights[i].ic_group_size, moe_fusion_wei_addr.scale[i]->get_layout()); dnnl_weights[i].scale = convert2dnnl(moe_fusion_wei_addr.scale[i], {dnnl_weights[i].ic / dnnl_weights[i].ic_group_size, dnnl_weights[i].oc}, @@ -1120,7 +1121,7 @@ class moe_3gemm_swiglu_opt_impl : public PrimitiveImplOCL { // zp shape: [ic / ic_group_size, oc], type: u4/i8 // Skip ZP memory allocation for symmetric quantization (has_zp=false) to save memory if (cur_moe->_config.has_zp) { - int64_t zp_offset = j * get_bytes_count(dnnl_weights[i].ic * dnnl_weights[i].oc / dnnl_weights[i].ic_group_size, + int64_t zp_offset = j * get_bytes_count(static_cast(dnnl_weights[i].ic) * dnnl_weights[i].oc / dnnl_weights[i].ic_group_size, moe_fusion_wei_addr.zp[i]->get_layout()); dnnl_weights[i].zp = convert2dnnl(moe_fusion_wei_addr.zp[i], {dnnl_weights[i].ic / dnnl_weights[i].ic_group_size, dnnl_weights[i].oc}, From 5d6f0779441eb7832700afe15763131ee7fc0316 Mon Sep 17 00:00:00 2001 From: "Kim, SungEun" Date: Thu, 16 Jul 2026 14:47:26 +0900 Subject: [PATCH 2/2] fix clangformat issue --- .../src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/intel_gpu/src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp b/src/plugins/intel_gpu/src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp index 465cb2f2b465..c1cd3ae36bf9 100644 --- a/src/plugins/intel_gpu/src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp +++ b/src/plugins/intel_gpu/src/graph/impls/ocl_v2/moe/moe_3gemm_swiglu_opt.cpp @@ -1105,8 +1105,8 @@ class moe_3gemm_swiglu_opt_impl : public PrimitiveImplOCL { } } // weight shape: [ic, oc], type: u4/i8 - int64_t wei_offset = j * get_bytes_count(static_cast(dnnl_weights[i].ic) * dnnl_weights[i].oc, - moe_fusion_wei_addr.weight[i]->get_layout()); + int64_t wei_offset = + j * get_bytes_count(static_cast(dnnl_weights[i].ic) * dnnl_weights[i].oc, moe_fusion_wei_addr.weight[i]->get_layout()); dnnl_weights[i].weight = convert2dnnl(moe_fusion_wei_addr.weight[i], {dnnl_weights[i].ic, dnnl_weights[i].oc}, dnnl::memory::format_tag::ba, wei_offset);