この記事は、インテル® デベロッパー・ゾーンに掲載されている「SIGGRAPH 2014: DirectX 12 on Intel」(https://software.intel.com/en-us/blogs/2014/08/11/siggraph-2014-directx-12-on-intel) の日本語参考訳です。
SIGGRAPH 2014 で、インテルはパフォーマンスと消費電力の関係に注目して、今後登場するマイクロソフトの DirectX12 API を使用した技術デモを行いました。
このデモでは、5 万ものユニークな小惑星シーンを完全にダイナミックに 2 つのモード(パフォーマンスの最大化と消費電力の最小限化)でレンダリングします。アプリケーションは、ボタンをクリックすることで DirectX 11 と DirectX 12 による描画を切り替えることができます。SIGGRAPH のデモブースでは、第 4 世代インテル® Core™ プロセッサーを搭載した Microsoft* 社の Surface Pro 3 タブレットを使用しました。
すべての結果は、タブレットが安定し、熱的に制約のある状態で動作している環境下で収取されました。これは、過酷なゲームを 10 分から 15 分プレイしたことに相当します。
パフォーマンス
パフォーマンス・モードでは、アプリケーションは、プラットフォームの熱および電力の制約内で可能な限り高速に実行することが許されます。DirectX 11 を使用した結果を次に示します:
イメージは、フレームレート(左上)と、CPU および GPU 間の消費電力の分布を示します。デモを DirectX 12 に切り替えると、劇的な改善が見てとれます:
DirectX 12 でパフォーマンスは、~ 70% 向上しました(19fps から 33fps へ)。電力グラフは、何が起こっているかを知る手掛かりとなります。DirectX 12 は、低オーバーヘッドとマルチスレッド化されたレンダリングを考慮して設計されています。新しい API を使用することで、CPU の電力要求を軽減し、その分を GPU に回すことが可能となりました。
電力
DirectX 12 の省電力機能を直接比較するため、デモでは各 API におけるワーク量を同じくするため、フレームレートを固定する機能をサポートしています。ワークロードを固定して、DirectX 11 (電力グラフの左半分)と DirextX 12 (右半分)を切り替えると、次のような結果が表示されました:
同じシーンのレンダリングを DirectX 12 と DirectX 11 を使用した場合を比べると、DirectX 12 の場合 CPU の消費電力が半分以下になり、その結果デバイス温度は下がってバッテリー寿命が延びました。
DirctX 12 の電力効率の向上は、グラフィックス・サブミッションのオーバーヘッドの低下とマルチスレッド化による効率向上の両方でもたらされています。低い動作周波数のより多くの CPU コア間でワークを分割すると、高い周波数のシングルスレッドよりも電力効率は劇的に高くなります。
まとめと次のステップ
このデモでは、DirectX 12 における電力とパフォーマンスの両方が大幅に改善されたことを示しています。デモの結果を顕著に見るため、固定電力と固定ワークロードが取り入れられています。実際に開発者は、アプリケーションの電力効率とパフォーマンスを任意に組み合わせて利用できます。
電力とパフォーマンスには緊密な関連があることを覚えておいてください。”CPU と GPU の依存性” の従来の概念は、Surface Pro 3 のような最新のデバイスでは紛らわしいことがあります。CPU の電力効率の改善は、アプリケーションが “CPU 依存” ではない場合でもパフォーマンスの利点が得られます。
この初期のデモの開発に協力いただいた、マイクロソフトのパートナーの皆さんに感謝します。マイクロソフト社が DirectX 12 をリリースした後に、正式に公開する予定です。それまでは、インテルとマイクロソフトのツイッタ―・フィードをご覧ください (@IntelSoftware、@DirectX12)。
詳細情報:
http://blogs.msdn.com/b/directx/
https://twitter.com/IntelSoftware
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。