diff --git a/paddle/framework/mixed_vector.h b/paddle/framework/mixed_vector.h index d86899bc6310a17b03f6a9189d1639617710cf21..aade7d839181ee1741f30298f32a06ffc746292f 100644 --- a/paddle/framework/mixed_vector.h +++ b/paddle/framework/mixed_vector.h @@ -54,7 +54,7 @@ class Vector : public std::vector { CopyToCUDA(); PADDLE_ENFORCE_NOT_NULL( cuda_ptr_, "No data or Insufficient CUDA memory to allocation"); - return static_cast(cuda_ptr_); + return static_cast(cuda_ptr_.get()); } /* Get host vector */ @@ -127,7 +127,7 @@ void Vector::CopyToCUDA() { #ifdef PADDLE_WITH_CUDA if (cuda_size_ < this->size() || cuda_ptr_ == nullptr) { cuda_ptr_.reset( - memory::Alloc(this->size() * sizeof(T)), + memory::Alloc(place_, this->size() * sizeof(T)), memory::PlainDeleter(place_)); } cuda_size_ = this->size(); diff --git a/paddle/operators/parallel_do_op.cc b/paddle/operators/parallel_do_op.cc index d662878592a178681dbf85a56b2ee17192628e6a..87678decde14c07f1f98bb8d56624d90c47c729c 100644 --- a/paddle/operators/parallel_do_op.cc +++ b/paddle/operators/parallel_do_op.cc @@ -79,7 +79,7 @@ inline void CopyOrShare(const framework::Variable &src, } else { Copy(src.Get(), dst_place, dst->GetMutable()); } - dst->set_lod(src.lod()); + dst->GetMutable()->set_lod(src.Get().lod()); } else if (src.IsType()) { auto &src_sr = src.Get(); auto *dst_sr = dst->GetMutable();