|
|
|
@ -421,7 +421,7 @@ Status GraphMemoryAssigner::AssignContinuousInputMemory(const ge::NodePtr &node,
|
|
|
|
|
GE_IF_BOOL_EXEC(is_peer_output_continuous && (peer_output_size != 1),
|
|
|
|
|
std::string error = "Current op" + FmtToStr(node->GetOpDesc()->GetName()) +
|
|
|
|
|
" requires continuous input, while the previous op" + FmtToStr(peer_op_desc->GetName()) +
|
|
|
|
|
" requires reference. There may be conflict between the two. This node is not supported now.";
|
|
|
|
|
" requires continuous output. There may be conflict between the two. This node is not supported now.";
|
|
|
|
|
GE_ERRORLOG_AND_ERRORMSG(FAILED, error.c_str());
|
|
|
|
|
return PARAM_INVALID;);
|
|
|
|
|
|
|
|
|
@ -431,7 +431,7 @@ Status GraphMemoryAssigner::AssignContinuousInputMemory(const ge::NodePtr &node,
|
|
|
|
|
GE_IF_BOOL_EXEC(is_peer_reference,
|
|
|
|
|
std::string error = "Current op" + FmtToStr(node->GetOpDesc()->GetName()) +
|
|
|
|
|
" requires continuous input, while the previous op" + FmtToStr(peer_op_desc->GetName()) +
|
|
|
|
|
" requires reference. There may be conflict between the two. This node is not supported now.";
|
|
|
|
|
" requires continuous output. There may be conflict between the two. This node is not supported now.";
|
|
|
|
|
GE_ERRORLOG_AND_ERRORMSG(FAILED, error.c_str());
|
|
|
|
|
return PARAM_INVALID;);
|
|
|
|
|
|
|
|
|
@ -626,8 +626,8 @@ Status GraphMemoryAssigner::ReAssignReuseAndNoPaddingContinuousInputMemory() {
|
|
|
|
|
if (attr_reuse && attr_continuous) {
|
|
|
|
|
if (op_desc->GetOutputsSize() != kVirtualInputNodeOutputSize) {
|
|
|
|
|
// When current virtual node has several outputs, can't directly determine which input is the tensor for reuse.
|
|
|
|
|
std::string error = "Only one input is supported, current virtual node" + FmtToStr(n->GetName()) +
|
|
|
|
|
" has " + FmtToStr(op_desc->GetOutputsSize()) + " inputs.";
|
|
|
|
|
std::string error = "Only one output is supported, current virtual node" + FmtToStr(n->GetName()) +
|
|
|
|
|
" has " + FmtToStr(op_desc->GetOutputsSize()) + " outputs.";
|
|
|
|
|
GE_ERRORLOG_AND_ERRORMSG(FAILED, error.c_str());
|
|
|
|
|
return FAILED;
|
|
|
|
|
}
|
|
|
|
@ -805,7 +805,7 @@ Status GraphMemoryAssigner::ReAssignReuseAndNoPaddingContinuousOutputMemory() {
|
|
|
|
|
size_t pos = current_node_full_name.find(kMbatchNodeNameFlag);
|
|
|
|
|
if (pos == string::npos) {
|
|
|
|
|
std::string error = "Cannot find key string" + FmtToStr(kMbatchNodeNameFlag) +
|
|
|
|
|
" of multi-batch in name of virtual output node, node name is " + FmtToStr(n->GetName());
|
|
|
|
|
" of multi-batch in name of virtual output node, the node name is " + FmtToStr(n->GetName());
|
|
|
|
|
GE_ERRORLOG_AND_ERRORMSG(FAILED, error.c_str());
|
|
|
|
|
return FAILED;
|
|
|
|
|
}
|
|
|
|
@ -975,7 +975,7 @@ Status GraphMemoryAssigner::FilterAtomicNodesForMemoryAssign(map<NodePtr, vector
|
|
|
|
|
(void) ge::AttrUtils::GetBool(peer_in_node_desc, ATTR_NAME_REFERENCE, is_reference);
|
|
|
|
|
if (is_reference) {
|
|
|
|
|
std::string error = "Op" + FmtToStr(peer_in_node_desc->GetName()) +
|
|
|
|
|
"cannot have both atomic and is_reference attribute.";
|
|
|
|
|
" cannot have both atomic and is_reference attribute.";
|
|
|
|
|
GE_ERRORLOG_AND_ERRORMSG(FAILED, error.c_str());
|
|
|
|
|
return ge::PARAM_INVALID;
|
|
|
|
|
}
|
|
|
|
@ -1264,7 +1264,7 @@ Status GraphMemoryAssigner::AssignOrdinaryAtomicWorkspaceMemory(const ge::OpDesc
|
|
|
|
|
for (auto iter = workspace_info.begin(); iter != workspace_info.end(); ++iter) {
|
|
|
|
|
if (op_desc->GetName() != iter->first) {
|
|
|
|
|
std::string error = "The node name" + FmtToStr(op_desc->GetName()) +
|
|
|
|
|
"and the node name" + FmtToStr(iter->first) + " in workspace info are inconsistent.";
|
|
|
|
|
" and the node name" + FmtToStr(iter->first) + " in workspace info are inconsistent.";
|
|
|
|
|
GE_ERRORLOG_AND_ERRORMSG(ge::PARAM_INVALID, error.c_str());
|
|
|
|
|
return ge::PARAM_INVALID;
|
|
|
|
|
}
|
|
|
|
@ -1278,7 +1278,7 @@ Status GraphMemoryAssigner::AssignOrdinaryAtomicWorkspaceMemory(const ge::OpDesc
|
|
|
|
|
auto workspace_size = info_iter.second;
|
|
|
|
|
if (workspace_index >= workspace_vector.size()) {
|
|
|
|
|
std::string error = "The workspace index" + FmtToStr(workspace_index) +
|
|
|
|
|
"is more than the size" + FmtToStr(workspace_vector.size()) + " of workspace vector.";
|
|
|
|
|
" is more than the size" + FmtToStr(workspace_vector.size()) + " of workspace vector.";
|
|
|
|
|
GE_ERRORLOG_AND_ERRORMSG(ge::PARAM_INVALID, error.c_str());
|
|
|
|
|
return ge::PARAM_INVALID;
|
|
|
|
|
}
|
|
|
|
@ -1451,7 +1451,7 @@ ge::Status GraphMemoryAssigner::UpdateConstArgsOffset(const NodePtr &node, vecto
|
|
|
|
|
const auto parent_inputs = parent_desc->GetInputOffset();
|
|
|
|
|
if (parent_inputs.size() <= parent_index) {
|
|
|
|
|
std::string error = "Get Parent input offset failed, node is " + FmtToStr(node->GetName()) +
|
|
|
|
|
+ ", input_size is" + FmtToStr(parent_inputs.size()) + ", parent index is" +
|
|
|
|
|
+ ", input_size is " + FmtToStr(parent_inputs.size()) + ", parent index is " +
|
|
|
|
|
FmtToStr(parent_index);
|
|
|
|
|
GE_ERRORLOG_AND_ERRORMSG(FAILED, error.c_str());
|
|
|
|
|
return FAILED;
|
|
|
|
@ -1699,7 +1699,7 @@ ge::Status GraphMemoryAssigner::GetNodeMemoryType(const NodePtr &node, int64_t &
|
|
|
|
|
if (mem_type_list.empty()) {
|
|
|
|
|
if (memory_offset_.find(memory_type) == memory_offset_.end()) {
|
|
|
|
|
std::string error = "Memory offset map does not have memory type" + FmtToStr(memory_type) +
|
|
|
|
|
+ ", opname is" + FmtToStr(node->GetName()) + ", optype is " + FmtToStr(node->GetType());
|
|
|
|
|
+ ", opname is " + FmtToStr(node->GetName()) + ", optype is " + FmtToStr(node->GetType());
|
|
|
|
|
GE_ERRORLOG_AND_ERRORMSG(FAILED, error.c_str());
|
|
|
|
|
return FAILED;
|
|
|
|
|
}
|
|
|
|
@ -1732,7 +1732,8 @@ bool GraphMemoryAssigner::CheckContinuousMemType(vector<int64_t> mem_type_list)
|
|
|
|
|
for (auto mem_type : mem_type_list) {
|
|
|
|
|
if (mem_type != mem_type_tmp) {
|
|
|
|
|
std::string error = "The memory is continuous, but the type of the input memory is inconsistent. They are " +
|
|
|
|
|
FmtToStr(mem_type_tmp) + "and " + FmtToStr(mem_type);
|
|
|
|
|
FmtToStr(mem_type_tmp) + " and " + FmtToStr(mem_type);
|
|
|
|
|
ErrorManager::GetInstance().ATCReportErrMessage("E10043", {"reason"}, {error});
|
|
|
|
|
GELOGW("The memory is continuous, but the type of the input memory is inconsistent. They are [%ld] and [%ld].",
|
|
|
|
|
mem_type_tmp, mem_type);
|
|
|
|
|
return false;
|
|
|
|
|