web-dev-qa-db-ja.com

gcc; arm64; aarch64;認識されないコマンドラインオプション '-mfpu = neon'

コンパイルエラーが発生しました:

認識されないコマンドラインオプション '-mfpu = neon' *
-mfpu = neonフラグを指定してコンパイルしようとした場合。実際、私が試した 'mfpu'オプションはすべて失敗しました。ただし、ドキュメントではこのフラグについて言及しているため、有効である必要があります

このキーの何が問題になっていますか?コンパイラにNEONを使用するように指示するにはどうすればよいですか?

Linaro GNU aarch64 linux tools 4.8が使用されます。

ありがとう。

13
user3124812

AArch64ではAdvanced SIMD(別名NEON)が必須であるため、コンパイラにNEONを使用するように指示するためのコマンドラインオプションは必要ありません。

コンパイラーが自動的にNEON命令を使用するように自動ベクトル化の最適化を有効にする場合は、-O3または-O2 -ftree-vectorizeを使用してコンパイルします。

AArch64とARMバックエンドはgccで完全に分離されています。ARMバックエンドは、従来の32ビットARM命令のみを対象としていますセット(ARM、Thumb、Thumb-2)これは、32ビットと64ビットのコード生成が1つのGCCバックエンドに結合されるx86の状況とは対照的です。

21
Charles Baylis

/ tensorflow/contrib/lite/kernels/internal/BUILDファイルに移動し、-mfpu = neonを削除してください。から:

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

に:

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

    ],
1