Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
52f07ab4
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看板
未验证
提交
52f07ab4
编写于
3月 27, 2022
作者:
Z
zhangbo9674
提交者:
GitHub
3月 27, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix amp with optiontional api bug (#40980)
* fix amp with optiontional api bug * refine optional code for amp
上级
0695e1ac
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
4 addition
and
3 deletion
+4
-3
paddle/fluid/eager/auto_code_generator/final_state_generator/eager_gen.py
...er/auto_code_generator/final_state_generator/eager_gen.py
+4
-3
未找到文件。
paddle/fluid/eager/auto_code_generator/final_state_generator/eager_gen.py
浏览文件 @
52f07ab4
...
...
@@ -801,10 +801,10 @@ class DygraphSingleFunctionGenerator(FunctionGeneratorBase):
if
is_optional
:
arg_str
=
f
"const paddle::optional<const paddle::experimental::Tensor&>
{
name
}
"
amp_tensors_vector_optional_list
.
append
(
f
"if (
{
name
}
.
is)initialized() amp_tensors_vector.push_back(
{
name
}
.get())
);
\n
"
f
"if (
{
name
}
.
get_ptr() != nullptr) amp_tensors_vector.push_back({{ *(
{
name
}
.get_ptr()) }}
);
\n
"
)
amp_autocast_optional_list
.
append
(
f
"auto NEW_
{
name
}
=
{
name
}
.is_initialized() ? egr::EagerAmpAutoCast(
\"
{
name
}
\"
,
{
name
}
, amp_dst_dtype, op_name
) :
{
name
}
;
\n
"
f
"auto NEW_
{
name
}
=
(
{
name
}
.get_ptr() != nullptr) ? paddle::make_optional<const paddle::experimental::Tensor&>(egr::EagerAmpAutoCast(
\"
{
name
}
\"
, *(
{
name
}
.get_ptr()), amp_dst_dtype, op_name)
) :
{
name
}
;
\n
"
)
else
:
if
inplace_map
and
name
in
inplace_map
.
keys
():
...
...
@@ -895,7 +895,8 @@ class DygraphSingleFunctionGenerator(FunctionGeneratorBase):
amp_tensors_vector_optional_list
)
amp_get_dst_dtype_str
=
f
"auto amp_dst_dtype = egr::GetAmpDestDtype(op_name, amp_tensors_vector);
\n
"
amp_autocast_list_str
=
" "
.
join
(
amp_autocast_list
)
+
" "
.
join
(
amp_autocast_optional_list
)
amp_autocast_list
)
+
" "
+
" "
.
join
(
amp_autocast_optional_list
)
amp_inputs_call_args_str
=
", "
.
join
(
amp_inputs_call_list
)
amp_call_str
=
f
"return
{
forward_function_name
}
(
{
amp_inputs_call_args_str
}
);"
if
is_inplaced
or
(
forward_api_name
==
"cast"
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录