Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
d74fe780
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看板
提交
d74fe780
编写于
9月 11, 2017
作者:
T
tensor-tang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refine MKLDNNMatrix, solid data handle, rename updateData to setData
上级
4fbc03d3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
34 addition
and
15 deletion
+34
-15
paddle/gserver/layers/MKLDNNLayer.h
paddle/gserver/layers/MKLDNNLayer.h
+2
-2
paddle/math/MKLDNNMatrix.cpp
paddle/math/MKLDNNMatrix.cpp
+4
-6
paddle/math/MKLDNNMatrix.h
paddle/math/MKLDNNMatrix.h
+28
-7
未找到文件。
paddle/gserver/layers/MKLDNNLayer.h
浏览文件 @
d74fe780
...
...
@@ -203,7 +203,7 @@ protected:
real
*
iData
=
getInputValue
(
0
,
CPU_DEVICE
)
->
getData
();
// update input data
// since it might be changed if this is after data layer
inVal_
->
update
Data
(
iData
);
inVal_
->
set
Data
(
iData
);
}
/**
...
...
@@ -216,7 +216,7 @@ protected:
// update diff
real
*
oDiff
=
getOutput
(
CPU_DEVICE
).
grad
->
getData
();
outGrad_
->
update
Data
(
oDiff
);
outGrad_
->
set
Data
(
oDiff
);
}
/**
...
...
paddle/math/MKLDNNMatrix.cpp
浏览文件 @
d74fe780
...
...
@@ -33,14 +33,12 @@ MKLDNNMatrixPtr MKLDNNMatrix::create(MatrixPtr m, memory::primitive_desc pd) {
size_t
width
=
cnts
/
dims
[
0
];
m
=
Matrix
::
create
(
height
,
width
,
false
,
false
);
}
CHECK
(
m
)
<<
" Matrix should not be empty"
;
CpuMatrixPtr
cpuMatrix
=
std
::
dynamic_pointer_cast
<
CpuMatrix
>
(
m
);
CHECK
(
cpuMatrix
)
<<
"Only support create from CPU matrix yet"
;
CHECK_EQ
(
cnts
,
m
->
getElementCnt
())
<<
"Count size does not match"
;
return
std
::
make_shared
<
MKLDNNMatrix
>
(
m
->
getData
(),
m
->
getHeight
(),
m
->
getWidth
(),
pd
);
CHECK_EQ
(
cpuMatrix
->
getElementCnt
(),
cnts
)
<<
"Count size does not match"
;
return
std
::
make_shared
<
MKLDNNMatrix
>
(
cpuMatrix
,
pd
);
}
MKLDNNMatrixPtr
MKLDNNMatrix
::
create
(
MatrixPtr
m
,
...
...
@@ -138,7 +136,7 @@ void MKLDNNMatrix::downSpatial() {
mkldnn_primitive_create
(
&
result
,
pd
.
get
(),
nullptr
,
nullptr
),
"could not create a memory primitive"
);
reset
(
result
);
set_data_handle
(
getData
()
);
set_data_handle
(
data_
);
}
}
// namespace paddle
paddle/math/MKLDNNMatrix.h
浏览文件 @
d74fe780
...
...
@@ -30,11 +30,10 @@ typedef std::shared_ptr<MKLDNNMatrix> MKLDNNMatrixPtr;
*/
class
MKLDNNMatrix
:
public
CpuMatrix
,
public
mkldnn
::
memory
{
public:
MKLDNNMatrix
(
real
*
data
,
size_t
height
,
size_t
width
,
mkldnn
::
memory
::
primitive_desc
pd
)
:
CpuMatrix
(
data
,
height
,
width
,
false
),
mkldnn
::
memory
(
pd
,
data
)
{}
MKLDNNMatrix
(
CpuMatrixPtr
m
,
mkldnn
::
memory
::
primitive_desc
pd
)
:
CpuMatrix
(
m
->
getData
(),
m
->
getHeight
(),
m
->
getWidth
(),
false
),
mkldnn
::
memory
(
pd
,
m
->
getData
()),
m_
(
m
)
{}
~
MKLDNNMatrix
()
{}
...
...
@@ -81,11 +80,29 @@ public:
void
downSpatial
();
/**
*
Update
the memory data handle.
*
set
the memory data handle.
* Caution: This will not check the buffer size of the data,
* it should be coverd by user.
*/
void
updateData
(
void
*
data
)
{
set_data_handle
(
data
);
}
void
setData
(
real
*
data
)
{
set_data_handle
(
data
);
CpuMatrix
::
setData
(
data
);
m_
.
reset
();
}
/**
* override Matrix::getData
* check data before return
*/
real
*
getData
()
override
{
CHECK_EQ
((
void
*
)
data_
,
get_data_handle
());
return
data_
;
}
const
real
*
getData
()
const
override
{
CHECK_EQ
((
void
*
)
data_
,
get_data_handle
());
return
data_
;
}
/**
* Get primitive descriptor.
...
...
@@ -143,6 +160,10 @@ protected:
memory
::
format
srcFmt
,
memory
::
format
dstFmt
,
memory
::
dims
dm
);
private:
// save the CpuMatrixPtr in case the buffer released outside
CpuMatrixPtr
m_
;
};
}
// namespace paddle
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录