4

プロファイリングを使用して、かなり複雑な C++ プロジェクト (Boost ライブラリ、GSL、および OpenCV にリンクされた複数のソース ファイル) を最適化しようとしています。CMakeを使用して、最初にコンパイルします

set(CMAKE_CXX_FLAGS " -O3 -ffast-math -fprofile-generate=profiling -pg -fopenmp ")

結果の実行可能ファイルを典型的な入力で実行した後、次のようにコンパイルします

set(CMAKE_CXX_FLAGS " -O3 -ffast-math -fprofile-use=profiling -fopenmp ")

次のような多数のエラーでコンパイルが失敗します。

/n/user/projects/project_name/src/foo.cpp: In member function ‘double TLinearInterp::operator()(double) const’:
/n/user/projects/project_name/src/foo.cpp:86:1: error: corrupted profile info: profile data is not flow-consistent
 }
 ^
/n/user/projects/project_name/src/foo.cpp:86:1: error: corrupted profile info: number of executions for edge 2-7 thought to be -7232
/n/user/projects/project_name/src/foo.cpp:86:1: error: corrupted profile info: number of executions for edge 2-3 thought to be 20996551
/n/user/projects/project_name/src/foo.cpp:86:1: error: corrupted profile info: number of executions for edge 3-7 thought to be -28135
/n/user/projects/project_name/src/foo.cpp:86:1: error: corrupted profile info: number of executions for edge 3-4 thought to be 21024686

GNU コンパイラのバージョン 4.8.0 を使用しています。コンパイラ フラグからわかるように、私のプロジェクトでは OpenMP を使用しています。

プロファイル情報の破損の原因は何ですか?

4

1 に答える 1