Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Oneflow-Inc
oneflow
提交
4dc5918e
O
oneflow
项目概览
Oneflow-Inc
/
oneflow
上一次同步 2 年多
通知
13
Star
2733
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oneflow
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4dc5918e
编写于
3月 31, 2017
作者:
W
willzhang4a58
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Get Relalted Register/Edge
上级
eb80f68a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
20 addition
and
17 deletion
+20
-17
oneflow/graph/comp_task_node.cpp
oneflow/graph/comp_task_node.cpp
+6
-6
oneflow/graph/in_boxing_task_node.cpp
oneflow/graph/in_boxing_task_node.cpp
+4
-4
oneflow/graph/task_node.cpp
oneflow/graph/task_node.cpp
+3
-2
oneflow/graph/task_node.h
oneflow/graph/task_node.h
+7
-5
未找到文件。
oneflow/graph/comp_task_node.cpp
浏览文件 @
4dc5918e
...
...
@@ -143,18 +143,18 @@ void CompTaskNode::FwSetRegisterPtrs4ExecNodes(
for
(
const
auto
&
pair
:
extern_in_lbn2consumers
)
{
const
std
::
string
&
lbn
=
pair
.
first
;
for
(
ExecNode
*
consumer
:
pair
.
second
)
{
consumer
->
AddConsumedLbnRegiPair
(
lbn
,
SoleInEdge
()
->
register_desc
(
));
consumer
->
AddConsumedLbnRegiPair
(
lbn
,
GetRelatedRegister
(
SoleInEdge
()
));
}
}
// Out Register Desc
for
(
const
auto
&
lbn
:
chain_node
()
->
output_lbns
())
{
ExecNode
*
producer
=
lbn2producer
.
at
(
lbn
);
producer
->
AddProducedLbnRegiPair
(
lbn
,
SoleOutEdge
()
->
register_desc
(
));
producer
->
AddProducedLbnRegiPair
(
lbn
,
GetRelatedRegister
(
SoleOutEdge
()
));
}
}
void
CompTaskNode
::
FwSetProducedRegisterDescs
()
{
RegisterDesc
*
data_register
=
SoleOutEdge
()
->
register_desc
(
);
RegisterDesc
*
data_register
=
GetRelatedRegister
(
SoleOutEdge
()
);
for
(
const
std
::
unique_ptr
<
ExecEdge
>&
cur_edge
:
exec_graph
().
edges
())
{
data_register
->
AddPbn
(
cur_edge
->
pbn
());
}
...
...
@@ -219,7 +219,7 @@ void CompTaskNode::BpSetRegisterDescPtrs4Nodes(
for
(
const
auto
&
odbn
:
bp_node
->
op
()
->
output_diff_blob_names
())
{
std
::
string
lbn
=
bp_node
->
op
()
->
odbn2lbn
(
odbn
);
if
(
found_lbns
.
find
(
lbn
)
==
found_lbns
.
end
())
{
bp_node
->
AddConsumedLbnRegiPair
(
lbn
,
SoleInEdge
()
->
register_desc
(
));
bp_node
->
AddConsumedLbnRegiPair
(
lbn
,
GetRelatedRegister
(
SoleInEdge
()
));
}
}
}
...
...
@@ -227,14 +227,14 @@ void CompTaskNode::BpSetRegisterDescPtrs4Nodes(
for
(
ExecEdge
*
edge
:
cp_in_node
->
out_edges
())
{
const
std
::
string
&
lbn
=
edge
->
lbn
();
ExecNode
*
bp_node
=
fw_node2bp_node
.
at
(
edge
->
dst_node
());
bp_node
->
AddProducedLbnRegiPair
(
lbn
,
SoleOutEdge
()
->
register_desc
(
));
bp_node
->
AddProducedLbnRegiPair
(
lbn
,
GetRelatedRegister
(
SoleOutEdge
()
));
}
}
void
CompTaskNode
::
BpSetProducedRegisterDescs
()
{
std
::
unique_ptr
<
RegisterDesc
>
model_diff_register
(
new
ContigRegistDesc
);
std
::
unique_ptr
<
RegisterDesc
>
model_tmp_register
(
new
DisContigRegistDesc
);
RegisterDesc
*
data_diff_register
=
SoleOutEdge
()
->
register_desc
(
);
RegisterDesc
*
data_diff_register
=
GetRelatedRegister
(
SoleOutEdge
()
);
for
(
const
std
::
unique_ptr
<
ExecEdge
>&
cur_edge
:
exec_graph
().
edges
())
{
data_diff_register
->
AddPbn
(
cur_edge
->
pbn
());
}
...
...
oneflow/graph/in_boxing_task_node.cpp
浏览文件 @
4dc5918e
...
...
@@ -148,13 +148,13 @@ void InBoxingTaskNode::FwBuildChainSortedEdgesPair(
ExecNode
*
first_node
=
mut_exec_graph
().
NewExecNode
();
first_node
->
mut_op
()
=
op_pair
.
first
;
for
(
const
TaskEdge
*
edge
:
sorted_in_edges
)
{
first_node
->
AddConsumedLbnRegiPair
(
lbn
,
edge
->
register_desc
(
));
first_node
->
AddConsumedLbnRegiPair
(
lbn
,
GetRelatedRegister
(
edge
));
}
// Second Node
ExecNode
*
second_node
=
mut_exec_graph
().
NewExecNode
();
second_node
->
mut_op
()
=
op_pair
.
second
;
for
(
const
TaskEdge
*
edge
:
sorted_out_edges
)
{
second_node
->
AddProducedLbnRegiPair
(
lbn
,
edge
->
register_desc
(
));
second_node
->
AddProducedLbnRegiPair
(
lbn
,
GetRelatedRegister
(
edge
));
}
// Connect
Connect
(
first_node
,
mut_exec_graph
().
NewExecEdge
(
lbn
),
second_node
);
...
...
@@ -179,9 +179,9 @@ void InBoxingTaskNode::SetProducedRegister() {
namespace
{
RegisterDesc
*
GetBpRegisterFromFwRegister
(
RegisterDesc
*
fw_register
)
{
const
TaskEdge
*
fw_edge
=
GetRelatedTaskEdge
4Register
(
fw_register
);
const
TaskEdge
*
fw_edge
=
GetRelatedTaskEdge
(
fw_register
);
const
TaskEdge
*
bp_edge
=
fw_edge
->
related_fwbp_edge
();
return
bp_edge
->
register_desc
(
);
return
GetRelatedRegister
(
bp_edge
);
}
}
...
...
oneflow/graph/task_node.cpp
浏览文件 @
4dc5918e
...
...
@@ -72,8 +72,9 @@ RegisterDesc* TaskNode::GetProducedRegister4OutEdge(const TaskEdge* edge) const
void
TaskNode
::
SubscribeRegisterDescInnerPath
()
{
for
(
const
TaskEdge
*
edge
:
in_edges
())
{
edge
->
register_desc
()
->
AddSubscriber
(
this
);
subscribed_register_descs_
.
insert
(
edge
->
register_desc
());
RegisterDesc
*
regi
=
GetRelatedRegister
(
edge
);
regi
->
AddSubscriber
(
this
);
subscribed_register_descs_
.
insert
(
regi
);
}
}
...
...
oneflow/graph/task_node.h
浏览文件 @
4dc5918e
...
...
@@ -33,6 +33,8 @@ class TaskNode : public Node<TaskNode, TaskEdge> {
//
std
::
unique_ptr
<
TaskNode
>
BuildAndConnectBpNode
();
void
BuildExecGraphAndSetRegisterDescs
();
//
const
TaskEdge
*
GetOutEdge4ProducedRegister
(
RegisterDesc
*
)
const
;
RegisterDesc
*
GetProducedRegister4OutEdge
(
const
TaskEdge
*
)
const
;
...
...
@@ -90,16 +92,16 @@ class TaskEdge final : public Edge<TaskNode, TaskEdge> {
related_fwbp_edge_
=
new_val
;
}
RegisterDesc
*
register_desc
()
const
{
return
src_node
()
->
GetProducedRegister4OutEdge
(
this
);
}
private:
TaskEdge
*
related_fwbp_edge_
;
};
inline
const
TaskEdge
*
GetRelatedTaskEdge4Register
(
RegisterDesc
*
regi
)
{
inline
RegisterDesc
*
GetRelatedRegister
(
const
TaskEdge
*
edge
)
{
return
edge
->
src_node
()
->
GetProducedRegister4OutEdge
(
edge
);
}
inline
const
TaskEdge
*
GetRelatedTaskEdge
(
RegisterDesc
*
regi
)
{
return
regi
->
GetProducer
()
->
GetOutEdge4ProducedRegister
(
regi
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录