この記事は、インテル® デベロッパー・ゾーンに掲載されている「Unreal Engine* 4/Intel® VTune™ Amplifier Usage Guide」(https://software.intel.com/en-us/articles/unreal-engine-4intel-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 パーティクル効果のデモ (https://docs.unrealengine.com/ja-jp/Resources/Showcases/Effects) をプロファイルします。アプリケーション・パラメーターの最後に “-VTune” を追加するのを忘れないでください (図 1 参照)。-VTune スイッチを含むコマンドライン引数の詳細については、UE4 ドキュメントの「コマンドライン引数」 (https://docs.unrealengine.com/ja-jp/Programming/Basics/CommandLineArguments) の節を参照してください。
チェックボックスをオンにすると、アプリケーション・ディレクトリーが作業ディレクトリーに設定されます。このスクリーンのほかの設定に関するヘルプを見るには、F1 キーを押してインテル® VTune™ Amplifier のヘルプシステムにアクセスします。
図 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 ヘルプシステムの「ビルド コンフィギュレーション」 (https://docs.unrealengine.com/ja-jp/Programming/Development/BuildConfigurations) の節を参照してください。
統計の収集が終了したら、プロファイラーを停止します。
Unreal* Engine 4 トレースの表示
結果を処理した後、サマリー表示にキャプチャーされた上位タスクタイプの統計が表示されます (図 3)。
図 3. 収集された上位タスクの統計
図 4. [Bottom-up (ボトムアップ)] 表示ではレポートされたタスクの詳細が表示される
図 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 の最新バージョンをダウンロードしてください。
関連情報
- インテル® VTune™ Amplifier
- Unreal* Engine 4 最適化ガイド
https://software.intel.com/en-us/articles/unreal-engine-4-optimization-tutorial-part-1 - Unreal* Engine 4 のパーティクル・パラメーターの視覚化をブースト
https://software.intel.com/en-us/articles/boost-visuals-with-particle-parameters-in-unreal-engine-4 - 布シミュレーションにおける CPU 最適化
https://software.intel.com/en-us/articles/unreal-engine-4-blueprint-cpu-optimizations-for-cloth-simulations - 非破壊性メッシュのセットアップ
https://software.intel.com/en-us/articles/unreal-engine-4-setting-up-destructive-meshes - CPU スケーリングのサンプル (英語)
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。