2021-06-22mindspore代码标注4

本文详细解读了MindSpore C++库中pipeline/jit目录下的parsedate_couversion.cc文件的代码,涵盖了关键函数和逻辑流程。
摘要由CSDN通过智能技术生成

mindsporemindsporeccsrcpipelinejitparsedate_couversion.cc代码标注4

ValuePtr ConvertFuncGraph(const py::object &obj) {//转变函数图
  MS_LOG(DEBUG) << "Converting FuncGraph object";//输入......
  auto func_graph = obj.cast<FuncGraphPtr>();//变量声明
  if (func_graph == nullptr) {//如果func_graph为空,执行循环体
    MS_LOG(ERROR) << "Resolve FuncGraph error, get ptr is null";//输出......
    return nullptr;//返回值
  }
  auto new_fg = BasicClone(func_graph);
  new_fg->set_attr("is_load", MakeValue(true));//指针调用一个函数
  return new_fg;//返回值
}

ValuePtr ConvertSlice(const py::object &obj) {//转换片
  MS_LOG(DEBUG) << "Converting slice object";//输出......
  auto slice_obj = obj.cast<py::slice>();//变量声明,并调用cast函数把返回值赋给这个这个变量
  auto convert_func = [obj](const std::string &attr) -> ValuePtr {//变量声明,并用指针把ValuePtr值赋给这个这个变量
    auto py_attr = py::getattr(obj, attr.c_str());//变量声明
    if (py::isinstance<py::none>(py_attr)) {
      return kNone;//返回值
    }
    if (py::isinstance<py::int_>(py_attr)) {
      auto value = py::cast<int64_t>(py_attr);//变量声明,并进行初始化,将右边变量的值赋给左边
      return MakeValue(value);//返回值
    }
    MS_LOG(EXCEPTION) << "Slice should contain only int64_t or none";//输出......
  };
  ValuePtr start = convert_func("start");//初始化变量
  ValuePtr stop = convert_func("stop");//初始化变量
  ValuePtr step = convert_func("step");//初始化变量
  return std::make_shared<ValueSlice>(start, stop, step);//返回值
}

ValuePtr ConvertCellObjToFuncGraph(const py::object &obj) {
  FuncGraphPtr func_graph = ConvertToFuncGraph(obj);
  if (func_graph == nullptr) {//如果func_graph为空,则执行方法体
    MS_LOG(ERROR) << "Parse resolve function error.";//输出....
    return nullptr;
  }
  // if the cell object has specified bprop, it has user-defined bprop function parse and record it
  if (py::hasattr(obj, CUSTOM_BPROP_NAME)) {
    bool enable_bprop_debug = py
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值