为什么cmsis-nn判断“#if Defined(ARM_MATH_DSP) && !define(ARM_MATH_MVEI)”

问题描述 投票:0回答:1

我正在编译 cmsis-nn 库,该库中有一些函数确定“#if Defined(ARM_MATH_DSP) && !define(ARM_MATH_MVEI)”。

例如arm_relu_q15.c。他的样子是:如果判断成功就使用向量化的方式,否则就是正常的循环。这是为什么,我无法理解为什么MVEI扩展会影响DSP扩展。

我想知道为什么,以及检测 MVEI 未定义是否是多余的。

c arm cmsis
1个回答
0
投票

不,这并不多余。这是检测 M 内核上 Helium 技术扩展的常用方法,因为并非所有支持 DSP 的都支持 MVE(我认为它是在 M55 中添加的)。

如果内核支持 DSP 但不支持 MVE,则使用矢量化的参考 ARM 实现,否则它只是普通循环(如果内核碰巧支持 DSP 和 MVE,则无论如何它都会自动矢量化)。

© www.soinside.com 2019 - 2024. All rights reserved.