You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
But the scope pointer is used in the operator as follows:
class OpContext {
public:
Scope* scope;
DeviceContext* device_context;
};
In the recurrent operator, we want to create a new local scope with a global parent scope. The global parent scope is passed by the network. There is a potential danger. If the local scope is released, reference count of parent scope will be decrease to zero, then the parent scope, namely global scope, will be released too. We can simply test this case in the scope_test.cc as follows. There will be an error.
TEST(Scope, Parent) {
using paddle::framework::Scope;
using paddle::framework::Variable;
// auto parent_scope = std::make_shared<Scope>();
Scope* parent_scope = new Scope();
Variable* var0 = parent_scope->CreateVariable("a");
EXPECT_NE(var0, nullptr);
{
auto scope = std::make_shared<Scope>(std::shared_ptr<Scope>(parent_scope));
/// GetVariable will get Variable from parent scope if exist.
Variable* var1 = scope->GetVariable("a");
EXPECT_EQ(var0, var1);
} // the scope will be released
Variable* var2 = parent_scope->GetVariable("a");
EXPECT_EQ(var0, var2);
}
The text was updated successfully, but these errors were encountered:
qingqing01
changed the title
The usage problem of parent scope in the scope design.
The usage of parent scope in the scope design.
Jul 10, 2017
The scope has a parent scope with
shared_ptr
type and has a constructor for it:But the scope pointer is used in the operator as follows:
In the recurrent operator, we want to create a new local scope with a global parent scope. The global parent scope is passed by the network. There is a potential danger. If the local scope is released, reference count of parent scope will be decrease to zero, then the parent scope, namely global scope, will be released too. We can simply test this case in the
scope_test.cc
as follows. There will be an error.The text was updated successfully, but these errors were encountered: