!19531 workaround for bprop specialize before fprop is specialized

Merge pull request !19531 from xychow/workaround-for-bprop-specialize
This commit is contained in:
i-robot 2021-07-07 07:30:05 +00:00 committed by Gitee
commit b4ed7172dc
1 changed files with 15 additions and 0 deletions

View File

@ -573,6 +573,21 @@ std::pair<AbstractBasePtrList, AbstractBasePtr> FuncGraphSpecializer::BuildFromB
real->SetValue(joined_argvals, joined_eval_result);
evalcaches_[eval] = real;
return std::make_pair(joined_argvals, joined_eval_result->abstract());
} else {
bool all_args_tensor = std::all_of(broaded_argvals.cbegin(), broaded_argvals.cend(),
[](const AbstractBasePtr &v) { return v->isa<AbstractTensor>(); });
if (all_args_tensor) {
ConfigPtrList args_conf_list;
(void)std::transform(broaded_argvals.cbegin(), broaded_argvals.cend(), std ::back_inserter(args_conf_list),
[](const AbstractBasePtr &v) -> ConfigPtr { return std::make_shared<VirtualConfig>(v); });
MS_LOG(WARNING) << "Cannot find joined argvals in cache, run with broaded argsvals: " << broaded_argvals.size()
<< ", " << ::mindspore::ToString(broaded_argvals);
ret = eval->SingleRun(engine_, args_conf_list, nullptr);
MS_EXCEPTION_IF_NULL(ret);
real->SetValue(broaded_argvals, ret);
evalcaches_[eval] = real;
return std::make_pair(broaded_argvals, ret->abstract());
}
}
}
MS_LOG(DEBUG) << "Choices.size: " << choices.size();