Intel® MKL-DNN

Intel® MKL-DNN

在现代英特尔架构中,缓存和内存使用效率会对整体性能产生显著影响。良好的内存访问模式可以最大限度地降低访问内存数据的额外成本,不会降低整体处理速度。若要实现这一目标,数据的存储和访问方式起着重要作用。这通常被称为数据布局。它描述了多维数组如何在内存地址空间中线性存储。

1. Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN)

数据布局由二维图像的 四个字母表示。
N:批次大小,表示一个批次中的图像数量。
C:通道,表示一张图像中的通道数。
W:宽度,表示图像水平维度的像素数。
H:高度,表示图像垂直维度的像素数。

这四个字母的顺序表示像素数据如何存储在 1-d 内存空间中。例如,NCHW 表示像素数据首先以宽度存储,然后是高度、通道,最后是批量存储。使用通道优先索引从左到右访问数据。NCHW 是使用英特尔 MKL-DNN 的推荐数据布局,因为这种格式是 CPU 的高效数据布局。

TensorFlow 使用 NHWC 作为默认数据布局,但它也支持 NCHW。
在这里插入图片描述

英特尔 MKL-DNN 库通过矢量化利用 SIMD 指令,并通过多线程利用多个内核。矢量化技术有效利用了现代 CPU 的缓存和计算能力,以及指令集的效用。单个计算最多可处理 16 个单精度 (512 位长) 数字。同时,最多可以在一个周期内完成两次乘法和加法 (融合乘加 (FMA)) 运算。此外,多线程技术有助于同时执行多个独立运算。通过避免顺序执行,通常可以最好地执行深度学习任务的计算,因此获取并行运行的可用内核是加速深度学习任务的理想选择。英特尔 MKL-DNN 采用 OpenMP,以充分利用英特尔架构。

OpenMP* 线程绑定到不同内核的线程上下文并尽可能靠近,建议将此环境变量设置为可用的物理内核数。

Wordbook

Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN)
Intel® Advanced Vector Extensions 2 (Intel® AVX2)
C/C++ Development Tools (CDT)

References

https://software.intel.com/content/www/cn/zh/develop/articles/maximize-tensorflow-performance-on-cpu-considerations-and-recommendations-for-inference.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yongqiang Cheng

梦想不是浮躁,而是沉淀和积累。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值