|
|
@ -21,16 +21,19 @@ namespace framework {
|
|
|
|
VarDescBind *BlockDescBind::Var(const std::string &name) {
|
|
|
|
VarDescBind *BlockDescBind::Var(const std::string &name) {
|
|
|
|
need_update_ = true;
|
|
|
|
need_update_ = true;
|
|
|
|
auto it = vars_.find(name);
|
|
|
|
auto it = vars_.find(name);
|
|
|
|
PADDLE_ENFORCE(it == vars_.end(), "Duplicated variable %s", name);
|
|
|
|
if (it != vars_.end()) {
|
|
|
|
auto var = new VarDescBind(name);
|
|
|
|
return it->secon.get();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
auto *var = new VarDescBind(name);
|
|
|
|
vars_[name].reset(var);
|
|
|
|
vars_[name].reset(var);
|
|
|
|
return var;
|
|
|
|
return var;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
VarDescBind *BlockDescBind::FindVar(const std::string &name) const {
|
|
|
|
VarDescBind *BlockDescBind::FindVar(const std::string &name) const {
|
|
|
|
auto it = vars_.find(name);
|
|
|
|
auto it = vars_.find(name);
|
|
|
|
PADDLE_ENFORCE(it != vars_.end(),
|
|
|
|
if (it == vars_.end()) {
|
|
|
|
"Can not find variable %s in current block.", name);
|
|
|
|
return nullptr;
|
|
|
|
|
|
|
|
}
|
|
|
|
return it->second.get();
|
|
|
|
return it->second.get();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|