text: /**
   * Copyright 2019 Huawei Technologies Co., Ltd
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  #include "parallel/ops_info/elementary_function_info.h"
  
  namespace mindspore {
  namespace parallel {
  Status PowInfo::InferMirrorOps() {
    mirror_ops_.clear();
  
    Shape tensor_map = inputs_tensor_map_[0];
    std::vector<Group> group;
    if (CreateGroupByTensorMap(tensor_map, &group) != SUCCESS) {
      MS_LOG(ERROR) << name_ << " : Create group failed.";
      return FAILED;
    }
  
    OperatorVector mirror_op;
    OperatorVector op_for_value;
    if (group.empty()) {
      MS_LOG(INFO) << name_ << " : The mirror ops is empty.";
      return SUCCESS;
    } else {
      mirror_op = CreateMirrorOps(group[0].name(), group[0].GetDevNum());
      mirror_ops_.push_back(mirror_op);
      mirror_ops_.push_back(op_for_value);
      std::string group_name = group[0].name();
      MS_LOG(INFO) << name_ << " : Create the mirror ops success, the group name is " << group_name;
    }
  
    return SUCCESS;
  }
  }  // namespace parallel
  }  // namespace mindspore
  