Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
f8413ff7
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
f8413ff7
编写于
12月 19, 2017
作者:
T
Tao Luo
提交者:
GitHub
12月 19, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #6680 from tensor-tang/doc
update mkl packed design doc
上级
0a76f72c
7ea6b1d1
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
18 addition
and
5 deletion
+18
-5
doc/design/mkl/mkl_packed.md
doc/design/mkl/mkl_packed.md
+18
-5
未找到文件。
doc/design/mkl/mkl_packed.md
浏览文件 @
f8413ff7
...
...
@@ -30,10 +30,10 @@
由于在现有的某些情况下(例如RNN),多次调用 cblas_?gemm 会使用相同的原数据,因此,每次调用时对原数据的重复Packing便成为了冗余。
为了最大程度减少多次调用 cblas_?gemm 在Packing上的耗时,Intel® MKL 引入了以下四个API:
*
cblas_?gemm_alloc
*
cblas_?gemm_pack
*
cblas_?gemm_compute
*
cblas_?gemm_free
*
[
cblas_?gemm_alloc
](
https://software.intel.com/en-us/mkl-developer-reference-c-cblas-gemm-alloc
)
*
[
cblas_?gemm_pack
](
https://software.intel.com/en-us/mkl-developer-reference-c-cblas-gemm-pack
)
*
[
cblas_?gemm_compute
](
https://software.intel.com/en-us/mkl-developer-reference-c-cblas-gemm-compute
)
*
[
cblas_?gemm_free
](
https://software.intel.com/en-us/mkl-developer-reference-c-cblas-gemm-free
)
通过使用这些API,我们可以先完成对原数据的Packing操作,再把已转换为Packed格式的数据传递给那些复用同一数据的gemm_compute函数,从而避免了Packing冗余。
...
...
@@ -84,7 +84,20 @@ PaddlePaddle/Paddle
2.
对比优化后layer与相对应的PaddlePaddle原有layer, 在batch mode下的结果。
### Python API
TBD
计划在
`paddle/utils.Flags`
中添加
`use_mkl_packed`
的flag,用于选择是否使用相关功能,并且当编译时
`WITH_MKL=ON`
的情况下,默认设置为
`true`
。
同时,在
`python/paddle/trainer/config_parser.py`
中对应的layer处,添加
`use_mkl_packed`
这个选择,方便用户在Python端选择是否启用这个功能。
具体实现方式比如:
```
python
use_mkl_packed
=
bool
(
int
(
g_command_config_args
.
get
(
"use_mkl_packed"
,
0
)))
if
use_mkl_packed
:
self
.
layer_type
=
mkl_packed_
*
```
所有相关的
`layer_type`
会以
*mkl_packed_*
开头,这些会在
`MKLPacked*Layer`
注册layer的时候保证,以示区分。
### Benchmarking
会添加相应的脚本用于测试和对比在使用MKL Packed recurrent layers 前后的网络性能。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录