未验证 提交 33e50b27 编写于 作者: H hong 提交者: GitHub

[NewIR]Fix new ir dy2st cache bug (#55703)

* skip inplace check for new ir

* program id combine inner scope pointer
上级 cff7d642
...@@ -300,7 +300,7 @@ inline void RunProgramAPI( ...@@ -300,7 +300,7 @@ inline void RunProgramAPI(
if (attrs.count("is_test")) { if (attrs.count("is_test")) {
is_test = PADDLE_GET_CONST(bool, attrs.at("is_test")); is_test = PADDLE_GET_CONST(bool, attrs.at("is_test"));
} }
auto program_id = PADDLE_GET_CONST(int64_t, attrs.at("program_id")); int64_t program_id = PADDLE_GET_CONST(int64_t, attrs.at("program_id"));
auto place = egr::Controller::Instance().GetExpectedPlace(); auto place = egr::Controller::Instance().GetExpectedPlace();
// NOTE(chenweihang): In order not to add new variable type, use vector // NOTE(chenweihang): In order not to add new variable type, use vector
...@@ -315,6 +315,8 @@ inline void RunProgramAPI( ...@@ -315,6 +315,8 @@ inline void RunProgramAPI(
VLOG(2) << "RunProgramOp use interpretercore to execute program."; VLOG(2) << "RunProgramOp use interpretercore to execute program.";
paddle::framework::Scope *global_inner_scope = out_scope_vec->front(); paddle::framework::Scope *global_inner_scope = out_scope_vec->front();
int64_t scope_i = reinterpret_cast<std::uintptr_t>(global_inner_scope);
program_id += 0x9e3779b9 + (program_id << 6) + (scope_i >> 2);
VLOG(4) << "global_inner_scope:" << global_inner_scope; VLOG(4) << "global_inner_scope:" << global_inner_scope;
...@@ -490,20 +492,21 @@ inline void RunProgramGradAPI( ...@@ -490,20 +492,21 @@ inline void RunProgramGradAPI(
) { ) {
// if all output vars are set to stop_gradient, grad op no need to executed // if all output vars are set to stop_gradient, grad op no need to executed
if (x_grad.empty() && params_grad.empty()) return; if (x_grad.empty() && params_grad.empty()) return;
auto program_id = PADDLE_GET_CONST(int64_t, attrs.at("program_id"));
auto *out_scope_vec = &step_scope; auto *out_scope_vec = &step_scope;
PADDLE_ENFORCE_EQ( PADDLE_ENFORCE_EQ(
out_scope_vec->size(), out_scope_vec->size(),
1, 1,
paddle::platform::errors::InvalidArgument( paddle::platform::errors::InvalidArgument(
"The OutScope of RunProgramGradOp should only hold one scope.")); "The OutScope of RunProgramGradOp should only hold one scope."));
paddle::framework::Scope *global_inner_scope = out_scope_vec->front();
int64_t program_id = PADDLE_GET_CONST(int64_t, attrs.at("program_id"));
int64_t scope_i = reinterpret_cast<std::uintptr_t>(global_inner_scope);
program_id += 0x9e3779b9 + (program_id << 6) + (scope_i >> 2);
auto place = egr::Controller::Instance().GetExpectedPlace(); auto place = egr::Controller::Instance().GetExpectedPlace();
VLOG(2) << "RunProgramGradOp use interpretercore to execute program."; VLOG(2) << "RunProgramGradOp use interpretercore to execute program.";
paddle::framework::Scope *global_inner_scope = out_scope_vec->front();
VLOG(4) << "global_inner_scope:" << global_inner_scope; VLOG(4) << "global_inner_scope:" << global_inner_scope;
auto *forward_global_block = PADDLE_GET_CONST( auto *forward_global_block = PADDLE_GET_CONST(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册