GCC がベクトル化情報を表示しないのはなぜですか? 質問する

GCC がベクトル化情報を表示しないのはなぜですか? 質問する

Windows 7 で C プログラムに Codeblocks を使用しています。プログラムは OMP ライブラリを使用しています。GCC バージョンは 4.9.2 です。Mingw x86_64-w64-mingw32-gcc-4.9.2.exe。

使用されるフラグは次のとおりです: -fopenmp -O3 -mfpmath=sse -funroll-loops -ftree-loop-distribution -ftree-vectorize -ftree-vectorizer-verbose=2

プログラムは正しく実行されますが、どのループがベクトル化されたかに関する情報が表示されないという問題があります。どうすれば解決できますか?

ビルドログ情報:

-------------- ビルド: **** でのリリース (コンパイラ: GNU GCC コンパイラ)---------------

x86_64-w64-mingw32-gcc-4.9.2.exe -Wall -O2 -march=corei7 -fexpensive-optimizations -O3 -fopenmp -mfpmath=sse -funroll-loops -ftree-loop-distribution -ftree-vectorize -ftree-vectorizer-verbose=2 -c C:\Users...\fc -o obj\Release\fo x86_64-w64-mingw32-g++.exe -o bin\Release\d.exe obj\Release\fo obj\Release\main.o -s "C:\Program Files...\libgomp-1.dll" 出力ファイルは bin\Release\d.exe で、サイズは 21.00 KB です。プロセスはステータス 0 (0 分、0 秒) で終了しました。エラー 0 件、警告 0 件 (0分、0秒)

ベストアンサー1

CodeBlocksはIDEです。コンパイルはしません。GCCが行います。-ftree-vectorizer-verbose以前のバージョンでは が動作していました。現在は があり-fopt-info、最適化(ベクトル化も含む)に関する情報を取得できます。関連するドキュメントはここ

実際にベクトル化出力を取得する方法も示されていますstderr。また、次の例も示されています。

gcc -O2 -ftree-vectorize -fopt-info-vec-missed 

ベクトル化パスから逃した最適化の機会に関する情報を stderr に出力します。-fopt-info-vec-missed は -fopt-info-missed-vec と同等であることに注意してください。

リストされているように、例えば などmissedに変更できます。optimizedall

おすすめ記事