|
|
|
@ -48,6 +48,7 @@ const char *const kVectorEngine = "VectorEngine";
|
|
|
|
|
const char *const kAIcoreEngine = "AIcoreEngine";
|
|
|
|
|
const char *const kFileNameSuffix = "online";
|
|
|
|
|
const char *const kAicpuAllshape = "_AllShape";
|
|
|
|
|
constexpr char const *kAttrSupportDynamicShape = "support_dynamicshape";
|
|
|
|
|
const int64_t kDynamicDimValue = -2;
|
|
|
|
|
|
|
|
|
|
std::map<ge::OpEngineType, std::string> engine_type_map{
|
|
|
|
@ -620,6 +621,26 @@ namespace {
|
|
|
|
|
}
|
|
|
|
|
return is_need;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Status CheckDynamicSupport(GeModelPtr &ge_model, const ComputeGraphPtr &graph) {
|
|
|
|
|
bool support_dynamic = true;
|
|
|
|
|
for (const auto &node : graph->GetDirectNode()) {
|
|
|
|
|
GE_CHECK_NOTNULL(node);
|
|
|
|
|
if (node->GetType() == DATA || node->GetType() == CONSTANT || node->GetType() == CONSTANTOP ||
|
|
|
|
|
node->GetType() == NETOUTPUT) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
auto op_desc = node->GetOpDesc();
|
|
|
|
|
GE_CHECK_NOTNULL(op_desc);
|
|
|
|
|
(void)AttrUtils::GetBool(op_desc, kAttrSupportDynamicShape, is_dynamic);
|
|
|
|
|
if (!is_dynamic) {
|
|
|
|
|
GELOGW("Node[%s] doesn't support dynamic shape.", node->GetName().c_str());
|
|
|
|
|
(void)AttrUtils::SetBool(ge_model, kAttrSupportDynamicShape, false);
|
|
|
|
|
return SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Status GeGenerator::CheckForSingleOp(OpDescPtr &op_desc, const vector<GeTensor> &inputs,
|
|
|
|
@ -694,7 +715,9 @@ Status GeGenerator::BuildSingleOp(OpDescPtr &op_desc, const vector<GeTensor> &in
|
|
|
|
|
GELOGE(PARAM_INVALID, "GetSubgraphInstanceNameToModel is empty.");
|
|
|
|
|
return PARAM_INVALID;
|
|
|
|
|
}
|
|
|
|
|
const ComputeGraphPtr root_graph = ge_root_model->GetRootGraph();
|
|
|
|
|
GeModelPtr &ge_model = name_to_ge_model.begin()->second;
|
|
|
|
|
E_CHK_STATUS_RET_NOLOG(CheckDynamicSupport(ge_model, root_graph));
|
|
|
|
|
GELOGD("The opType in op_desc_tmp is [%s]", op_desc_tmp->GetType().c_str());
|
|
|
|
|
|
|
|
|
|
bool all_shape = false;
|
|
|
|
|