Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
e5f7a834
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看板
未验证
提交
e5f7a834
编写于
3月 24, 2021
作者:
W
Wojciech Uss
提交者:
GitHub
3月 24, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix cache key in concat oneDNN kernel (#31820)
* fix cache key in concat oneDNN kernel * key simplified
上级
f2cfc0f4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
6 deletion
+14
-6
paddle/fluid/operators/mkldnn/concat_mkldnn_op.cc
paddle/fluid/operators/mkldnn/concat_mkldnn_op.cc
+14
-6
未找到文件。
paddle/fluid/operators/mkldnn/concat_mkldnn_op.cc
浏览文件 @
e5f7a834
...
@@ -71,6 +71,15 @@ static const std::vector<const Tensor*> ReduceMultiInput(
...
@@ -71,6 +71,15 @@ static const std::vector<const Tensor*> ReduceMultiInput(
return
reduced
;
return
reduced
;
}
}
static
const
std
::
vector
<
int
>
GetDimsForKey
(
const
std
::
vector
<
const
Tensor
*>&
inputs
)
{
auto
dims_key
=
paddle
::
framework
::
vectorize
<
int
>
(
inputs
[
0
]
->
dims
());
for
(
auto
it
=
std
::
next
(
inputs
.
begin
());
it
!=
inputs
.
end
();
++
it
)
{
dims_key
.
push_back
((
*
it
)
->
dims
()[
0
]);
}
return
dims_key
;
}
template
<
typename
T
>
template
<
typename
T
>
class
ConcatPrimitiveFactory
{
class
ConcatPrimitiveFactory
{
public:
public:
...
@@ -134,6 +143,8 @@ template <typename T>
...
@@ -134,6 +143,8 @@ template <typename T>
class
ConcatMKLDNNOpKernel
:
public
paddle
::
framework
::
OpKernel
<
T
>
{
class
ConcatMKLDNNOpKernel
:
public
paddle
::
framework
::
OpKernel
<
T
>
{
public:
public:
void
Compute
(
const
paddle
::
framework
::
ExecutionContext
&
ctx
)
const
override
{
void
Compute
(
const
paddle
::
framework
::
ExecutionContext
&
ctx
)
const
override
{
// If any of the multiple inputs of concat has an input size of 0, the
// actual size of the multi_input will change
auto
multi_input
=
ReduceMultiInput
(
ctx
.
MultiInput
<
Tensor
>
(
"X"
));
auto
multi_input
=
ReduceMultiInput
(
ctx
.
MultiInput
<
Tensor
>
(
"X"
));
EnforceLayouts
(
multi_input
);
EnforceLayouts
(
multi_input
);
Tensor
*
output
=
ctx
.
Output
<
Tensor
>
(
"Out"
);
Tensor
*
output
=
ctx
.
Output
<
Tensor
>
(
"Out"
);
...
@@ -156,12 +167,9 @@ class ConcatMKLDNNOpKernel : public paddle::framework::OpKernel<T> {
...
@@ -156,12 +167,9 @@ class ConcatMKLDNNOpKernel : public paddle::framework::OpKernel<T> {
paddle
::
framework
::
ToMKLDNNDataType
(
multi_input
[
0
]
->
type
());
paddle
::
framework
::
ToMKLDNNDataType
(
multi_input
[
0
]
->
type
());
ConcatPrimitiveFactory
<
T
>
prim_creator
;
ConcatPrimitiveFactory
<
T
>
prim_creator
;
// If one of the multiple inputs of concat has an input size of 0, the
std
::
string
key
=
// actual size of the multi_input will change
platform
::
CreateKey
(
dev_ctx
,
GetDimsForKey
(
multi_input
),
std
::
string
key
=
platform
::
CreateKey
(
multi_input
.
size
(),
ctx
.
OutputName
(
"Out"
),
dt
);
dev_ctx
,
paddle
::
framework
::
vectorize
<
int
>
(
multi_input
[
0
]
->
dims
()),
multi_input
.
size
(),
ctx
.
OutputName
(
"Out"
),
dt
,
platform
::
ThreadIDasStr
());
key
=
platform
::
ExtendKeyWithThreadInfoIfNeeded
(
dev_ctx
,
key
);
key
=
platform
::
ExtendKeyWithThreadInfoIfNeeded
(
dev_ctx
,
key
);
const
std
::
string
key_prim
=
key
+
"@concat_p"
;
const
std
::
string
key_prim
=
key
+
"@concat_p"
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录