|
|
|
@ -41,7 +41,6 @@
|
|
|
|
|
#include "backend/session/anf_runtime_algorithm.h"
|
|
|
|
|
#include "runtime/device/ascend/profiling/profiling_utils.h"
|
|
|
|
|
#include "backend/kernel_compiler/tbe/tbe_utils.h"
|
|
|
|
|
#include "backend/optimizer/common/helper.h"
|
|
|
|
|
#include "runtime/device/ascend/ascend_memory_manager.h"
|
|
|
|
|
#include "debug/tensor_load.h"
|
|
|
|
|
#include "debug/data_dump/dump_json_parser.h"
|
|
|
|
@ -114,34 +113,6 @@ std::string GetRankId() {
|
|
|
|
|
}
|
|
|
|
|
return rank_id_str;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void InferShapeForNopNode(AnfNodePtr *input_node) {
|
|
|
|
|
MS_EXCEPTION_IF_NULL(*input_node);
|
|
|
|
|
if (!opt::IsNopNode(*input_node)) {
|
|
|
|
|
MS_LOG(INFO) << "Input node is not a nop node, no need infer.";
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
MS_LOG(INFO) << "Infer shape for nop node.";
|
|
|
|
|
std::stack<AnfNodePtr> nop_road;
|
|
|
|
|
nop_road.push(*input_node);
|
|
|
|
|
|
|
|
|
|
while (true) {
|
|
|
|
|
auto input_node_with_idx = AnfAlgo::GetPrevNodeOutput(*input_node, 0);
|
|
|
|
|
auto in_node = input_node_with_idx.first;
|
|
|
|
|
MS_EXCEPTION_IF_NULL(in_node);
|
|
|
|
|
if (opt::IsNopNode(in_node)) {
|
|
|
|
|
nop_road.push(in_node);
|
|
|
|
|
*input_node = in_node;
|
|
|
|
|
} else {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
while (!nop_road.empty()) {
|
|
|
|
|
auto nop_node = nop_road.top();
|
|
|
|
|
AnfAlgo::InferShape(nop_node->cast<CNodePtr>());
|
|
|
|
|
nop_road.pop();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
|
|
std::vector<rtExceptionInfo> AscendKernelRuntime::exception_infoes_;
|
|
|
|
@ -665,15 +636,6 @@ bool AscendKernelRuntime::RunDynamicKernelAsync(const session::KernelGraph *grap
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (dynamic_kernel->is_dynamic_shape()) {
|
|
|
|
|
auto kernel_node = dynamic_kernel->kernel_node();
|
|
|
|
|
MS_EXCEPTION_IF_NULL(kernel_node);
|
|
|
|
|
auto input_size = AnfAlgo::GetInputTensorNum(kernel_node);
|
|
|
|
|
for (size_t i = 0; i < input_size; i++) {
|
|
|
|
|
auto input_node_with_index = AnfAlgo::GetPrevNodeOutput(kernel_node, i);
|
|
|
|
|
auto input_node = input_node_with_index.first;
|
|
|
|
|
MS_EXCEPTION_IF_NULL(input_node);
|
|
|
|
|
InferShapeForNopNode(&input_node);
|
|
|
|
|
}
|
|
|
|
|
dynamic_kernel->InferShape();
|
|
|
|
|
dynamic_kernel->UpdateArgs();
|
|
|
|
|
}
|
|
|
|
|