如何检查vDSPfunction是否在氖上运行标量或SIMD

我目前正在使用vDSP框架中的一些函数,特别是vDSP_conv,我想知道是否有任何方法可以检查函数是否调用标量模式或在霓虹灯处理器上处理SIMD。
该函数的文档提到了power-pc-architecture的一些标准,这些标准必须得到满足或者调用标量模式。 现在我既不知道这些标准是否也适用于iPhone,也不知道如何检查我的函数是否调用标量模式或在霓虹灯上正常运行。

有没有办法检查这个?
谢谢!

NEON代码用于vDSP_conv实现。 它在某些情况下使用,而在其他情况下使用。

我们(生成vDSP的Vector和Numerics Group)没有公布关于哪些函数使用NEON的标准部分原因是因为存在许多复杂因素:每个调用的细节(跨步,长度和多个参数的对齐),处理器模型代码执行和软件版本。

如果您对特定案例有疑问,我可能会对其进行调查。

你是出于好奇,还是表现不符合预期? 通常,潜在的问题是实现执行的速度以及它是否可以更好。 SIMD可能是其中一些的代理,但它不是实际目标。

更新以解决以下评论:

调查最近的iOS的源代码,看起来在进行关联时获取SIMD代码所需要的只是在具有NEON的处理器上执行并将所有步长设置为1.但是,如果地址是,则代码专门用于使用对齐提示如果您将信号,滤波器和输出地址安排为16字节的倍数,则可以在某些处理器型号上获得更好的性能。 如果可以,可以使用八的倍数作为滤波器元素的数量,但是四的倍数也是好的。

不幸的是,代码不是O(n•log(n)); 它使用直接算术而不是FFT实现,因此它是O(n 2 )。 通常,它设计用于较短的长度,其中直接算术是合适的。 如果相关的FFT算法对您有所帮助,请通过https://bugreport.apple.com提交function请求。

无论使用何种算法,如果您想要与长度无关的相同信息,则较短的长度不会更好。 这是因为,如果您处理较短的长度,则必须以各种组合处理更多长度,以获得相同的信息。 我希望设计是找出你需要的长度,以便相关产生你需要的信息,然后使用那个长度而不用细分它。