Android程序如何使用NEON SIMD?

Tam*_*Tam 9 android neon

我一直在学习cpu功能,偶然发现了NEON.

从我所看到的,看起来NEON需要特定的编程来使用它,但这是完全正确的,或者具有此功能的cpus是否仍然找到方法来直到它并加快某些应用程序的媒体进程,即使没有它的具体代码?

Sam*_*Sam 10

有许多方法可以使用NEON指令.他们之中有一些是:

  • 库.您的memcpy很可能是使用NEON手工制作的.API中的音乐/视频回放库正在使用NEON和/或GPU进行加速.麻生太郎,有三个使用它的库.Qualcomm的FastCV就是一个很好的例子
  • 编译器发布的说明.某些编译器在提供正确选项时将发出NEON指令.大多数编译器将使用neon进行浮点运算,但不对它们进行矢量化.他们将该单元用作单个数据单元,因为它快速方便.GCC和ARM编译器中有一些矢量化功能,但它们的范围和结果确实有限.
  • 具有内在函数的手工编码C http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html这可能是开始NEON世界的最佳方式.
  • 手动编码汇编程序.如果你想达到最佳性能,这似乎是最好的.它还需要大量的努力和CS知识.

  • 最后但并非最不重要的是,只需下载使用它的应用程序即可使用NEON.您最喜欢的音乐播放器和相机应用程序将NEON设备放在您的智能手机中以便充分利用.

结论:NEON有很多用法,但仅在代码专门包含NEON指令时使用.从技术上讲,正如@pst所说,它必须以一段代码为目标.