15

我得到编译错误:


尝试使用 -mfpu=neon 标志编译时无法识别的命令行选项 '-mfpu=neon'* 。实际上,我尝试的任何“mfpu”选项都失败了。但是在文档中提到了这个标志,所以它应该是有效的

这把钥匙有什么问题?我怎么能告诉编译器使用 NEON?

使用 Linaro GNU aarch64 linux 工具 4.8。

谢谢。

4

2 回答 2

26

高级 SIMD(又名 NEON)对于 AArch64 是必需的,因此不需要命令行选项来指示编译器使用 NEON。

如果要启用自动矢量化优化,以便编译器自动使用 NEON 指令,请使用-O3or进行编译-O2 -ftree-vectorize

AArch64 和 ARM 后端在 gcc 中是完全独立的。ARM 后端仅针对传统的 32 位 ARM 指令集(ARM、Thumb、Thumb-2)。这与 x86 的情况形成对比,x86 将 32 位和 64 位代码生成合并到一个 GCC 后端。

于 2015-04-27T09:10:17.393 回答
1

转到文件 /tensorflow/contrib/lite/kernels/internal/BUILD,删除 -mfpu=neon 就可以了。从:

NEON_FLAGS_IF_APPLICABLE = select({
    ":arm": [
        "-O3",
        "-mfpu=neon",
    ],

到:

NEON_FLAGS_IF_APPLICABLE = select({
    ":arm": [
        "-O3",

    ],
于 2018-07-18T02:28:55.797 回答