Jak OS X decyduje, kiedy zamienić procesory graficzne?

9

Korzystam z mojego 15- calowego MacBooka Pro z 2011 r. Do prawie wszystkiego pod słońcem - często monitoruję, który procesor graficzny jest aktywny za pomocą gfxCardStatus . Zauważyłem pewne dziwactwa w tym, jak OS X decyduje, kiedy zmienić procesory graficzne:

  • Większość aplikacji wymagających X11 uruchomi automatyczne przełączanie, ale nie wszystkie
  • Wygląda na to, że każda aplikacja, która wymaga java, wyzwoli automatyczne przełączanie, chociaż nie przetestowałem tego z aplikacjami innymi niż GUI.
  • Niektóre aplikacje (takie jak Mathematica lub XCode), które MUSZĄ wymagać wysokowydajnego procesora graficznego, natychmiast wymuszą przejście na kartę dyskretną, nawet jeśli uruchomią się tylko w przypadku trywialnego zadania (dynamiczne przełączanie w aplikacji byłoby fajne, nie na temat)
  • Wiele starszych aplikacji (silverlight), które nie mają potrzeby prosić o moją dyskretną kartę, zmusi ją do powtarzania
  • Wreszcie, niektóre aplikacje (w szczególności GIMP), które z pewnością mogłyby skorzystać z dyskretnego procesora graficznego, wcale o to nie proszą.

Czy Apple dokumentuje, w jaki sposób wybiera karty? Czy aplikacje mogą zgłaszać żądania dotyczące karty dyskretnej na poziomie systemu operacyjnego, jeśli takie istnieją?

agentroadkill
źródło
Dokumenty Apple Developer mogą pomóc: developer.apple.com/metal
Khürt Williams

Odpowiedzi:

5

Na wysokim poziomie jest to jak automatyczna skrzynia biegów - kiedy delikatnie naciskasz gaz, przepustnica zwiększa się, ale kiedy naciskasz na pedał przyspieszenia, silnik zmniejsza bieg skrzyni biegów, aby zwiększyć przewagę mechaniczną.

Możesz wpłynąć na przejście na potężny procesor GPU, uderzając interfejs API w znaczną pracę i oczekując, że „transmisja” wyśle ​​to obciążenie do niezintegrowanego GPU.

Dokumentacja interfejsu API znajduje się w Xcode (i również w trybie online, ale wolę korzystać z wyszukiwania w Xcode, aby znaleźć dokument).

Zacząłbym od:

Łącza te dotyczą komputera Mac Pro, a sekcja „Co powinieneś wiedzieć podczas korzystania z OpenCL” zawiera przydatną notatkę, że WWDC 2013 Sesja 508: Praca z OpenCL opisuje, jak przełączać się między dwoma procesorami graficznymi w komputerze przenośnym na komputerze Mac, biorąc pod uwagę względy mocy.

bmike
źródło
Wygląda ciekawie. Sprawdzę dokumenty Xcode, kiedy będę później na komputerze Mac.
agentroadkill
Tak więc, żeby było jasne - to od programisty aplikacji zależy decyzja, czy aplikacja powinna używać dyskretnej czy zintegrowanej grafiki? System operacyjny nie wykonuje tego połączenia?
agentroadkill,
@agentroadkill Powiedziałbym, że jest odwrotnie - programista może zapytać system operacyjny, co się teraz dzieje i może wpłynąć na różne rzeczy, ale system operacyjny decyduje o zaplanowaniu pracy na podstawie wielu sprzecznych danych wejściowych. W końcu możesz mieć ciągłe dziesiątki aplikacji na GPU.
bmike
Zgadza się, system operacyjny ostatecznie nawiązuje połączenie, ale na podstawie powiązanego artykułu: 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.więc deweloper może zdecydować się na przekazanie pracy do tego procesora graficznego, system operacyjny zdecyduje, czy jest to dozwolone, i rozstrzygnie to, ale aplikacja może w dowolnym momencie przekazać swoją pracę.
agentroadkill,