2015-11-17 11 views
9

私はWindows 7上のCプログラムにCodeblocksを使用しています。プログラムはOMPライブラリを使用しています。 GCCのバージョンは4.9.2です。 Mingw x86_64-w64-mingw32-gcc-4.9.2.exe。なぜGCCはベクトル化情報を表示しませんか?

フラグは、-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-optimization -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 \ \ d.exe obj \ Release \ fo obj \ Release \ main.o -s "C:\ Program Files ... \ libgomp-1.dl l " 出力ファイルはbin \ Release \ d.exe(サイズは21.00 KB)プロセス はステータス0(0分、0秒)で終了0エラーは0,警告(0) 0秒)

+0

「ビルドログ」タブを確認しましたか? CodeBlocksが解析できない場合、 'Build messages'はベクトル化情報を持たないかもしれません。 – HolyBlackCat

+0

はい、ビルドログでメッセージを編集しました。 – Franktrt

答えて

13

CodeBlocksはIDEです。何もコンパイルしません。 GCCはそうです。 -ftree-vectorizer-verboseは以前のバージョンで動作していました。今、-fopt-infoがあり、最適化に関する情報を取得することができます(ベクトル化もそうです)。関連する文書hereがあります。

それも、実際にstderrにベクトライザーの出力を取得する方法を示します。 と、この1:

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

は、標準エラー出力に渡し ベクトルから逃した最適化の機会についての情報を出力します。 -fopt-info-vec-missedは -fopt-info-missed-vecに相当します。

たとえば、missedは次のように変更できます。 optimized,allなど。

+0

これで動作するようになりました。コンパイラを変更する前に、私はそのような情報を持っていました。 – Franktrt

+0

これを実現するフラグの例は歓迎します。オプションのfopt-infoのmanページはgrokには少し難しいです。 –

+0

@AndrewWagnerもう一度ドキュメントをチェックしたところ、答えを投稿してから変更されているようですので、リンクを更新してもう少し説明を追加しました。 – edmz

関連する問題