Skip to content

Commit 83b942f

Browse files
fix set value inplace strided bug (#56892)
1 parent e2af9d5 commit 83b942f

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

paddle/fluid/imperative/tracer.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,7 @@ void Tracer::TraceOp(const std::string& type,
413413
std::map<phi::DenseTensor*, std::shared_ptr<phi::Allocation>>
414414
need_backup_inputs2holder;
415415
std::map<phi::DenseTensor*, phi::DDim> need_backup_inputs2strides;
416+
std::map<phi::DenseTensor*, size_t> need_backup_inputs2offset;
416417
if (FLAGS_use_stride_kernel) {
417418
for (auto& iter : inplace_map) {
418419
auto inputs_iter = ins.find(iter.first);
@@ -431,6 +432,7 @@ void Tracer::TraceOp(const std::string& type,
431432
->GetMutable<phi::DenseTensor>();
432433
need_backup_inputs2holder[dense_tensor] = dense_tensor->Holder();
433434
need_backup_inputs2strides[dense_tensor] = dense_tensor->strides();
435+
need_backup_inputs2offset[dense_tensor] = dense_tensor->offset();
434436
}
435437
}
436438
}
@@ -449,9 +451,11 @@ void Tracer::TraceOp(const std::string& type,
449451
for (auto& iter : need_backup_inputs2outputs) {
450452
iter.first->ResetHolder(need_backup_inputs2holder[iter.first]);
451453
iter.first->set_strides(need_backup_inputs2strides[iter.first]);
454+
iter.first->set_offset(need_backup_inputs2offset[iter.first]);
452455
paddle::experimental::TransStrideLegacy(dev_ctx, iter.second, iter.first);
453456
iter.second->ResetHolder(need_backup_inputs2holder[iter.first]);
454457
iter.second->set_strides(need_backup_inputs2strides[iter.first]);
458+
iter.second->set_offset(need_backup_inputs2offset[iter.first]);
455459
}
456460
} else {
457461
TraceOpImpl<egr::EagerVariable>(type,

0 commit comments

Comments
 (0)