Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
660c1a65
P
Paddle
项目概览
Crayon鑫
/
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看板
未验证
提交
660c1a65
编写于
6月 14, 2019
作者:
Y
Yiqun Liu
提交者:
GitHub
6月 14, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Optimize fused_elewise_activation_grad op. (#18041)
test=develop
上级
46625415
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
25 addition
and
13 deletion
+25
-13
paddle/fluid/operators/elementwise/elementwise_op_function.h
paddle/fluid/operators/elementwise/elementwise_op_function.h
+13
-13
paddle/fluid/operators/math/compound_functors.h
paddle/fluid/operators/math/compound_functors.h
+12
-0
未找到文件。
paddle/fluid/operators/elementwise/elementwise_op_function.h
浏览文件 @
660c1a65
...
@@ -1005,24 +1005,24 @@ template <typename T, typename DX_OP, typename DY_OP, typename DIntermediate_OP,
...
@@ -1005,24 +1005,24 @@ template <typename T, typename DX_OP, typename DY_OP, typename DIntermediate_OP,
bool
UseIntermediateOut
>
bool
UseIntermediateOut
>
struct
FusedElemwiseAndActGradNoBroadcast
{
struct
FusedElemwiseAndActGradNoBroadcast
{
HOSTDEVICE
void
operator
()(
size_t
i
)
{
HOSTDEVICE
void
operator
()(
size_t
i
)
{
T
x_val
=
x_
[
i
];
T
y_val
=
y_
[
i
];
T
out_val
=
out_
[
i
];
T
dout_val
=
dout_
[
i
];
T
intermediate_out_val
=
UseIntermediateOut
?
intermediate_out_
[
i
]
:
dx_op_
.
GetIntermediateOut
(
x_val
,
y_val
);
if
(
dx_
!=
nullptr
)
{
if
(
dx_
!=
nullptr
)
{
dx_
[
i
]
=
UseIntermediateOut
dx_
[
i
]
=
dx_op_
.
UseIntermediateOut
(
x_val
,
y_val
,
intermediate_out_val
,
?
dx_op_
.
UseIntermediateOut
(
out_val
,
dout_val
);
x_
[
i
],
y_
[
i
],
intermediate_out_
[
i
],
out_
[
i
],
dout_
[
i
])
:
dx_op_
.
Recompute
(
x_
[
i
],
y_
[
i
],
out_
[
i
],
dout_
[
i
]);
}
}
if
(
dy_
!=
nullptr
)
{
if
(
dy_
!=
nullptr
)
{
dy_
[
i
]
=
UseIntermediateOut
dy_
[
i
]
=
dy_op_
.
UseIntermediateOut
(
x_val
,
y_val
,
intermediate_out_val
,
?
dy_op_
.
UseIntermediateOut
(
out_val
,
dout_val
);
x_
[
i
],
y_
[
i
],
intermediate_out_
[
i
],
out_
[
i
],
dout_
[
i
])
:
dy_op_
.
Recompute
(
x_
[
i
],
y_
[
i
],
out_
[
i
],
dout_
[
i
]);
}
}
if
(
dintermediate_
!=
nullptr
)
{
if
(
dintermediate_
!=
nullptr
)
{
dintermediate_
[
i
]
=
dintermediate_
[
i
]
=
dintermediate_op_
.
UseIntermediateOut
(
UseIntermediateOut
x_val
,
intermediate_out_val
,
out_val
,
dout_val
);
?
dintermediate_op_
.
UseIntermediateOut
(
x_
[
i
],
intermediate_out_
[
i
],
out_
[
i
],
dout_
[
i
])
:
dintermediate_op_
.
Recompute
(
x_
[
i
],
y_
[
i
],
out_
[
i
],
dout_
[
i
]);
}
}
}
}
...
...
paddle/fluid/operators/math/compound_functors.h
浏览文件 @
660c1a65
...
@@ -74,6 +74,8 @@ struct BinaryCompoundGradDxFunctor {
...
@@ -74,6 +74,8 @@ struct BinaryCompoundGradDxFunctor {
return
dout
*
d_binary_fun_
.
Dx
(
x
,
intermediate_out
);
return
dout
*
d_binary_fun_
.
Dx
(
x
,
intermediate_out
);
}
}
inline
HOSTDEVICE
T
GetIntermediateOut
(
T
x
,
T
y
)
{
return
unary_fun_
(
y
);
}
private:
private:
DBinaryFun
d_binary_fun_
;
DBinaryFun
d_binary_fun_
;
UnaryFun
unary_fun_
;
UnaryFun
unary_fun_
;
...
@@ -105,6 +107,8 @@ struct BinaryCompoundGradDyFunctor {
...
@@ -105,6 +107,8 @@ struct BinaryCompoundGradDyFunctor {
}
}
}
}
inline
HOSTDEVICE
T
GetIntermediateOut
(
T
x
,
T
y
)
{
return
unary_fun_
(
y
);
}
private:
private:
DBinaryFun
d_binary_fun_
;
DBinaryFun
d_binary_fun_
;
UnaryFun
unary_fun_
;
UnaryFun
unary_fun_
;
...
@@ -143,6 +147,8 @@ struct UnaryCompoundGradDxFunctor {
...
@@ -143,6 +147,8 @@ struct UnaryCompoundGradDxFunctor {
return
base
*
d_binary_fun_
.
Dx
(
x
,
y
);
return
base
*
d_binary_fun_
.
Dx
(
x
,
y
);
}
}
inline
HOSTDEVICE
T
GetIntermediateOut
(
T
x
,
T
y
)
{
return
binary_fun_
(
x
,
y
);
}
private:
private:
DUnaryFun
d_unary_fun_
;
DUnaryFun
d_unary_fun_
;
BinaryFun
binary_fun_
;
BinaryFun
binary_fun_
;
...
@@ -181,6 +187,8 @@ struct UnaryCompoundGradDyFunctor {
...
@@ -181,6 +187,8 @@ struct UnaryCompoundGradDyFunctor {
return
base
*
d_binary_fun_
.
Dy
(
x
,
y
);
return
base
*
d_binary_fun_
.
Dy
(
x
,
y
);
}
}
inline
HOSTDEVICE
T
GetIntermediateOut
(
T
x
,
T
y
)
{
return
binary_fun_
(
x
,
y
);
}
private:
private:
DUnaryFun
d_unary_fun_
;
DUnaryFun
d_unary_fun_
;
BinaryFun
binary_fun_
;
BinaryFun
binary_fun_
;
...
@@ -203,6 +211,8 @@ struct BinaryCompoundGradDIntermedaiteOutFunctor {
...
@@ -203,6 +211,8 @@ struct BinaryCompoundGradDIntermedaiteOutFunctor {
return
dout
*
d_binary_fun_
.
Dy
(
x
,
intermediate_out
);
return
dout
*
d_binary_fun_
.
Dy
(
x
,
intermediate_out
);
}
}
inline
HOSTDEVICE
T
GetIntermediateOut
(
T
x
,
T
y
)
{
return
unary_fun_
(
y
);
}
private:
private:
DBinaryFun
d_binary_fun_
;
DBinaryFun
d_binary_fun_
;
UnaryFun
unary_fun_
;
UnaryFun
unary_fun_
;
...
@@ -232,6 +242,8 @@ struct UnaryCompoundGradDIntermediateFunctor {
...
@@ -232,6 +242,8 @@ struct UnaryCompoundGradDIntermediateFunctor {
}
}
}
}
inline
HOSTDEVICE
T
GetIntermediateOut
(
T
x
,
T
y
)
{
return
binary_fun_
(
x
,
y
);
}
private:
private:
DUnaryFun
d_unary_fun_
;
DUnaryFun
d_unary_fun_
;
BinaryFun
binary_fun_
;
BinaryFun
binary_fun_
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录