MCPcopy Create free account
hub / github.com/Oneflow-Inc/oneflow / GetInplaceOpBlobArgList

Method GetInplaceOpBlobArgList

oneflow/core/graph/task_graph.cpp:720–756  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

718}
719
720void TaskGraph::GetInplaceOpBlobArgList(
721 InplaceObasInfo* obas_info, const HashSet<TaskNode*>& dev_nodes,
722 const std::function<const TaskNode*(const std::string&)>& TaskNode4OpName) const {
723 auto AddMutableInplaceArgPair = [&](TaskNode* node, const std::string& ibn,
724 const std::string& obn, const std::string& op_name) {
725 if (IsInplaceAllowed(node, {ibn, obn}, TaskNode4OpName)) {
726 auto* pair = obas_info->mut_inplace_oba_pairs.mutable_pair()->Add();
727 *pair->mutable_first() = GenOpBlobArg(op_name, ibn);
728 *pair->mutable_second() = GenOpBlobArg(op_name, obn);
729 }
730 };
731 auto AddConstInplaceArgPair = [&](TaskNode* node, const std::string& ibn, const std::string& obn,
732 const std::string& op_name) {
733 if (IsInplaceAllowed(node, {ibn, obn}, TaskNode4OpName)) {
734 auto* pair = obas_info->con_inplace_oba_pairs.mutable_pair()->Add();
735 *pair->mutable_first() = GenOpBlobArg(op_name, ibn);
736 *pair->mutable_second() = GenOpBlobArg(op_name, obn);
737 }
738 };
739
740 for (TaskNode* task_node : dev_nodes) {
741 if (task_node->exec_gph().node_num() != 1) { continue; }
742 const auto& op = *task_node->exec_gph().SoleNode()->op();
743 for (const std::string& ibn : op.input_bns()) {
744 if (op.InputBlobModifier4Ibn(ibn).is_mutable()) {
745 CHECK(IsInplaceAllowed(task_node, {ibn}, TaskNode4OpName));
746 *obas_info->mut_in_obas.mutable_oba()->Add() = GenOpBlobArg(op.op_name(), ibn);
747 }
748 }
749 for (const auto& pair : task_node->exec_gph().SoleNode()->mut_inplace_obn2ibn()) {
750 AddMutableInplaceArgPair(task_node, pair.second, pair.first, op.op_name());
751 }
752 for (const auto& pair : task_node->exec_gph().SoleNode()->con_inplace_obn2ibn()) {
753 AddConstInplaceArgPair(task_node, pair.second, pair.first, op.op_name());
754 }
755 }
756}
757
758void TaskGraph::GetSafeInplaceOpBlobArgList(
759 InplaceObasInfo* safe_obas_info, const HashSet<TaskNode*>& dev_nodes,

Callers

nothing calls this directly

Calls 6

IsInplaceAllowedFunction · 0.85
GenOpBlobArgFunction · 0.85
node_numMethod · 0.80
SoleNodeMethod · 0.80
AddMethod · 0.45
opMethod · 0.45

Tested by

no test coverage detected