1. ホーム
  2. optimization

[解決済み] GCC: marchとmtuneはどう違うのですか?

2023-02-28 10:02:09

質問

私はこのためにGCCのmanページをかき集めようとしました、しかし、まだ、本当にそれを得ません。

との違いは何ですか? -march-mtune ?

どのような場合に -march を使うのか、それとも両方使うのか?単に -mtune ?

どのように解決するのですか?

もし -march を使うと、GCC は指定された CPU で動作する命令を自由に生成しますが、(通常) アーキテクチャファミリーの以前の CPU では動作しません。

もし、単に -mtune を使用する場合、コンパイラはそれらのいずれでも動作するコードを生成しますが、指定された特定の CPU で最も高速に動作する命令シーケンスを優先的に使用します。


-march=foo 意味するもの -mtune=foo を指定しない限り、別の -mtune . これが -march のようなオプションを有効にするよりも -mavx のようなオプションを有効にするよりも、チューニングについて何もしない方が良いでしょう。

警告 -march=native は、GCCが特に認識しないCPU上では、GCCが検出できる新しい命令セットをまだ有効にしますが、GCCが認識しない命令セットには -mtune=generic . 良いコードを作りたいなら、あなたのCPUについて知っている新しい十分なGCCを使用してください。