/POGOSAFEMODE (スレッド セーフ モードでの PGO の実行)

/POGOSAFEMODE オプションは、Visual Studio 2015 から非推奨とされます。 代わりに、/GENPROFILE:EXACT オプションと /GENPROFILE:NOEXACT オプションを使用してください。 /POGOSAFEMODE リンカー オプションを指定すると、ガイド付き最適化のプロファイル (PGO) のトレーニングの実行中、プロファイル データのキャプチャにスレッドセーフ モードを使用するよう、インストルメント化されたビルドが作成されることが指定されます。

構文

/POGOSAFEMODE

解説

ガイド付き最適化のプロファイル (PGO: Profile-Guided Optimization) では、プロファイリング フェーズで高速モードセーフ モードの 2 つのモードを使用できます。 高速モードでプロファイリングを行う場合は、増分命令を使用してデータ カウンター数を増やします。 増分命令は高速ですが、スレッド セーフではありません。 セーフ モードでプロファイリングを行う場合は、インタロックされた増分命令を使用してデータ カウンター数を増やします。 この命令は増分命令と同じ機能を持ち、スレッド セーフですが、より低速です。

/POGOSAFEMODE オプションを指定すると、セーフ モードを使用するようインストルメント化されたビルドが設定されます。 このオプションは、PGO インストルメンテーション リンカー フェーズ中に非推奨の /LTCG:PGINSTRUMENT が指定されている場合にのみ使用できます。

既定では、PGO プロファイリングは高速モードで動作します。 /POGOSAFEMODE は、セーフ モードを使用する場合にのみ必要です。

PGO プロファイリングをセーフ モードで実行するには、システムに応じて、/GENPROFILE:EXACT (推奨)、環境変数 PogoSafeMode、またはリンカー スイッチ /POGOSAFEMODE のいずれかを使用する必要があります。 x64 コンピューターでプロファイリングを実行する場合は、リンカー スイッチを使用する必要があります。 x86 コンピューターでプロファイリングを実行する場合は、PGO インストルメンテーション処理を開始する前に、リンカー スイッチを使用するか、環境変数を任意の値に定義できます。

Visual Studio 開発環境でこのリンカー オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. [構成プロパティ]>[リンカー]>[最適化] プロパティ ページを選択します。

  3. [リンク時のコード生成] プロパティで、[ガイド付き最適化のプロファイル - インストルメント (/LTCG:PGInstrument)] を選択します。

  4. [構成プロパティ]>[リンカー]>[コマンド ライン] プロパティ ページを選択します。

  5. [追加のオプション] ボックスに /POGOSAFEMODE オプションを入力します。 [OK] を選択して変更を保存します。

このリンカーをコードから設定するには

関連項目

/GENPROFILE と /FASTGENPROFILE
/LTCG
プロファイルに基づく最適化
プロファイルに基づく最適化の環境変数