|
|
|
@ -36,6 +36,9 @@
|
|
|
|
|
#include "model/ge_model.h"
|
|
|
|
|
#include "graph/shape_refiner.h"
|
|
|
|
|
#include "graph/opsproto_manager.h"
|
|
|
|
|
#include "inc/pass_manager.h"
|
|
|
|
|
#include "graph/passes/net_output_pass.h"
|
|
|
|
|
#include "graph/passes/data_pass.h"
|
|
|
|
|
|
|
|
|
|
using std::string;
|
|
|
|
|
using namespace std;
|
|
|
|
@ -233,6 +236,7 @@ class Impl {
|
|
|
|
|
ModelBufferData &ge_models);
|
|
|
|
|
graphStatus InitDomiOmgContext(const string &input_shape, const string &input_format, const string &net_format,
|
|
|
|
|
bool is_dynamic_input);
|
|
|
|
|
static graphStatus InferShapePrepare(const ComputeGraphPtr &compute_graph);
|
|
|
|
|
void SetRtSocVersion();
|
|
|
|
|
void UpdateThreadContext();
|
|
|
|
|
void LoadOpsProto();
|
|
|
|
@ -243,6 +247,22 @@ class Impl {
|
|
|
|
|
OmgContext omg_context_;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static graphStatus InferShapePrepare(const ComputeGraphPtr &compute_graph) {
|
|
|
|
|
GE_CHECK_NOTNULL(compute_graph);
|
|
|
|
|
|
|
|
|
|
PassManager prepare_infershape;
|
|
|
|
|
prepare_infershape.AddPass("PrepareNetoutput", new(std::nothrow) NetOutputPass);
|
|
|
|
|
prepare_infershape.AddPass("PrepareSubGraphReflection", new (std::nothrow) DataPass);
|
|
|
|
|
|
|
|
|
|
auto ret = prepare_infershape.Run(compute_graph);
|
|
|
|
|
if ((ret != SUCCESS) && (ret != NOT_CHANGED)) {
|
|
|
|
|
GELOGE(ret, "Prepair for infershape failed, ret:%d", ret);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
GELOGD("Prepair for infershape success!");
|
|
|
|
|
return GRAPH_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
graphStatus Impl::UpdateDataOpAttr(const Graph &graph) {
|
|
|
|
|
GELOGD("Enter Update Data Attr Process!");
|
|
|
|
|
if (options_.find(kInputShape) == options_.end()) {
|
|
|
|
@ -591,7 +611,12 @@ graphStatus aclgrphInferShapeAndType(ge::Graph &graph) {
|
|
|
|
|
return GRAPH_PARAM_INVALID;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
auto ret = compute_graph->TopologicalSorting();
|
|
|
|
|
auto ret = Impl::InferShapePrepare(root_graph);
|
|
|
|
|
if (ret != GRAPH_SUCCESS) {
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ret = compute_graph->TopologicalSorting();
|
|
|
|
|
if (ret != GRAPH_SUCCESS) {
|
|
|
|
|
GELOGE(ret, "Acl topo logical sort failed.");
|
|
|
|
|
return ret;
|
|
|
|
|