|
|
|
@@ -58,28 +58,7 @@ class MetaFuncGraph : public FuncGraphBase { |
|
|
|
const std::vector<Signature> &signatures() const { return signatures_; } |
|
|
|
void set_signatures(const std::vector<Signature> &signatures) { signatures_ = signatures; } |
|
|
|
// Generate a Graph for the given abstract arguments. |
|
|
|
virtual FuncGraphPtr GenerateFuncGraph(const abstract::AbstractBasePtrList &args_spec_list) { |
|
|
|
TypePtrList types; |
|
|
|
(void)std::transform(args_spec_list.begin(), args_spec_list.end(), std::back_inserter(types), |
|
|
|
[](const AbstractBasePtr &arg) -> TypePtr { |
|
|
|
MS_EXCEPTION_IF_NULL(arg); |
|
|
|
return arg->BuildType(); |
|
|
|
}); |
|
|
|
// filter unsafe characters in log print since name_ is from outside |
|
|
|
auto iter = cache_.find(types); |
|
|
|
if (iter == cache_.end()) { |
|
|
|
FuncGraphPtr fg = GenerateFromTypes(types); |
|
|
|
MS_EXCEPTION_IF_NULL(fg); |
|
|
|
MS_LOG(INFO) << "MetaFuncgraph: cache miss for types: " << mindspore::ToString(args_spec_list) |
|
|
|
<< ", g: " << fg->ToString(); |
|
|
|
cache_[types] = fg; |
|
|
|
return fg; |
|
|
|
} else { |
|
|
|
MS_LOG(DEBUG) << "MetaFuncgraph: cache hit for types: " << mindspore::ToString(args_spec_list) |
|
|
|
<< ", g: " << iter->second->ToString(); |
|
|
|
return iter->second; |
|
|
|
} |
|
|
|
} |
|
|
|
virtual FuncGraphPtr GenerateFuncGraph(const abstract::AbstractBasePtrList &args_spec_list); |
|
|
|
|
|
|
|
// Generate a Graph for this type signature. |
|
|
|
virtual FuncGraphPtr GenerateFromTypes(const TypePtrList &) { |
|
|
|
|