Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
4201c94a
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
4201c94a
编写于
11月 26, 2021
作者:
W
wanghuancoder
提交者:
GitHub
11月 26, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use prune program in new executor, test=develop (#37591)
上级
74605fc2
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
32 addition
and
32 deletion
+32
-32
python/paddle/fluid/executor.py
python/paddle/fluid/executor.py
+32
-32
未找到文件。
python/paddle/fluid/executor.py
浏览文件 @
4201c94a
...
@@ -1310,6 +1310,38 @@ class Executor(object):
...
@@ -1310,6 +1310,38 @@ class Executor(object):
if
scope
is
None
:
if
scope
is
None
:
scope
=
global_scope
()
scope
=
global_scope
()
# use_prune can be overrided by putting optimize_ops in fetch_list
_origin_fetch_list
=
fetch_list
_origin_program
=
program
fetch_list
,
optimize_ops
=
self
.
_split_optimize_ops_in_fetch_list
(
fetch_list
)
if
optimize_ops
:
use_prune
=
True
if
use_prune
:
cache_key
=
_get_strong_program_cache_key
(
program
,
feed
,
_origin_fetch_list
)
cached_pruned_program
=
self
.
_get_pruned_program_cache
(
cache_key
)
if
cached_pruned_program
is
None
:
if
isinstance
(
program
,
compiler
.
CompiledProgram
):
program_scope_cache
=
self
.
_get_pruned_program_scope_cache
(
str
(
id
(
_origin_program
)))
# copy the original program, so it can be cached.
program
=
copy
.
copy
(
program
)
# share the local scopes for same original CompiledProgram.
program
.
_share_vars_from
=
program_scope_cache
if
self
.
_get_pruned_program_scope_cache
(
str
(
id
(
_origin_program
)))
is
None
:
self
.
_add_pruned_program_scope_cache
(
str
(
id
(
_origin_program
)),
program
)
pruned_program
=
self
.
_prune_program
(
program
,
feed
,
fetch_list
,
optimize_ops
)
self
.
_add_pruned_program_cache
(
cache_key
,
pruned_program
)
else
:
pruned_program
=
cached_pruned_program
feed
=
self
.
_update_feed
(
pruned_program
,
feed
)
program
=
pruned_program
def
_can_use_interpreter_core
(
program
,
place
):
def
_can_use_interpreter_core
(
program
,
place
):
compiled
=
isinstance
(
program
,
compiler
.
CompiledProgram
)
compiled
=
isinstance
(
program
,
compiler
.
CompiledProgram
)
# NOTE(zhiqiu): do not support compiled program now
# NOTE(zhiqiu): do not support compiled program now
...
@@ -1379,38 +1411,6 @@ class Executor(object):
...
@@ -1379,38 +1411,6 @@ class Executor(object):
return
new_exe
.
run
(
list
(
feed
.
keys
()),
fetch_list
,
return_numpy
)
return
new_exe
.
run
(
list
(
feed
.
keys
()),
fetch_list
,
return_numpy
)
# use_prune can be overrided by putting optimize_ops in fetch_list
_origin_fetch_list
=
fetch_list
_origin_program
=
program
fetch_list
,
optimize_ops
=
self
.
_split_optimize_ops_in_fetch_list
(
fetch_list
)
if
optimize_ops
:
use_prune
=
True
if
use_prune
:
cache_key
=
_get_strong_program_cache_key
(
program
,
feed
,
_origin_fetch_list
)
cached_pruned_program
=
self
.
_get_pruned_program_cache
(
cache_key
)
if
cached_pruned_program
is
None
:
if
isinstance
(
program
,
compiler
.
CompiledProgram
):
program_scope_cache
=
self
.
_get_pruned_program_scope_cache
(
str
(
id
(
_origin_program
)))
# copy the original program, so it can be cached.
program
=
copy
.
copy
(
program
)
# share the local scopes for same original CompiledProgram.
program
.
_share_vars_from
=
program_scope_cache
if
self
.
_get_pruned_program_scope_cache
(
str
(
id
(
_origin_program
)))
is
None
:
self
.
_add_pruned_program_scope_cache
(
str
(
id
(
_origin_program
)),
program
)
pruned_program
=
self
.
_prune_program
(
program
,
feed
,
fetch_list
,
optimize_ops
)
self
.
_add_pruned_program_cache
(
cache_key
,
pruned_program
)
else
:
pruned_program
=
cached_pruned_program
feed
=
self
.
_update_feed
(
pruned_program
,
feed
)
program
=
pruned_program
compiled
=
isinstance
(
program
,
compiler
.
CompiledProgram
)
compiled
=
isinstance
(
program
,
compiler
.
CompiledProgram
)
# Check if fluid.data() variable no feed data
# Check if fluid.data() variable no feed data
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录