[英]Using ARM Neon acceleration with TFLite C++ API on Android
[英]Android convert/compile C++ as Neon
我目前正在借助JNI和OpenCV使用C ++编写一个简单的Android程序。 输入是存储为Mat的图像。 我希望不使用OpenCV的规范化功能,而是希望使用C ++编写自己的规范化功能。 据我了解,NEON受到支持。 但是,通过查看NDK文件夹中的HelloNeon示例,我意识到该代码是用NEON内在函数编写的。
问题:有没有办法将我的C ++代码直接编译为NEON代码? 即我希望避免用NEON内部函数编写函数。
谢谢。
很大程度上取决于编译器。 在最近的版本中,gcc和clang都支持“自动矢量化”,但是生成的代码的质量变化很大-主要取决于实际的源代码。 与往常一样,编译器首先负责生成正确的代码,其次负责生成快速/高效的代码。 如有疑问,请选择“安全”选项。
但是,应该使用-mfpu=neon -ftree-vectorize
。
我确实希望您需要“按摩”代码以使其很好地向量化,但是-至少这是我在x86上的经验,编译器将在向量化时尝试构建SSE指令。 它在相当简单的情况下会成功,但是在代码更复杂时会退回到“常规代码”。 通常,更高版本的编译器比旧版本的性能更好。
如果确实需要获得良好的矢量化结果,则可能最终需要使用Neon内部函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.