Unreal* Engine 4/インテル® VTune™ Amplifier 利用ガイド

同カテゴリーの次の記事

インテル® アーキテクチャー上で Unity Technology ML-Agents* を調査する

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Unreal Engine* 4/Intel® VTune™ Amplifier Usage Guide」の日本語参考訳です。


開発したコードを初めてチューニングする、または高度なパフォーマンス最適化を行うにかかわらず、インテル® VTune™ Amplifier は生のプロファイル・データをパフォーマンスの詳細を調査するデータに変換します。Unreal* Engine を使用して開発した PC ゲームコードのボトルネック、同期ポイント、および CPU ホットスポットを調査する必要がある場合、ローカルまたはリモートターゲットから低オーバーヘッドでデータをソート、フィルター、および可視化するグラフィカル・ユーザー・インターフェイスを利用できます。

インテル社のソフトウェア・エンジニアは Unreal* と協力し、Unreal* Engine 4.19 にインテル® VTune™ Amplifier のインストルメントとトレース・テクノロジー (ITT) マーカーのサポートを追加しました。このガイドでは、インテル® VTune™ Amplifier 2018 の UI で Unreal* Engine 4 (UE4) のアノテーション・トレースを生成するため、新たな統合を利用する方法を説明します。Unreal* Engine (英語) から UE4 をダウンロードします。また、インテル® VTune™ Amplifier の評価版をダウンロードします。

Unreal* Engine 4 トレースのキャプチャー

スコープイベントは、フレームごとに解析されたコードブロックの累積 CPU タイミングです。関数や選択されたレベル (括弧で囲んだ) のスコープレベルをキャプチャーし、インテル® VTune™ Amplifier プロファイラーの ITT イベントを使用して表示できます。標準エンジンの統計追跡を支援するスコープイベントを設定します。

インテル® VTune™ Amplifier を管理者モードで実行します。

アプリケーションでは、パス全体を含めて UE4 エディターを選択します。

アプリケーション・パラメーターには、解像度などゲームで必要な設定を指定します。次の例では、UE4 パーティクル効果のデモをプロファイルします。アプリケーション・パラメーターの最後に “-VTune” を追加するのを忘れないでください (図 1 参照)。-VTune スイッチを含むコマンドライン引数の詳細については、UE4 ドキュメントの「コマンドライン引数」の節を参照してください。

チェックボックスをオンにすると、アプリケーション・ディレクトリーが作業ディレクトリーに設定されます。このスクリーンのほかの設定に関するヘルプを見るには、F1 キーを押してインテル® VTune™ Amplifier のヘルプシステムにアクセスします。

[Analysis Target (解析ターゲット)] タブ
図 1. [Analysis Target (解析ターゲット)] タブで、アプリケーション、ゲーム、そしてアプリケーション・パラメーターを設定

次に、[Analysis Type (解析タイプ)] タブに移動して、[Algorithm Analysis (アルゴリズム解析)] 以下の [Advanced Hotspots (高度なホットスポット)] を選択します (図 2)。

[CPU sampling interval, ms (CPU サンプリング間隔)] を 1ms に設定します。

この例では、オーバーヘッドを軽減するため [Select a level of details provided with event-based sampling collection (イベントベース・サンプリング収集で提供される詳細レベルを選択)] で [Hotspots (ホットスポット)] を選択しています。

[Event mode (イベントモード)] を [All (すべて)] に設定します。

[Analyze user tasks, events, and counters (ユーザータスク、イベント、およびカウンターを解析)] チェックボックスをオンにします。

高度なホットスポットの設定
図 2. [Analysis type (解析タイプ)] タブで高度なホットスポットを設定

次に、インテル® VTune™ Amplifier を介してゲームを開始します。

ワークロードの実行中に ~ (チルダ) キーを押して、Unreal* Engine 開発コンソールを開いて “stat NamedEvents” と入力します。これでスコープイベントの追跡が開始されます。この機能が動作するためには開発ビルドが必要であることに注意してください。詳細については、UE4 ヘルプシステムの「ビルド コンフィギュレーション」の節を参照してください。

統計の収集が終了したら、プロファイラーを停止します。

Unreal* Engine 4 トレースの表示

結果を処理した後、サマリー表示にキャプチャーされた上位タスクタイプの統計が表示されます (図 3)。

上位タスク
図 3. 収集された上位タスクの統計

[Advanced Hotspots (高度なホットスポット)] 表示で、[Bottom-up (ボトムアップ)] タブに移動します (図 4)。[Bottom-up (ボトムアップ)] 表示ではタスクの詳細が示されます。[Grouping (グループ化)] ドロップダウン・メニューを使用して、[Task Domain / Task Type /Task Duration Type / Function / Call Stack (タスクドメイン/タスクタイプ/タスク継続期間タイプ/関数/コールスタック)] 表示を選択します。

[Advanced Hotspot (高度なホットスポット)] 画面の [Bottom-up (ボトムアップ)]
図 4. [Bottom-up (ボトムアップ)] 表示ではレポートされたタスクの詳細が表示される

[Advanced Hotspot (高度なホットスポット)] 画面のタブを切り替えて、コードのプロファイル・レポートを詳しく調査できます。例えば、[Platform (プラットフォーム)] 表示では名前付きのイベントのタイミングが示されます (図 5)。

[Platform (プラットフォーム)] 表示
図 5. [Platform (プラットフォーム)] 表示の名前付きイベントのタイミング

このレポートには調査すべき多くの情報が含まれています。詳細については、インテル® VTune™ Amplifier のチュートリアル (英語) をご覧ください。HTML や PDF 形式の各種ドキュメントと、Windows*、Linux*、C++、Fortran、OpenMP* の問題の解決、電力消費に関連する Android* の課題、ホットスポットの検出、並列性を妨げるロックと待機の特定に関するサンプルコードが示されます。

カスタムイベント

最適化したい UE4 内部のコードは、このガイド (英語) で説明されるように、サイクルカウンターでカプセル化して調査できます。これにより、カスタムイベントを定義して、インテル® VTune™ Amplifier UI のスレッド・タイムラインでそれらの実行の追跡が可能になります。

まとめ

現代のプロセッサーにおけるパフォーマンスは、シングルスレッドのパフォーマンス最適化よりもはるかに多くのことを考慮する必要があります。ハイパフォーマンス・コードは以下を満たす必要があります。

  • スレッド化され複数の CPU を利用するスケーラビリティー
  • ベクトル化により SIMD ユニットを効率良く使用
  • NUMA とキャッシュの利点を生かすチューニング

インテル® VTune™ Amplifier により、単一の、そしてユーザー・フレンドリーな解析インターフェイスで高度なプロファイル機能を利用できます。UE4 とインテル® VTune™ Amplifier は連携して、複数のコアでスムーズに実行できるように、コードのプロファイルと調査を可能にします。また、最適化ツールは、高速なコードを作成し、CPU と GPU に関するより正確なデータを取得して、すべてが低オーバーヘッドであるようにスレッドとメモリー利用を調査することを可能にします。さらに、データをより理解し易くする簡単な解析により、迅速に回答を得ることができます。ゲーム開発の取り組みを次のレベルに引き上げるため、Unreal* Engine とインテル® VTune™ Amplifier の最新バージョンをダウンロードしてください。

関連情報

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事