Wie entscheidet OS X, wann der Grafikprozessor gewechselt wird?

9

Ich verwende mein 15 "MacBook Pro Anfang 2011 für fast alles unter der Sonne - ich überwache häufig, welche GPU mit gfxCardStatus aktiv ist . Ich habe einige Besonderheiten bei der Entscheidung von OS X festgestellt, wann Grafikprozessoren gewechselt werden sollen:

  • Die meisten Apps, für die X11 erforderlich ist, lösen eine automatische Umschaltung aus, jedoch nicht alle
  • Es scheint, dass jede App, die Java benötigt, die automatische Umschaltung auslöst, obwohl ich dies nicht mit Nicht-GUI-Apps getestet habe.
  • Einige Apps (wie Mathematica oder XCode), für die möglicherweise eine Hochleistungs-GPU erforderlich ist, erzwingen sofort eine Bewegung auf die diskrete Karte, selbst wenn sie nur für eine triviale Aufgabe gestartet werden (dynamisches Umschalten in der App wäre cool, kein Thema).
  • Viele ältere Apps (Silverlight), bei denen es nicht darum geht, nach meiner diskreten Karte zu fragen, erzwingen dies ohne Rücksicht
  • Schließlich verlangen einige Apps (insbesondere GIMP), die definitiv von einer diskreten GPU profitieren könnten, überhaupt nicht danach.

Dokumentiert Apple, wie es den Kartenwechsel auswählt? Können Apps eine Anforderung auf Betriebssystemebene für die diskrete Karte stellen, falls vorhanden?

Agentroadkill
quelle
Die Apple Developer-Dokumente können hilfreich sein: developer.apple.com/metal
Khürt Williams

Antworten:

5

Auf hohem Niveau ist es wie bei einem Automatikgetriebe - wenn Sie leicht auf das Gas drücken, steigt der Gashebel, aber wenn Sie auf das Gaspedal treten, schaltet der Motor das Getriebe herunter, um den mechanischen Vorteil zu erhöhen.

Sie können den Wechsel zur leistungsstarken GPU beeinflussen, indem Sie mit erheblichem Aufwand auf die API klicken und erwarten, dass die "Übertragung" diese Last an die nicht integrierte GPU weiterleitet.

Die Dokumentation zur API befindet sich alle in Xcode (und auch online, aber ich bevorzuge die Suche in Xcode, um nach einem Dokument zu suchen).

Ich würde beginnen mit:

Diese Links beziehen sich auf den Mac Pro, und der Abschnitt "Was Sie bei der Verwendung von OpenCL wissen sollten" enthält einen hilfreichen Hinweis, dass in WWDC 2013, Sitzung 508: Arbeiten mit OpenCL, beschrieben wird, wie Sie unter Berücksichtigung der Stromversorgung zwischen zwei GPUs in einem tragbaren Mac wechseln.

bmike
quelle
Sieht interessant aus. Ich werde die Xcode-Dokumente überprüfen, wenn ich später auf meinem Mac bin.
Agentroadkill
Um es klar auszudrücken: Es liegt ganz beim Entwickler der Anwendung, zu entscheiden, ob die App diskrete oder integrierte Grafiken verwenden soll. Das Betriebssystem macht diesen Aufruf nicht selbst?
Agentroadkill
@agentroadkill Ich würde das Gegenteil sagen - der Entwickler kann das Betriebssystem fragen, was gerade passiert, und die Dinge beeinflussen, aber das Betriebssystem beschließt, die Arbeit basierend auf mehreren widersprüchlichen Eingaben zu planen. Schließlich haben Sie möglicherweise Dutzende von GPU-Aufrufen für Apps, die ständig aufgerufen werden.
bmike
Richtig, das Betriebssystem ruft letztendlich an, aber gemäß dem verlinkten Artikel: 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.Damit der Entwickler die Arbeit auf diese GPU übertragen kann, entscheidet das Betriebssystem, ob dies zulässig ist, und entscheidet darüber, aber die App kann die Arbeit dort nach Belieben übertragen.
Agentroadkill