この記事は、インテル® デベロッパー・ゾーンに公開されている「Asteroids and DirectX* 12: Performance and Power Savings」(https://software.intel.com/en-us/articles/asteroids-and-directx-12-performance-and-power-savings/) の日本語参考訳です。
インテルが開発した小惑星 (asteroids) サンプルは、Microsoft* DirectX* 12 のグラフィックス API を使用して、以前の API よりも優れたパフォーマンスと省電力を達成する方法を示します。このサンプルは、SIGGRAPH 2014 で発表されましたが、 DirectX* 12 の正式リリースを受けて、サンプルコードを公開することになりました。このサンプルは、50,000 のダイナミックでユニークな小惑星を次の 2 つのモードでレンダリングします: パフォーマンス (パフォーマンスを最大化) と省電力 (消費電力を最小化)。DirectX* 11 と DirectX* 12 の API をボタンで切り替えることができます。
ここで紹介する結果はすべて、Microsoft* Surface* Pro 3 を一定の熱制御された状態で実行したものです。これは、高要件のゲームを 10 ~ 15 分以上プレイするのに相当します。
パフォーマンス
パフォーマンス・モードでは、アプリケーションをプラットフォームの熱および電力の制約内でできるだけ高速に実行できます。 以下は、DirectX* 11 を使用した場合の結果です。
フレームレート (左上) と CPU と GPU 間の消費電力の分布が分かります。DirectX* 12 に切り替えて実行すると大幅な改善が見られます。
DirectX* 12 を使用することでパフォーマンスが約 70% 向上します (19 FPS から 33 FPS)。その理由は、消費電力グラフから分かります。DirectX* 12 は、低オーバーヘッド、マルチスレッド・レンダリング向けに設計されています。 新しい API を使用することで、CPU の消費電力を減らし、その分 GPU で利用できるようになります。
省電力
DirectX* 12 とほかの API の消費電力を比較するため、フレームレートを固定し各 API のワークロードが同じになるようにする、省電力モードもサポートしています。ワークロードを一定に保ったまま DirectX* 11 (消費電力グラフの左半分) から DirectX* 12 (右半分) へ切り替えると、次のようになります。
同じシーンをレンダリングするのに、DirectX* 12 の CPU 消費電力は DirectX* 11 の半分未満であるため、デバイス温度を低く保ち、バッテリーを長持ちさせることができます。
DirectX* 12 における電力効率の向上は、グラフィックスの送信オーバーヘッドの軽減とマルチスレッドの効率の向上の両方によるものです。低周波数でより多くの CPU コアに作業を分配することは、高周波数でシングルスレッド実行するよりも電力効率が格段に優れています。
まとめ
ここでは、DirectX* 12 により電力効率とパフォーマンスを大幅に向上できることを示しました。このサンプルは、2 つの極端な状態 (固定電力と固定ワークロード) の検証用に作成されています。実際のアプリケーションでは、消費電力とパフォーマンスの任意の組み合わせを選択できます。
重要なことは、電力効率とパフォーマンスは密接に関連しているということです。「CPU バインドと GPU バインド」という従来の概念は、Surface* Pro 3 のような最近のデバイスには当てはまりません。CPU の電力効率を上げることで、アプリケーションが「CPU バインド」でなくてもパフォーマンスを向上できます。
関連情報 (英語)
GitHub*: https://github.com/GameTechDev/asteroids_d3d12
DirectX* Developer Blog: http://blogs.msdn.com/b/directx/
DirectX* 12 Twitter: https://twitter.com/DirectX12
Intel Software Twitter: https://twitter.com/IntelSoftware
インテル® テクノロジーの機能と利点はシステム構成によって異なり、対応するハードウェアやソフトウェア、またはサービスの有効化が必要となる場合があります。実際の性能はシステム構成によって異なります。詳細については、各システムメーカーまたは販売店にお問い合わせください。
性能に関するテストに使用されるソフトウェアとワークロードは、性能がインテル® マイクロプロセッサー用に最適化されていることがあります。SYSmark* や MobileMark* などの性能テストは、特定のコンピューター・システム、コンポーネント、ソフトウェア、操作、機能に基づいて行ったものです。結果はこれらの要因によって異なります。製品の購入を検討される場合は、他の製品と組み合わせた場合の本製品の性能など、ほかの情報や性能テストも参考にして、パフォーマンスを総合的に評価することをお勧めします。
詳細については、http://www.intel.com/performance (英語) を参照してください。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください