diff --git a/paddle/operators/parallel_do_op.cc b/paddle/operators/parallel_do_op.cc index 67f9854c02fa92d0141463088915e720733306fb..d662878592a178681dbf85a56b2ee17192628e6a 100644 --- a/paddle/operators/parallel_do_op.cc +++ b/paddle/operators/parallel_do_op.cc @@ -79,6 +79,7 @@ inline void CopyOrShare(const framework::Variable &src, } else { Copy(src.Get(), dst_place, dst->GetMutable()); } + dst->set_lod(src.lod()); } else if (src.IsType()) { auto &src_sr = src.Get(); auto *dst_sr = dst->GetMutable(); @@ -89,6 +90,7 @@ inline void CopyOrShare(const framework::Variable &src, } else { Copy(src_sr.value(), dst_place, dst_sr->mutable_value()); } + dst_sr->set_rows(src_sr.rows()); } else { PADDLE_THROW("Expect LoDTensor/SelectedRows, get %s", src.Type().name()); } @@ -145,6 +147,7 @@ class ParallelDoOp : public framework::OperatorBase { auto *sub_scope = sub_scopes[i]; auto *dst = sub_scope->Var(param)->GetMutable(); framework::Copy(src, place, dst); + dst->set_lod(src.lod()); } } WaitOnPlaces(places);