From 620e847884456bf6fccd8038605b08042427bf10 Mon Sep 17 00:00:00 2001 From: baihuawei Date: Thu, 3 Dec 2020 15:54:09 +0800 Subject: [PATCH] fix cpu issues --- .../kernel_compiler/cpu/mkldnn/mkl_cpu_kernel.cc | 13 ++++++------- .../ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc | 3 ++- mindspore/ops/__init__.py | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/mkldnn/mkl_cpu_kernel.cc b/mindspore/ccsrc/backend/kernel_compiler/cpu/mkldnn/mkl_cpu_kernel.cc index e2728d1702..085d618ee2 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/mkldnn/mkl_cpu_kernel.cc +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/mkldnn/mkl_cpu_kernel.cc @@ -38,16 +38,15 @@ void MKLCPUKernel::GetPadding(const CNodePtr &kernel_node, const std::string &pa for (size_t i = 0; i < weight_height.size(); ++i) { auto wh = weight_height[i]; int re = wh % stride; + int pad_along; if (re == 0) { - re = stride; - } - int pad = kernel_size[i] - re; - padding_l->emplace_back(pad / 2); - if (pad % 2 == 0) { - padding_r->emplace_back(pad / 2); + pad_along = std::max(SizeToInt(kernel_size[i]) - stride, 0); } else { - padding_r->emplace_back(pad / 2 + 1); + pad_along = std::max(SizeToInt(kernel_size[i]) - re, 0); } + int pad = pad_along / 2; + padding_l->emplace_back(pad); + padding_r->emplace_back(pad_along - pad); } } else if (pad_mode == PAD_MODE_LOWER_VALID || pad_mode == PAD_MODE_UPPER_VALID) { MS_LOG(INFO) << "pad valid"; diff --git a/mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc b/mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc index 54ac40791e..92de80a462 100644 --- a/mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc +++ b/mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc @@ -252,7 +252,8 @@ void CPUKernelRuntime::BindInputTensorAddressPtr(const session::KernelGraph &ker MS_EXCEPTION_IF_NULL(address); MS_EXCEPTION_IF_NULL(tensor); if (tensor_address != nullptr && tensor_address != address && - std::dynamic_pointer_cast(tensor_address)->DeviceType() != DeviceAddressType::kCPU) { + (std::dynamic_pointer_cast(tensor_address)->DeviceType() != DeviceAddressType::kCPU || + AnfAlgo::IsParameterWeight(item->cast()))) { tensor->data_sync(false); } if (GetTypeByte(TypeIdToType(tensor->data_type())) == GetTypeByte(TypeIdToType(address->type_id_))) { diff --git a/mindspore/ops/__init__.py b/mindspore/ops/__init__.py index b12f0b4a5b..fd150ce3ce 100644 --- a/mindspore/ops/__init__.py +++ b/mindspore/ops/__init__.py @@ -21,7 +21,7 @@ Examples: >>> import mindspore.ops as ops """ -from .primitive import Primitive, PrimitiveWithInfer, prim_attr_register +from .primitive import Primitive, PrimitiveWithInfer, PrimitiveWithCheck, prim_attr_register from .vm_impl_registry import get_vm_impl_fn, vm_impl_registry from .op_info_register import op_info_register, AkgGpuRegOp, AkgAscendRegOp, AiCPURegOp, TBERegOp, DataType from .primitive import constexpr @@ -32,7 +32,7 @@ from .operations import * from .functional import * __primitive__ = [ - "prim_attr_register", "Primitive", "PrimitiveWithInfer", "signature" + "prim_attr_register", "Primitive", "PrimitiveWithInfer", "PrimitiveWithCheck", "signature" ] __all__ = ["get_vm_impl_fn", "vm_impl_registry",