Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
df82fd35
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看板
未验证
提交
df82fd35
编写于
11月 28, 2022
作者:
Y
YuanRisheng
提交者:
GitHub
11月 28, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[BugFix]Fix OneDNN Kernels Bug when use pass (#48364)
* Fix onednn kernel bugs * fix gpu bugs
上级
b4b926f4
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
34 addition
and
0 deletion
+34
-0
paddle/fluid/framework/operator.cc
paddle/fluid/framework/operator.cc
+23
-0
paddle/phi/backends/gpu/gpu_context.cc
paddle/phi/backends/gpu/gpu_context.cc
+4
-0
paddle/phi/backends/gpu/gpu_context.h
paddle/phi/backends/gpu/gpu_context.h
+1
-0
paddle/phi/backends/onednn/onednn_context.cc
paddle/phi/backends/onednn/onednn_context.cc
+4
-0
paddle/phi/backends/onednn/onednn_context.h
paddle/phi/backends/onednn/onednn_context.h
+2
-0
未找到文件。
paddle/fluid/framework/operator.cc
浏览文件 @
df82fd35
...
...
@@ -3233,6 +3233,29 @@ void OperatorWithKernel::BuildPhiKernelContext(
}
VLOG
(
4
)
<<
"Done attributes"
;
// Clear All old attrs before add new attrs,
// because sometimes old attrs may be misused.
#if defined(PADDLE_WITH_MKLDNN)
if
(
phi
::
OneDNNContext
::
classof
(
dev_ctx
))
{
phi
::
OneDNNContext
*
one_dnn_ctx
=
static_cast
<
phi
::
OneDNNContext
*>
(
dev_ctx
);
one_dnn_ctx
->
ClearDnnAttr
();
}
#endif
// Note(YuanRisheng): Now, we can't open code below.
// Because some unittest run OLD dygraph and ExtraAttr is not supported in OLD
// dygraph. So, here we use trick that dev_ctx is a global object. We can
// store ExtraAttr in static graph and when unittest run OLD dygraph, it can
// obtain these ExtraAttr. We can open this code when OLD dygraph is no longer
// used.
/*
#if defined(PADDLE_WITH_CUDA)
if(phi::GPUContext::classof(dev_ctx)) {
phi::GPUContext* gpu_dnn_ctx = static_cast<phi::GPUContext*>(dev_ctx);
gpu_dnn_ctx->ClearDnnAttr();
}
#endif
*/
// For compatible with Op with extra attrs for specific backend
#if defined(PADDLE_WITH_MKLDNN) || defined(PADDLE_WITH_CUDA)
auto
&
runtime_attrs
=
RuntimeAttrs
();
...
...
paddle/phi/backends/gpu/gpu_context.cc
浏览文件 @
df82fd35
...
...
@@ -740,6 +740,8 @@ struct GPUContext::Impl {
dnn_attrs_
[
attr_name
]
=
attr
;
}
void
ClearDnnAttr
()
{
dnn_attrs_
.
clear
();
}
// use one flag for all handles?
// they should be accessed consistently
bool
owned_
{
false
};
...
...
@@ -1042,4 +1044,6 @@ void GPUContext::SetDnnAttr(const std::string& attr_name, Attribute attr) {
return
impl_
->
SetDnnAttr
(
attr_name
,
std
::
move
(
attr
));
}
void
GPUContext
::
ClearDnnAttr
()
{
return
impl_
->
ClearDnnAttr
();
}
}
// namespace phi
paddle/phi/backends/gpu/gpu_context.h
浏览文件 @
df82fd35
...
...
@@ -172,6 +172,7 @@ class PADDLE_API GPUContext : public DeviceContext,
bool
HasDnnAttr
(
const
std
::
string
&
attr_name
)
const
;
const
Attribute
&
GetDnnAttr
(
const
std
::
string
&
attr_name
)
const
;
void
SetDnnAttr
(
const
std
::
string
&
attr_name
,
Attribute
attr
);
void
ClearDnnAttr
();
static
const
char
*
name
()
{
return
"GPUContext"
;
}
...
...
paddle/phi/backends/onednn/onednn_context.cc
浏览文件 @
df82fd35
...
...
@@ -301,6 +301,8 @@ struct OneDNNContext::Impl {
dnn_attrs_
[
attr_name
]
=
attr
;
}
void
ClearDnnAttr
()
{
dnn_attrs_
.
clear
();
}
bool
HasDnnInput
(
const
std
::
string
&
input_name
)
const
{
return
dnn_inputs_
.
count
(
input_name
)
!=
0UL
;
}
...
...
@@ -425,6 +427,8 @@ void OneDNNContext::SetDnnAttr(const std::string& attr_name, Attribute attr) {
return
impl_
->
SetDnnAttr
(
attr_name
,
std
::
move
(
attr
));
}
void
OneDNNContext
::
ClearDnnAttr
()
{
return
impl_
->
ClearDnnAttr
();
}
bool
OneDNNContext
::
HasDnnInput
(
const
std
::
string
&
input_name
)
const
{
return
impl_
->
HasDnnInput
(
input_name
);
}
...
...
paddle/phi/backends/onednn/onednn_context.h
浏览文件 @
df82fd35
...
...
@@ -146,6 +146,8 @@ class OneDNNContext : public CPUContext {
const
DenseTensor
*
GetDnnInput
(
const
std
::
string
&
input_name
)
const
;
void
SetDnnInput
(
const
std
::
string
&
input_name
,
const
DenseTensor
*
input
);
void
ClearDnnAttr
();
void
SetInputsName
(
const
TensorNameMap
&
inputs_name
);
void
SetOutputsName
(
const
TensorNameMap
&
outputs_name
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录