Browse Source

!11179 revert dynamic op re primitive when infer

From: @liubuyu
Reviewed-by: @zhoufeng54,@kisnwang
Signed-off-by: @kisnwang
tags/v1.2.0-rc1
mindspore-ci-bot Gitee 5 years ago
parent
commit
e805d06499
11 changed files with 45 additions and 64 deletions
  1. +8
    -0
      mindspore/_extends/parallel_compile/tbe_compiler/tbe_process.py
  2. +1
    -7
      mindspore/ccsrc/backend/session/anf_runtime_algorithm.cc
  3. +0
    -6
      mindspore/ccsrc/pipeline/pynative/pynative_execute.cc
  4. +0
    -7
      mindspore/ccsrc/runtime/device/executor/dynamic_kernel.cc
  5. +12
    -12
      mindspore/core/abstract/infer_functions.h
  6. +9
    -9
      mindspore/core/abstract/prim_arrays.cc
  7. +3
    -3
      mindspore/core/abstract/prim_maths.cc
  8. +6
    -6
      mindspore/core/abstract/prim_others.cc
  9. +6
    -6
      mindspore/core/abstract/primitive_infer_map.cc
  10. +0
    -2
      mindspore/core/abstract/utils.h
  11. +0
    -6
      mindspore/core/base/core_ops.h

+ 8
- 0
mindspore/_extends/parallel_compile/tbe_compiler/tbe_process.py View File

@@ -19,9 +19,11 @@ import subprocess
import sys
import os
import json
from mindspore import log as logger
from .common import check_kernel_info, TBEException
from .helper import _op_select_format, _check_supported


def create_tbe_parallel_process():
"""
create TBEParallelCompiler object
@@ -31,6 +33,7 @@ def create_tbe_parallel_process():
"""
return tbe_process


def op_select_format(op_json: str):
"""
call op's op_select_format to get op supported format
@@ -75,6 +78,7 @@ def check_supported(op_json: str):

return ret


def run_compiler(op_json):
"""
run compiler to compile op with subprocess
@@ -96,6 +100,7 @@ def run_compiler(op_json):
except subprocess.CalledProcessError as e:
return "TBEException", "ERROR:\n" + e.stdout + "\n" + e.stderr + "\ninput_args: " + op_json


class TbeProcess:
"""tbe process"""

@@ -106,9 +111,11 @@ class TbeProcess:
process_num = os.getenv("MS_BUILD_PROCESS_NUM")
if process_num is None:
self.max_processes_num = 24
logger.info(f"Using default compile process num {self.max_processes_num}")
elif process_num.isdigit():
if int(process_num) in range(1, 25):
self.max_processes_num = int(process_num)
logger.info(f"Using custom compile process num {self.max_processes_num}")
else:
raise EnvironmentError(
f"Env ERROR, [MS_BUILD_PROCESS_NUM] should be in range(1, 25), but: {process_num}")
@@ -177,4 +184,5 @@ class TbeProcess:
if self.__running_tasks:
self.__running_tasks.clear()


tbe_process = TbeProcess()

+ 1
- 7
mindspore/ccsrc/backend/session/anf_runtime_algorithm.cc View File

@@ -1636,13 +1636,7 @@ void AnfRuntimeAlgorithm::InferShape(const CNodePtr &node) {
args_spec_list.emplace_back(real_input->abstract());
}
}
auto prim_name = primitive->name();
if (DynamicShapeConstInputToAttr.find(prim_name) != DynamicShapeConstInputToAttr.end()) {
auto attrs = primitive->attrs();
auto new_prim_name = "Dynamic" + prim_name;
primitive = std::make_shared<Primitive>(new_prim_name);
primitive->SetAttrs(attrs);
}

