¿Cómo decide OS X cuándo cambiar los procesadores gráficos?

9

Utilizo mi MacBook Pro de 15 "de principios de 2011 para casi todo bajo el sol. A menudo monitorizo ​​qué GPU está activa usando gfxCardStatus . He notado algunas idiosincrasias en cómo OS X decide cuándo cambiar los procesadores gráficos:

  • La mayoría de las aplicaciones que requieren X11 activarán el cambio automático, pero no todas
  • Parece que todas las aplicaciones que requieren Java activarán el cambio automático, aunque no lo he probado con aplicaciones que no son GUI.
  • Algunas aplicaciones (como Mathematica o XCode) que PODRÍAN requerir una GPU de alto rendimiento forzarán el movimiento a la tarjeta discreta de inmediato, incluso si solo se activan para una tarea trivial (el cambio dinámico en la aplicación sería genial, fuera de tema)
  • Muchas aplicaciones heredadas (silverlight) que no tienen por qué solicitar mi tarjeta discreta la obligarán a que no tenga en cuenta
  • Finalmente, algunas aplicaciones (GIMP, en particular) que definitivamente podrían beneficiarse de una GPU discreta en realidad no la solicitan en absoluto.

¿Apple documenta cómo elige cuándo cambiar las tarjetas? ¿Pueden las aplicaciones hacer una solicitud de nivel de sistema operativo para la tarjeta discreta si existe?

agentroadkill
fuente
Los documentos para desarrolladores de Apple pueden ayudar: developer.apple.com/metal
Khürt Williams

Respuestas:

5

En un nivel alto, es como una transmisión automática: cuando presiona el acelerador suavemente, el acelerador aumenta, pero cuando pisa el pedal del acelerador, el motor reduce la transmisión para aumentar la ventaja mecánica.

Puede influir en el cambio a la potente GPU golpeando la API con un trabajo significativo y esperar que la "transmisión" envíe esa carga a la GPU no integrada.

La documentación en la API está en Xcode (y en línea también, pero prefiero usar la búsqueda en Xcode para buscar un documento).

Yo comenzaría con:

Esos enlaces cubren el Mac Pro y la sección "Lo que debe saber cuando usa OpenCL" contiene una nota útil de que la Sesión 508 de WWDC 2013: Trabajar con OpenCL describe cómo cambiar entre dos GPU en un portátil Mac usando consideraciones de energía.

bmike
fuente
Parece interesante. Revisaré los documentos de Xcode cuando esté en mi Mac más tarde.
agentroadkill
Para ser claros, ¿depende totalmente del desarrollador de la aplicación decidir si la aplicación debe usar gráficos discretos o integrados? ¿El sistema operativo no hace esta llamada por sí mismo?
agentroadkill
@agentroadkill Yo diría lo contrario: el desarrollador puede preguntarle al sistema operativo qué está sucediendo ahora y puede influir en las cosas, pero el sistema operativo está decidiendo programar el trabajo en función de múltiples entradas en conflicto. Después de todo, es posible que tenga docenas de aplicaciones de llamadas de GPU de máquina continuamente.
bmike
Correcto, el sistema operativo finalmente hace la llamada, pero según el artículo vinculado: 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.para que el desarrollador pueda optar por impulsar el trabajo a esa GPU, el sistema operativo decidirá si está permitido y arbitrará eso, pero la aplicación puede impulsar su trabajo allí, a voluntad.
agentroadkill