微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > ARM发布最新Compute Library

ARM发布最新Compute Library

时间:09-09 来源:Arm芯闻 点击:

开心了这么多天,该"收心"好好干活了,正好Arm有一个好消息要告诉大家,最新一季的 Compute Library 公开发行版(版本 17.9)现已推出,让我们一起来看看重点新增的一些特性和函数吧。

新的特性

此发行版主要增添了以下特性:

  • 多个新的面向 Arm CPU 和 Mali GPU 的机器学习函数

  • 支持新的数据类型和精度(重点支持低精度数据类型)

  • 支持利用 Arm-v8.2 CPU 架构的新指令实现 FP16 加速

  • 针对关键的机器学习函数进行微架构优化

  • 降低复杂网络内存开销的内存管理工具

  • 用于基本测试的基础结构框架

新的函数

我们添加了许多新的函数,满足以 Arm 型平台为目标的开发人员的需求。这些新例程采用 OpenCL C 和 C(利用 NEON Intrinsics)编写。

OpenCL C(针对 Mali GPU):

  • Bounded ReLu

  • Depth wise卷积(在 mobileNet 中使用)

  • 反量化

  • Direct卷积 1x1

  • Direct卷积 3x3

  • Direct卷积 5x5

  • 3D 张量展平

  • 向下取整

  • 全局池化(在 SqueezeNet 中使用)

  • Leaky ReLu

  • 量化

  • Reduction 运算

  • ROI 池化

CPU (NEON):

  • Bounded ReLu

  • Direct卷积 5x5

  • 反量化

  • 向下取整

  • Leaky ReLu

  • 量化

  • 具有定点加速的新函数

Direct卷积是在经典滑动窗口基础上执行卷积层的一种替代方法。在 Mali GPU Bifrost 架构的实现中,使用Direct卷积对于改进我们 CNN 的性能很有帮助(我们观察到,对 AlexNet 使用Direct卷积时性能最多可提升 1.5 倍)。

支持低精度

在许多机器学习应用场景中,可以通过降低计算精度来提升效率和性能。这是我们工程师上一季度的重点关注领域。我们利用低精度实施了现有函数的新版本,如 8 位和 16 位定点,这同时适用于 CPU 和 GPU。

GPU (OpenCL) - 8 位定点

  • Direct卷积 1x1

  • Direct卷积 3x3

  • Direct卷积 5x5

GPU (OpenCL) - 16 位定点

  • 算术加法、减法和乘法

  • 深度转换

  • 深度连接(concatenate)

  • 深度卷积

  • GEMM

  • 卷积层

  • 全连接层

  • 池化层

  • Softmax 层

NEON - 16 位定点

  • 算术加法、减法和乘法

  • 卷积层

  • 深度连接(concatenate)

  • 深度转换

  • Direct卷积 1x1

  • 全连接层

  • GEMM

  • Softmax 层

微架构优化

在 Compute Library 项目启动之初,我们的宗旨主要是共享计算机视觉和机器学习的一整套底层函数,要保障性能良好,最为重要的是要可靠且可移植。Compute Library 能够为着眼于 Arm 处理器的开发人员和合作伙伴节省时间和成本;同时,Compute Library 在我们合作伙伴实施的许多系统配置中也有出色的表现。这也是我们将NEONintrinsic和 OpenCL C 作为目标语言的原因。但在某些情形中,必须要充分发挥硬件的所有性能。因此,我们也着眼于在 Compute Library 中增加底层原语,这些底层原语利用专为目标 CPU 微架构定制的手工汇编进行了优化。

在决定我们应将重点放在哪些函数时,我们的研发团队研究了利用 Caffe 框架的机器学习工作负载。

所用的三种工作负载为:

  • AlexNet,将图像目标分类到1000个可能类别的 大型网络

  • LeNet,将手写数字分类到10个可能类别的 中型网络

  • ConvNet,将图像分类到10个可能类别的 小型网络

下图显示了这些工作负载的指令使用情况:

我们的团队发现,这些网络大约有 50-80% 的计算在 SGEMM 函数内发生,这个函数是将两个浮点矩阵相乘。还有其他几个函数也比较突出,例如幂函数和转换矩阵维度的函数。其余的计算则分散在一个长尾分布中。

您可以发现这样的一个趋势,SGEMM 所占的比例随着网络规模变大而升高,但这种趋势更有可能是因为层的配置所致,而不是与大小相关。从中我们可以意识到,矩阵乘法对神经网络确实非常重要。如果说哪个目标函数最需要优化,应该就是它了。

在此发行版的库中,我们增加了面向 Cortex-A53 和 Cortex-A72 处理器的 CPU 汇编优化版 SGEMM (FP32)。这些例程的性能视平台而异,但我们在测试中看到总体性能有大幅提升。例如,我们对 Firefly 开发板(64 位,多线程)进行了 AlexNet 基准测试,在 Cortex-A72 上测量到性能提升了约 1.6 倍。 

下表显示了我们在相同平台上使用新的优化例程的一组基准测试结果。

在 Armv

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top