@@ -413,6 +413,7 @@ void Tracer::TraceOp(const std::string& type,
413
413
std::map<phi::DenseTensor*, std::shared_ptr<phi::Allocation>>
414
414
need_backup_inputs2holder;
415
415
std::map<phi::DenseTensor*, phi::DDim> need_backup_inputs2strides;
416
+ std::map<phi::DenseTensor*, size_t > need_backup_inputs2offset;
416
417
if (FLAGS_use_stride_kernel) {
417
418
for (auto & iter : inplace_map) {
418
419
auto inputs_iter = ins.find (iter.first );
@@ -431,6 +432,7 @@ void Tracer::TraceOp(const std::string& type,
431
432
->GetMutable <phi::DenseTensor>();
432
433
need_backup_inputs2holder[dense_tensor] = dense_tensor->Holder ();
433
434
need_backup_inputs2strides[dense_tensor] = dense_tensor->strides ();
435
+ need_backup_inputs2offset[dense_tensor] = dense_tensor->offset ();
434
436
}
435
437
}
436
438
}
@@ -449,9 +451,11 @@ void Tracer::TraceOp(const std::string& type,
449
451
for (auto & iter : need_backup_inputs2outputs) {
450
452
iter.first ->ResetHolder (need_backup_inputs2holder[iter.first ]);
451
453
iter.first ->set_strides (need_backup_inputs2strides[iter.first ]);
454
+ iter.first ->set_offset (need_backup_inputs2offset[iter.first ]);
452
455
paddle::experimental::TransStrideLegacy (dev_ctx, iter.second , iter.first );
453
456
iter.second ->ResetHolder (need_backup_inputs2holder[iter.first ]);
454
457
iter.second ->set_strides (need_backup_inputs2strides[iter.first ]);
458
+ iter.second ->set_offset (need_backup_inputs2offset[iter.first ]);
455
459
}
456
460
} else {
457
461
TraceOpImpl<egr::EagerVariable>(type,
0 commit comments