OS Xはグラフィックプロセッサを切り替えるタイミングをどのように決定しますか?


9

私は2011年初頭の15 インチ MacBook Proを太陽の下でほぼすべてに使用しています。どのGPUがアクティブであるかをgfxCardStatusを使用して監視しています。グラフィックプロセッサを切り替えるタイミングをOS Xが決定する方法にいくつかの特異性があることに気付きました。

  • X11を必要とするほとんどのアプリは自動切り替えをトリガーしますが、すべてではありません
  • Javaを必要とするすべてのアプリが自動切り替えをトリガーするようですが、私はこれを非GUIアプリでテストしていません。
  • (MathematicaやXCodeのように)高性能GPUを必要とする一部のアプリは、些細なタスクのために起動された場合でも、すぐにディスクリートカードに強制的に移動します(アプリ内の動的切り替えはクールで、トピックから外れます)
  • 私の個別のカードを要求するビジネスを持たない多くのレガシーアプリ(silverlight)は、それを無意味に強制します
  • 最後に、ディスクリートGPUのメリットを確実に享受できる一部のアプリ(特にGIMP)は、実際にはまったく要求しません。

Appleはカードをいつ切り替えるかをどのように選択するかを文書化していますか?アプリは、ディスクリートカードが存在する場合、OSレベルのリクエストを個別のカードに対して行うことができますか?


Appleデベロッパドキュメントには役立つことがあります。developer.apple.com/metal
Khürtウィリアムズ

回答:


5

ハイレベルでは、それはオートマチックトランスミッションのようなものです。軽くガスを押すとスロットルが増加しますが、アクセルペダルを踏むと、エンジンがトランスミッションをシフトダウンして機械的な利点を増やします。

重要な作業でAPIを実行することにより、強力なGPUへの切り替えに影響を与えることができ、その「送信」により、統合されていないGPUにその負荷がディスパッチされます。

APIのドキュメントはすべてXcodeに含まれています(そしてオンラインでもありますが、ドキュメントを探すためにXcodeで検索を使用することを好みます)。

私はまず始めます:

これらのリンクはMac Proをカバーしており、「OpenCLを使用する際に知っておくべきこと」セクションには、WWDC 2013セッション508:OpenCLの操作で、電力に関する考慮事項を使用してMacポータブルで2つのGPUを切り替える方法が説明されています。


面白いですね。後でMacでXcodeのドキュメントを確認します。
agentroadkill 2015

明確にするために、アプリが個別のグラフィックスと統合されたグラフィックスのどちらを使用するかを決定するのは、完全にアプリケーションの開発者次第ですか?OSはこの呼び出し自体を行いませんか?
agentroadkill、2015

@agentroadkill反対だと思います-開発者はOSに現在何が起こっているのかを尋ね、影響を与える可能性がありますが、OSは複数の競合する入力に基づいて作業をスケジュールすることを決定しています。結局、数十のアプリがGPU呼び出しを継続的に処理している可能性があります。
bmike

確かに、OSは最終的に呼び出しを行いますが、リンクされた記事に従ってDeviceSelectCL shows how to identify the offline GPU that is not connected to a display, and then use the CL device corresponding to this GPU.、開発者はGPUに作業をプッシュすることを選択できます。OSはそれが許可されているかどうかを決定し、それを調停しますが、アプリは自由に作業をプッシュできます。
agentroadkill、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.