auto &prim_eval_implement_map = abstract::GetPrimitiveToEvalImplMap();
auto ret = prim_eval_implement_map.find(primitive);
if (ret == prim_eval_implement_map.end()) {


+ 0
- 6
mindspore/ccsrc/pipeline/pynative/pynative_execute.cc View File

@@ -771,12 +771,6 @@ void PynativeExecutor::GetOpOutputAbstract(const OpExecInfoPtr &op_exec_info,
MS_EXCEPTION_IF_NULL(py_shape);
auto py_shape_info = py_shape->ToString();
if (py_shape_info.find("-1") != string::npos) {
if (DynamicShapeConstInputToAttr.find(op_name) != DynamicShapeConstInputToAttr.end()) {
auto new_prim_name = "Dynamic" + op_name;
auto attrs = prim->attrs();
prim = std::make_shared<PrimitivePy>(new_prim_name, py::object());
prim->SetAttrs(attrs);
}
auto c_abstract = abstract::CppInferShape(prim, args_spec_list);
MS_EXCEPTION_IF_NULL(c_abstract);
auto c_shape = c_abstract->BuildShape();


+ 0
- 7
mindspore/ccsrc/runtime/device/executor/dynamic_kernel.cc View File

@@ -124,13 +124,6 @@ void DynamicKernel::InferShape() {
args_spec_list.emplace_back(real_input->abstract());
}
}
auto prim_name = primitive->name();
if (DynamicShapeConstInputToAttr.find(prim_name) != DynamicShapeConstInputToAttr.end()) {
auto new_prim_name = "Dynamic" + prim_name;
auto attrs = primitive->attrs();
primitive = std::make_shared<Primitive>(new_prim_name);
primitive->SetAttrs(attrs);
}

auto eval_result = abstract::CppInferShape(primitive, args_spec_list);
cnode_ptr_->set_abstract(eval_result);


+ 12
- 12
mindspore/core/abstract/infer_functions.h View File

@@ -251,30 +251,30 @@ AbstractBasePtr InferImplReduceScatter(const AnalysisEnginePtr &, const Primitiv
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplSGD(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplDynamicTranspose(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplDynamicReshape(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplTranspose(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplReshape(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplMemCpyAsync(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplDynamicEmbeddingLookup(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplEmbeddingLookup(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplSub(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplEqual(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplDynamicReduceSum(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplDynamicCast(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplReduceSum(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplCast(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplMinimum(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplDivNoNan(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplLinSpace(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplDynamicExpandDims(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplExpandDims(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplGpuConvertToDynamicShape(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list);
AbstractBasePtr InferImplPad(const AnalysisEnginePtr &, const PrimitivePtr &primitive,


+ 9
- 9
mindspore/core/abstract/prim_arrays.cc View File

@@ -658,9 +658,9 @@ AbstractBasePtr InferImplDynamicAssign(const AnalysisEnginePtr &, const Primitiv
}
}

AbstractBasePtr InferImplDynamicEmbeddingLookup(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name().substr(kDynamic);
AbstractBasePtr InferImplEmbeddingLookup(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name();
CheckArgsSize(op_name, args_spec_list, 2);
auto params = CheckArg<AbstractTensor>(op_name, args_spec_list, 0);
auto params_shp = params->shape();
@@ -754,9 +754,9 @@ AbstractBasePtr InferImplZerosLike(const AnalysisEnginePtr &, const PrimitivePtr
return std::make_shared<AbstractTensor>(input_x->element(), output_shape);
}

AbstractBasePtr InferImplDynamicTranspose(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string &op_name = primitive->name().substr(kDynamic);
AbstractBasePtr InferImplTranspose(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string &op_name = primitive->name();
AbstractTensorPtr input = CheckArg<AbstractTensor>(op_name, args_spec_list, 0);
auto input_shp = input->shape()->shape();
ValuePtr perm = primitive->GetAttr("perm");
@@ -781,9 +781,9 @@ AbstractBasePtr InferImplDynamicTranspose(const AnalysisEnginePtr &, const Primi
return std::make_shared<AbstractTensor>(input->element(), std::make_shared<Shape>(result_shp, min_shp, max_shp));
}

AbstractBasePtr InferImplDynamicReshape(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name().substr(kDynamic);
AbstractBasePtr InferImplReshape(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name();
auto x = CheckArg<AbstractTensor>(op_name, args_spec_list, 0);
MS_EXCEPTION_IF_NULL(x);
MS_EXCEPTION_IF_NULL(x->shape());


+ 3
- 3
mindspore/core/abstract/prim_maths.cc View File

@@ -121,9 +121,9 @@ AbstractBasePtr InferImplEqual(const AnalysisEnginePtr &, const PrimitivePtr &pr
return ret;
}

AbstractBasePtr InferImplDynamicReduceSum(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name().substr(kDynamic);
AbstractBasePtr InferImplReduceSum(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name();
CheckArgsSize(op_name, args_spec_list, 1);
auto input_x = CheckArg<AbstractTensor>(op_name, args_spec_list, 0);
MS_EXCEPTION_IF_NULL(input_x);


+ 6
- 6
mindspore/core/abstract/prim_others.cc View File

@@ -479,9 +479,9 @@ AbstractBasePtr InferImplMemCpyAsync(const AnalysisEnginePtr &, const PrimitiveP
return std::make_shared<AbstractTensor>(x->element(), std::make_shared<Shape>(x->shape()->shape()));
}

AbstractBasePtr InferImplDynamicCast(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name().substr(kDynamic);
AbstractBasePtr InferImplCast(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name();
// GPU has 2 inputs while tbe has 1 only. Skip CheckArgsSize.
auto input_x = CheckArg<AbstractTensor>(op_name, args_spec_list, 0);
MS_EXCEPTION_IF_NULL(input_x);
@@ -491,9 +491,9 @@ AbstractBasePtr InferImplDynamicCast(const AnalysisEnginePtr &, const PrimitiveP
return ret;
}

AbstractBasePtr InferImplDynamicExpandDims(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name().substr(kDynamic);
AbstractBasePtr InferImplExpandDims(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
const AbstractBasePtrList &args_spec_list) {
const std::string op_name = primitive->name();
CheckArgsSize(op_name, args_spec_list, 1);
auto x = CheckArg<AbstractTensor>(op_name, args_spec_list, 0);
MS_EXCEPTION_IF_NULL(x);


+ 6
- 6
mindspore/core/abstract/primitive_infer_map.cc View File

@@ -44,7 +44,7 @@ PrimitiveEvalImplMap &GetPrimitiveToEvalImplMap() {
{prim::kPrimSqrtGrad, {InferImplSqrtGrad, true}},
{prim::kPrimSub, {InferImplSub, true}},
{prim::kPrimEqual, {InferImplEqual, true}},
{prim::kPrimDynamicReduceSum, {InferImplDynamicReduceSum, true}},
{prim::kPrimReduceSum, {InferImplReduceSum, true}},
{prim::kPrimMinimum, {InferImplMinimum, true}},
{prim::kPrimDivNoNan, {InferImplDivNoNan, true}},
{prim::kPrimLinSpace, {InferImplLinSpace, true}},
@@ -59,7 +59,7 @@ PrimitiveEvalImplMap &GetPrimitiveToEvalImplMap() {
{prim::kPrimUniqueGrad, {InferImplUniqueGrad, true}},
{prim::kPrimGatherV2, {InferImplGatherV2, true}},
{prim::kPrimSparseGatherV2, {InferImplGatherV2, true}},
{prim::kPrimDynamicEmbeddingLookup, {InferImplDynamicEmbeddingLookup, true}},
{prim::kPrimEmbeddingLookup, {InferImplEmbeddingLookup, true}},
{prim::kPrimUnsortedSegmentSum, {InferImplUnsortedSegmentSum, true}},
{prim::kPrimUnsortedSegmentMax, {InferImplUnsortedSegmentMax, true}},
{prim::kPrimUnsortedSegmentMin, {InferImplUnsortedSegmentMin, true}},
@@ -76,8 +76,8 @@ PrimitiveEvalImplMap &GetPrimitiveToEvalImplMap() {
{prim::kPrimRealDiv, {InferImplRealDiv, true}},
{prim::kPrimShape, {InferImplShape, false}},
{prim::kPrimDynamicShape, {InferImplDynamicShape, true}},
{prim::kPrimDynamicTranspose, {InferImplDynamicTranspose, true}},
{prim::kPrimDynamicReshape, {InferImplDynamicReshape, true}},
{prim::kPrimTranspose, {InferImplTranspose, true}},
{prim::kPrimReshape, {InferImplReshape, true}},
{prim::kPrimMapUniform, {InferImplMapUniform, true}},
{prim::kPrimSplit, {InferImplSplit, true}},
{prim::kPrimSequenceMask, {InferImplSequenceMask, true}},
@@ -157,8 +157,8 @@ PrimitiveEvalImplMap &GetPrimitiveToEvalImplMap() {
{prim::kPrimAllSwap, {InferImplAllSwap, true}},
{prim::kPrimReduceScatter, {InferImplReduceScatter, true}},
{prim::kPrimMemCpyAsync, {InferImplMemCpyAsync, true}},
{prim::kPrimDynamicCast, {InferImplDynamicCast, true}},
{prim::kPrimDynamicExpandDims, {InferImplDynamicExpandDims, true}},
{prim::kPrimCast, {InferImplCast, true}},
{prim::kPrimExpandDims, {InferImplExpandDims, true}},
};
return prim_eval_implement_map;
}


+ 0
- 2
mindspore/core/abstract/utils.h View File

@@ -29,8 +29,6 @@
#include "utils/shape_utils.h"

namespace mindspore {
// length of string "dynamic"
const int kDynamic = 7;
namespace abstract {
ValuePtr ValueJoin(const ValuePtr &value1, const ValuePtr &value2);
TypePtr TypeJoin(const TypePtr &type1, const TypePtr &type2);


+ 0
- 6
mindspore/core/base/core_ops.h View File

@@ -80,12 +80,6 @@ inline const PrimitivePtr kPrimBroadcastShape = std::make_shared<Primitive>("bro
inline const PrimitivePtr kPrimArrayMap = std::make_shared<Primitive>("array_map");
inline const PrimitivePtr kPrimArrayReduce = std::make_shared<Primitive>("array_reduce");
inline const PrimitivePtr kPrimCast = std::make_shared<Primitive>("Cast");
inline const PrimitivePtr kPrimDynamicCast = std::make_shared<Primitive>("DynamicCast");
inline const PrimitivePtr kPrimDynamicReshape = std::make_shared<Primitive>("DynamicReshape");
inline const PrimitivePtr kPrimDynamicReduceSum = std::make_shared<Primitive>("DynamicReduceSum");
inline const PrimitivePtr kPrimDynamicTranspose = std::make_shared<Primitive>("DynamicTranspose");
inline const PrimitivePtr kPrimDynamicExpandDims = std::make_shared<Primitive>("DynamicExpandDims");
inline const PrimitivePtr kPrimDynamicEmbeddingLookup = std::make_shared<Primitive>("DynamicEmbeddingLookup");
inline const PrimitivePtr kPrimConcat = std::make_shared<Primitive>("Concat");
inline const PrimitivePtr kPrimSqueeze = std::make_shared<Primitive>("Squeeze");
inline const PrimitivePtr kPrimTranspose = std::make_shared<Primitive>("Transpose");


Loading…
Cancel
Save