Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Oneflow-Inc
oneflow
提交
d5785541
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 搜索 >>
提交
d5785541
编写于
7月 11, 2018
作者:
L
Li Xinqi
提交者:
Jinhui Yuan
7月 11, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
carefully handle depth of act_node (#1003)
* carefully handle depth of act_node * bfs topo instead of dfs topo
上级
96ca9d84
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
2 deletion
+9
-2
oneflow/core/graph/act_graph.cpp
oneflow/core/graph/act_graph.cpp
+9
-2
未找到文件。
oneflow/core/graph/act_graph.cpp
浏览文件 @
d5785541
...
...
@@ -401,7 +401,11 @@ void ActGraph::InitEdges() {
void
ActGraph
::
TopoForEachActNode
(
const
std
::
list
<
ActNode
*>&
starts
,
const
std
::
function
<
void
(
ActNode
*
)
>&
Handler
)
const
{
TopoForEachNode
(
starts
,
&
ActNode
::
ForEachNodeOnInEdge
,
&
ActNode
::
ForEachNodeOnOutEdge
,
Handler
);
std
::
list
<
ActNode
*>
sorted_starts
(
starts
);
sorted_starts
.
sort
(
[](
const
ActNode
*
lhs
,
const
ActNode
*
rhs
)
{
return
lhs
->
act_id
()
<
rhs
->
act_id
();
});
TopoForEachNode
(
sorted_starts
,
&
ActNode
::
ForEachNodeOnInEdge
,
&
ActNode
::
ForEachNodeOnOutEdge
,
Handler
);
}
void
ActGraph
::
InitDepth
()
{
...
...
@@ -409,13 +413,16 @@ void ActGraph::InitDepth() {
ForEachNode
([
&
](
ActNode
*
node
)
{
if
(
node
->
in_edges
().
empty
())
{
sources
.
push_back
(
node
);
}
});
int64_t
max_depth
=
-
1
;
TopoForEachActNode
(
sources
,
[
&
](
ActNode
*
act_node
)
{
int64_t
depth
=
-
1
;
act_node
->
ForEachNodeOnInEdge
(
[
&
](
const
ActNode
*
in_node
)
{
depth
=
std
::
max
(
depth
,
in_node
->
depth
());
});
[
&
](
ActNode
*
in_node
)
{
depth
=
std
::
max
(
depth
,
in_node
->
depth
());
});
if
(
depth
==
-
1
)
{
depth
=
max_depth
;
}
++
depth
;
act_node
->
set_depth
(
depth
);
depth2nodes_
[
depth
].
push_back
(
act_node
);
max_depth
=
std
::
max
(
max_depth
,
depth
);
});
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录