小惑星と DirectX* 12: パフォーマンスと省電力

同カテゴリーの次の記事

インテル® Xeon Phi™ コプロセッサー x100 が搭載されたシステムでインテル® Code Builder for OpenCL* API を実行する

この記事は、インテル® デベロッパー・ゾーンに公開されている「Asteroids and DirectX* 12: Performance and Power Savings」の日本語参考訳です。


サンプルコードのダウンロード (Web サイト)

インテルが開発した小惑星 (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 間の消費電力分布

フレームレート (左上) と CPU と GPU 間の消費電力の分布が分かります。DirectX* 12 に切り替えて実行すると大幅な改善が見られます。

DirectX* 12 を使用することでパフォーマンスが約 70% 向上 (19 FPS から 33 FPS)

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* 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 (英語) を参照してください。

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

関連記事

  • SIGGRAPH 2014: IA 上の DirectX* 12 サポートSIGGRAPH 2014: IA 上の DirectX* 12 サポート この記事は、インテル® デベロッパー・ゾーンに掲載されている「SIGGRAPH 2014: DirectX 12 on Intel」の日本語参考訳です。 SIGGRAPH 2014 で、インテルはパフォーマンスと消費電力の関係に注目して、今後登場するマイクロソフトの DirectX12 API […]
  • ゲームエンジンのタスク処理 (アニメーション) - サンプル・プロジェクトのダウンロードゲームエンジンのタスク処理 (アニメーション) - サンプル・プロジェクトのダウンロード この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Game Engine Tasking - Animation」の日本語参考訳です。 機能/説明 6 コア、12 ハードウェア・スレッドのゲーム用デスクトップが市場に登場してからかなり経ち、今ではラップトップでさえも 4 コア CPU […]
  • Direct3D 12 概要 パート 8: CPU の並列性Direct3D 12 概要 パート 8: CPU の並列性 この記事は、インテル® デベロッパー・ゾーンに公開されている「Direct3D 12 Overview Part 8: CPU Parallelism」の日本語参考訳です。 パート 7 では、ダイナミック・ヒープについて触れ、それがどのように CPU の並列性に役立つか説明しました。それでは、これまで紹介した D3D 12 […]
  • Direct3D 12 概要 パート 5: バンドルDirect3D 12 概要 パート 5: バンドル この記事は、インテル® デベロッパー・ゾーンに公開されている「Direct3D 12 Overview Part 5: Bundles」の日本語参考訳です。 D3D 12 における新たしい描画コンテキストについては、説明を終えたと思います。これまで、D3D 12 がどのように 'ハードウェアに近い' […]
  • Direct3D 12 概要 パート 1: ハードウェアに近くDirect3D 12 概要 パート 1: ハードウェアに近く この記事は、インテル® デベロッパー・ゾーンに掲載されている「Direct3D 12 Overview Part 1: 'Closer To The Metal'」の日本語参考訳です。 GDC 2014 において、マイクロソフト社は 2015 年に PC […]