Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
da9dda5c
P
Paddle
项目概览
BaiXuePrincess
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
da9dda5c
编写于
3月 12, 2021
作者:
W
whs
提交者:
GitHub
3月 12, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make CreateProgramDesc more robust (#31543)
上级
99dcd665
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
5 deletion
+23
-5
paddle/fluid/imperative/jit/program_desc_tracer.cc
paddle/fluid/imperative/jit/program_desc_tracer.cc
+22
-4
paddle/fluid/imperative/jit/program_desc_tracer.h
paddle/fluid/imperative/jit/program_desc_tracer.h
+1
-1
未找到文件。
paddle/fluid/imperative/jit/program_desc_tracer.cc
浏览文件 @
da9dda5c
...
@@ -69,6 +69,7 @@ UniqueBlockVarGenerator::UniqueBlockVarGenerator(
...
@@ -69,6 +69,7 @@ UniqueBlockVarGenerator::UniqueBlockVarGenerator(
std
::
string
UniqueBlockVarGenerator
::
NameOf
(
const
std
::
weak_ptr
<
VarBase
>
&
var
,
std
::
string
UniqueBlockVarGenerator
::
NameOf
(
const
std
::
weak_ptr
<
VarBase
>
&
var
,
const
std
::
string
&
prefix
)
{
const
std
::
string
&
prefix
)
{
VLOG
(
3
)
<<
"Finding: "
<<
var
.
lock
()
->
Name
();
auto
all_vars_iter
=
all_vars_
.
find
(
var
);
auto
all_vars_iter
=
all_vars_
.
find
(
var
);
PADDLE_ENFORCE_EQ
(
all_vars_iter
!=
all_vars_
.
end
(),
true
,
PADDLE_ENFORCE_EQ
(
all_vars_iter
!=
all_vars_
.
end
(),
true
,
platform
::
errors
::
NotFound
(
platform
::
errors
::
NotFound
(
...
@@ -111,6 +112,15 @@ void UniqueBlockVarGenerator::InsertNewVarInBlock(
...
@@ -111,6 +112,15 @@ void UniqueBlockVarGenerator::InsertNewVarInBlock(
}
}
}
}
bool
ProgramDescTracer
::
ContainVar
(
const
std
::
weak_ptr
<
VarBase
>
&
var
)
const
{
auto
vars_iter
=
vars_
.
find
(
var
);
bool
ret
=
(
vars_iter
!=
vars_
.
end
());
if
(
!
ret
)
{
VLOG
(
5
)
<<
"Can't found variable: "
<<
var
.
lock
()
->
Name
();
}
return
ret
;
}
void
ProgramDescTracer
::
InsertOp
(
const
std
::
string
&
type
,
void
ProgramDescTracer
::
InsertOp
(
const
std
::
string
&
type
,
const
NameVarBaseMap
&
inputs
,
const
NameVarBaseMap
&
inputs
,
const
NameVarBaseMap
&
outputs
,
const
NameVarBaseMap
&
outputs
,
...
@@ -147,12 +157,16 @@ TracedProgramTuple ProgramDescTracer::CreateProgramDesc(
...
@@ -147,12 +157,16 @@ TracedProgramTuple ProgramDescTracer::CreateProgramDesc(
std
::
vector
<
std
::
string
>
feed_var_names
;
std
::
vector
<
std
::
string
>
feed_var_names
;
for
(
auto
&
feed_var
:
feed_vars
)
{
for
(
auto
&
feed_var
:
feed_vars
)
{
feed_var_names
.
emplace_back
(
generator
.
NameOf
(
feed_var
,
feed_prefix
));
if
(
ContainVar
(
feed_var
))
{
feed_var_names
.
emplace_back
(
generator
.
NameOf
(
feed_var
,
feed_prefix
));
}
}
}
std
::
vector
<
std
::
string
>
fetch_var_names
;
std
::
vector
<
std
::
string
>
fetch_var_names
;
for
(
auto
&
fetch_var
:
fetch_vars
)
{
for
(
auto
&
fetch_var
:
fetch_vars
)
{
fetch_var_names
.
emplace_back
(
generator
.
NameOf
(
fetch_var
,
fetch_prefix
));
if
(
ContainVar
(
fetch_var
))
{
fetch_var_names
.
emplace_back
(
generator
.
NameOf
(
fetch_var
,
fetch_prefix
));
}
}
}
for
(
auto
&
op
:
ops_
)
{
for
(
auto
&
op
:
ops_
)
{
...
@@ -164,7 +178,9 @@ TracedProgramTuple ProgramDescTracer::CreateProgramDesc(
...
@@ -164,7 +178,9 @@ TracedProgramTuple ProgramDescTracer::CreateProgramDesc(
std
::
vector
<
std
::
string
>
names
;
std
::
vector
<
std
::
string
>
names
;
names
.
reserve
(
pair
.
second
.
size
());
names
.
reserve
(
pair
.
second
.
size
());
for
(
auto
&
var
:
pair
.
second
)
{
for
(
auto
&
var
:
pair
.
second
)
{
names
.
emplace_back
(
generator
.
NameOf
(
var
,
tmp_prefix
));
if
(
ContainVar
(
var
))
{
names
.
emplace_back
(
generator
.
NameOf
(
var
,
tmp_prefix
));
}
}
}
op_desc
->
SetInput
(
pair
.
first
,
std
::
move
(
names
));
op_desc
->
SetInput
(
pair
.
first
,
std
::
move
(
names
));
...
@@ -174,7 +190,9 @@ TracedProgramTuple ProgramDescTracer::CreateProgramDesc(
...
@@ -174,7 +190,9 @@ TracedProgramTuple ProgramDescTracer::CreateProgramDesc(
std
::
vector
<
std
::
string
>
names
;
std
::
vector
<
std
::
string
>
names
;
names
.
reserve
(
pair
.
second
.
size
());
names
.
reserve
(
pair
.
second
.
size
());
for
(
auto
&
var
:
pair
.
second
)
{
for
(
auto
&
var
:
pair
.
second
)
{
names
.
emplace_back
(
generator
.
NameOf
(
var
,
tmp_prefix
));
if
(
ContainVar
(
var
))
{
names
.
emplace_back
(
generator
.
NameOf
(
var
,
tmp_prefix
));
}
}
}
op_desc
->
SetOutput
(
pair
.
first
,
std
::
move
(
names
));
op_desc
->
SetOutput
(
pair
.
first
,
std
::
move
(
names
));
...
...
paddle/fluid/imperative/jit/program_desc_tracer.h
浏览文件 @
da9dda5c
...
@@ -66,7 +66,7 @@ class ProgramDescTracer {
...
@@ -66,7 +66,7 @@ class ProgramDescTracer {
const
std
::
string
&
feed_prefix
,
const
std
::
string
&
feed_prefix
,
const
std
::
vector
<
std
::
shared_ptr
<
VarBase
>>
&
fetch_vars
,
const
std
::
vector
<
std
::
shared_ptr
<
VarBase
>>
&
fetch_vars
,
const
std
::
string
&
fetch_prefix
,
const
std
::
string
&
tmp_prefix
)
const
;
const
std
::
string
&
fetch_prefix
,
const
std
::
string
&
tmp_prefix
)
const
;
bool
ContainVar
(
const
std
::
weak_ptr
<
VarBase
>
&
var
)
const
;
void
Reset
();
void
Reset
();
private:
private:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录