我目前正在使用 vDSP 框架中的一些函数,尤其是 vDSP_conv,我想知道是否有任何方法可以检查该函数是否调用标量模式或在 neon 处理器上处理 SIMD。
The 文档 https://developer.apple.com/library/mac/documentation/Accelerate/Reference/vDSPRef/Reference/reference.html#//apple_ref/doc/uid/TP40009464-CH20-SW1该函数提到了必须满足的 power-pc 架构的一些标准或调用标量模式。现在我既不知道这些标准是否也适用于 iPhone,也不知道如何检查我的函数是否调用标量模式或在 neon 上正常运行。
有办法检查吗?
thanks!
vDSP_conv 实现中使用了 NEON 代码。它在某些情况下使用,而在其他情况下不使用。
我们(生产 vDSP 的 Vector and Numerics Group)没有发布有关哪些函数使用 NEON 的标准,部分原因是存在许多复杂的因素:每个调用的细节(跨步、长度和多个参数的对齐方式)、处理器模型代码执行的版本和软件版本。
如果您对具体案例有疑问,我也许可以进行调查。
您是出于好奇才问,还是表现不符合您的预期?一般来说,最根本的问题是实现的执行速度有多快以及是否可以做得更好。 SIMD 可能是其中某些目标的代表,但它不是真正的目标。
更新以解决以下评论:
调查最新 iOS 的源代码,看起来在进行关联时获取 SIMD 代码所需的只是在带有 NEON 的处理器上执行并将所有步幅设置为 1。但是,如果地址是对齐,因此如果将信号、过滤器和输出地址安排为 16 字节的倍数,则可能会在某些处理器型号上获得更好的性能。如果可以,请使用八的倍数作为过滤器元件的数量,但四的倍数也很好。
Unfortunately, the code is not O(n•log(n)); it uses direct arithmetic and not an FFT implementation, so it is O(n2). Generally, it is designed for shorter lengths, where direct arithmetic is suitable. If an FFT algorithm for correlation would help you, please file a feature request at https://bugreport.apple.com https://bugreport.apple.com.
无论使用哪种算法,如果您想要独立于长度的相同信息,那么较短的长度并不是更好。这是因为,如果您处理较短的长度,则必须以各种组合处理更多的长度才能获得相同的信息。我希望设计能够弄清楚您需要什么长度,以便相关性产生您需要的信息,然后使用该长度而不对其进行细分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)