correct codes according to commit

This commit is contained in:
lvliang 2021-05-18 17:00:32 +08:00 committed by chujinjin
parent 32da2cea42
commit 110e776424
4 changed files with 18 additions and 24 deletions

View File

@ -361,13 +361,7 @@ void DFunctor::ReplaceEquivdout(const CNodePtr &cnode, const CNodePtr &cnode_mor
auto func_graph = GetValueNode<FuncGraphPtr>(input_fg);
MS_EXCEPTION_IF_NULL(func_graph);
auto manager = Manage({fg, func_graph}, false);
auto need_replace_forward = true;
auto forward_value = GenNewTensor(manager, equivdout, forward, need_replace_forward);
if (!need_replace_forward) {
cnode_morph->clear_inputs_value();
MS_LOG(DEBUG) << "No need replace forward result";
return;
}
auto forward_value = GenNewTensor(manager, equivdout, forward, true);
MS_LOG(DEBUG) << "Replace: " << equivdout->ToString() << " with " << forward;
auto value_node = NewValueNode(forward_value);
value_node->set_has_new_value(true);
@ -406,7 +400,7 @@ void DFunctor::ReplaceEquivdout(const CNodePtr &cnode, const CNodePtr &cnode_mor
}
auto out_node = c_input->cast<ValueNodePtr>();
MS_EXCEPTION_IF_NULL(out_node);
out_node->set_value(GenNewTensor(manager, out_node, out_node->value(), need_replace_forward));
out_node->set_value(GenNewTensor(manager, out_node, out_node->value(), true));
}
bool DFunctor::IsFreeMorphism(const AnfNodePtr &node) {

View File

@ -33,8 +33,8 @@ static const std::set<std::string> unchanged_named_primitive = {parse::NAMED_PRI
parse::NAMED_PRIMITIVE_NAMECONSTANT,
parse::NAMED_PRIMITIVE_NUM, parse::NAMED_PRIMITIVE_STR};
std::string DynamicAnalysis::ParseNodeName(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node,
parse::AstMainType type) {
std::string DynamicParser::ParseNodeName(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node,
parse::AstMainType type) {
MS_EXCEPTION_IF_NULL(ast);
if (py::isinstance<py::none>(node)) {
MS_LOG(DEBUG) << "Get none type node!";
@ -53,7 +53,7 @@ std::string DynamicAnalysis::ParseNodeName(const std::shared_ptr<parse::ParseAst
return node_name;
}
void DynamicAnalysis::ParseInputArgs(const std::shared_ptr<parse::ParseAst> &ast, const py::object &fn_node) {
void DynamicParser::ParseInputArgs(const std::shared_ptr<parse::ParseAst> &ast, const py::object &fn_node) {
MS_EXCEPTION_IF_NULL(ast);
py::list args = ast->GetArgs(fn_node);
for (size_t i = 1; i < args.size(); i++) {
@ -63,7 +63,7 @@ void DynamicAnalysis::ParseInputArgs(const std::shared_ptr<parse::ParseAst> &ast
}
}
bool DynamicAnalysis::ParseIfWhileExprNode(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node) {
bool DynamicParser::ParseIfWhileExprNode(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node) {
MS_LOG(DEBUG) << "Parse if/while expr";
py::object test_node = parse::python_adapter::GetPyObjAttr(node, parse::NAMED_PRIMITIVE_TEST);
const auto &node_name = ParseNodeName(ast, test_node, parse::AST_MAIN_TYPE_EXPR);
@ -112,7 +112,7 @@ bool DynamicAnalysis::ParseIfWhileExprNode(const std::shared_ptr<parse::ParseAst
return false;
}
bool DynamicAnalysis::ParseAssignExprNode(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node) {
bool DynamicParser::ParseAssignExprNode(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node) {
MS_LOG(DEBUG) << "Parse assign expr";
py::object value_node = parse::python_adapter::GetPyObjAttr(node, parse::NAMED_PRIMITIVE_VALUE);
const auto &node_name = ParseNodeName(ast, value_node, parse::AST_MAIN_TYPE_EXPR);
@ -140,8 +140,8 @@ bool DynamicAnalysis::ParseAssignExprNode(const std::shared_ptr<parse::ParseAst>
return false;
}
bool DynamicAnalysis::ParseAugAssignExprNode(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node,
const std::vector<std::string> &compare_prim) {
bool DynamicParser::ParseAugAssignExprNode(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node,
const std::vector<std::string> &compare_prim) {
MS_LOG(DEBUG) << "Parse augassign expr";
bool ret = false;
if (compare_prim.empty()) {
@ -168,7 +168,7 @@ bool DynamicAnalysis::ParseAugAssignExprNode(const std::shared_ptr<parse::ParseA
return ret;
}
bool DynamicAnalysis::ParseForExprNode(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node) {
bool DynamicParser::ParseForExprNode(const std::shared_ptr<parse::ParseAst> &ast, const py::object &node) {
MS_LOG(DEBUG) << "Parse for expr";
py::object body_node = parse::python_adapter::GetPyObjAttr(node, parse::NAMED_PRIMITIVE_BODY);
if (py::isinstance<py::none>(body_node)) {
@ -188,8 +188,8 @@ bool DynamicAnalysis::ParseForExprNode(const std::shared_ptr<parse::ParseAst> &a
return false;
}
bool DynamicAnalysis::ParseBodyContext(const std::shared_ptr<parse::ParseAst> &ast, const py::object &fn_node,
const std::vector<std::string> &compare_prim) {
bool DynamicParser::ParseBodyContext(const std::shared_ptr<parse::ParseAst> &ast, const py::object &fn_node,
const std::vector<std::string> &compare_prim) {
MS_EXCEPTION_IF_NULL(ast);
py::object func_obj = parse::python_adapter::GetPyObjAttr(fn_node, parse::NAMED_PRIMITIVE_BODY);
if (py::isinstance<py::none>(func_obj)) {
@ -220,7 +220,7 @@ bool DynamicAnalysis::ParseBodyContext(const std::shared_ptr<parse::ParseAst> &a
return ret;
}
std::string DynamicAnalysis::GetCellInfo(const py::object &cell) {
std::string DynamicParser::GetCellInfo(const py::object &cell) {
if (py::isinstance<Cell>(cell)) {
auto c_cell = py::cast<CellPtr>(cell);
MS_EXCEPTION_IF_NULL(c_cell);
@ -230,7 +230,7 @@ std::string DynamicAnalysis::GetCellInfo(const py::object &cell) {
return "";
}
bool DynamicAnalysis::IsDynamicCell(const py::object &cell) {
bool DynamicParser::IsDynamicCell(const py::object &cell) {
std::string cell_info = GetCellInfo(cell);
if (ignore_judge_dynamic_cell.find(cell_info) != ignore_judge_dynamic_cell.end()) {
return false;

View File

@ -26,10 +26,10 @@
namespace mindspore::parse {
class DynamicAnalysis {
class DynamicParser {
public:
DynamicAnalysis() = default;
~DynamicAnalysis() = default;
DynamicParser() = default;
~DynamicParser() = default;
// Check cell struct
static bool IsDynamicCell(const py::object &cell);

View File

@ -1971,7 +1971,7 @@ void GradExecutor::NewGraphInner(py::object *ret, const py::object &cell, const
InitResourceAndDfBuilder(cell_id, args);
// Check whether cell has dynamic construct
if (!top_cell()->is_dynamic()) {
bool is_dynamic = parse::DynamicAnalysis::IsDynamicCell(cell);
bool is_dynamic = parse::DynamicParser::IsDynamicCell(cell);
MS_LOG(DEBUG) << "Current cell dynamic " << is_dynamic;
if (is_dynamic) {
top_cell()->set_is_dynamic(is_dynamic);