diff --git a/mindspore/ccsrc/backend/kernel_compiler/hccl/hccl_kernel.cc b/mindspore/ccsrc/backend/kernel_compiler/hccl/hccl_kernel.cc index 5b955f2013..36c36ce4ab 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/hccl/hccl_kernel.cc +++ b/mindspore/ccsrc/backend/kernel_compiler/hccl/hccl_kernel.cc @@ -64,7 +64,7 @@ HcclKernelFactory &HcclKernelFactory::Get() { return _this; } -HcclKernel::HcclKernel() : hccl_count_(0), op_type_(HCCL_REDUCE_SUM), root_id_(0) {} +HcclKernel::HcclKernel() : hccl_count_(0), op_type_(HCCL_REDUCE_SUM), root_id_(0), receive_type_(0) {} HcclKernel::~HcclKernel() { hccl_kernel_input_shape_list_.clear(); diff --git a/mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc b/mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc index 9e32675e1f..865bd2f8ea 100644 --- a/mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc +++ b/mindspore/ccsrc/runtime/device/cpu/cpu_kernel_runtime.cc @@ -197,20 +197,18 @@ tensor::TensorPtr CPUKernelRuntime::CreatTensorForOutput( } } tensor->set_device_address(address); - if (bound_addresses_.find(address) != bound_addresses_.end()) { - tensor->set_sync_status(kNeedSyncDeviceToHostImmediately); - } else { + if (bound_addresses_.find(address) == bound_addresses_.end()) { if (infer_type_id != device_type_id) { size_t type_size = GetTypeByte(TypeIdToType(device_type_id)); ShapeVector data_shape = tensor->shape(); size_t tensor_size = std::accumulate(data_shape.begin(), data_shape.end(), type_size, std::multiplies()); address->ptr_ = static_cast(mem_manager_.get())->StaticMemMalloc(tensor_size); - tensor->set_sync_status(kNeedSyncDeviceToHostImmediately); } else { - tensor->set_sync_status(kNoNeedSync); + address->ptr_ = nullptr; } (void)bound_addresses_.insert(address); } + tensor->set_sync_status(kNeedSyncDeviceToHostImmediately); session::KernelWithIndex node_index(node, index); tensor->SetNeedWait(true); tensor->SetIsGraphOutput(); @@ -330,7 +328,7 @@ void CPUKernelRuntime::BindOutputTensorAddressPtr(const VectorRef *outputs) { continue; } auto address_ptr = std::dynamic_pointer_cast(address); - if (tensor->sync_status() == kNoNeedSync) { + if (address_ptr->ptr_ == nullptr || tensor->sync_status() == kNoNeedSync) { address_ptr->ptr_ = tensor->data_c(); } address_ptr->ref_count_ = INIT_NODE_REF;