我得到编译错误:
尝试使用 -mfpu=neon 标志编译时无法识别的命令行选项 '-mfpu=neon'* 。实际上,我尝试的任何“mfpu”选项都失败了。但是在文档中提到了这个标志,所以它应该是有效的
这把钥匙有什么问题?我怎么能告诉编译器使用 NEON?
使用 Linaro GNU aarch64 linux 工具 4.8。
谢谢。
高级 SIMD(又名 NEON)对于 AArch64 是必需的,因此不需要命令行选项来指示编译器使用 NEON。
如果要启用自动矢量化优化,以便编译器自动使用 NEON 指令,请使用-O3
or进行编译-O2 -ftree-vectorize
。
AArch64 和 ARM 后端在 gcc 中是完全独立的。ARM 后端仅针对传统的 32 位 ARM 指令集(ARM、Thumb、Thumb-2)。这与 x86 的情况形成对比,x86 将 32 位和 64 位代码生成合并到一个 GCC 后端。
转到文件 /tensorflow/contrib/lite/kernels/internal/BUILD,删除 -mfpu=neon 就可以了。从:
NEON_FLAGS_IF_APPLICABLE = select({
":arm": [
"-O3",
"-mfpu=neon",
],
到:
NEON_FLAGS_IF_APPLICABLE = select({
":arm": [
"-O3",
],