【问题标题】:gcc; arm64; aarch64; unrecognized command line option '-mfpu=neon'海合会;手臂64; aarch64;无法识别的命令行选项“-mfpu=neon”
【发布时间】:2015-07-03 06:32:41
【问题描述】:

我得到编译错误:

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

这个键有什么问题? 我怎么能告诉编译器使用 NEON?

使用Linaro GNU aarch64 linux tools 4.8。

谢谢。

【问题讨论】:

  • 文档在哪里提到? I don't see it there(但我确实看到了相关的 SIMD 功能选项...)
  • @SeverinPappadeux 这是针对 ARM 后端的,而不是针对 AArch64 的。引用-fpu 选项here 将与此一样相关;)
  • @Notlikethat good catch, AArch64 没有这样的选项
  • @Notlikethat ,是的,是的。我也查看了 ARM 选项。如果您添加您的答案,例如答案而不是评论,我会将其标记为正确。因此,您将获得帮助的凭据。非常感谢:)

标签: gcc arm neon arm64 linaro


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    到:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2021-01-28
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多