Comment OS X décide-t-il quand changer de processeur graphique?

9

J'utilise mon MacBook Pro 15 "début 2011 pour presque tout sous le soleil. Je contrôle souvent quel GPU est actif à l'aide de gfxCardStatus . J'ai remarqué certaines particularités dans la façon dont OS X décide de changer de processeur graphique:

  • La plupart des applications nécessitant X11 déclenchent la commutation automatique, mais pas toutes.
  • Il semble que toutes les applications nécessitant Java déclenchent la commutation automatique, bien que je n’aie pas testé cela avec des applications non graphiques.
  • Certaines applications (comme Mathematica ou XCode) qui POURRAIENT nécessiter un processeur graphique haute performance forceront immédiatement le déplacement vers la carte discrète, même si elles ne sont lancées que pour une tâche triviale (un changement dynamique dans l'application serait cool, hors sujet)
  • De nombreuses applications héritées (Silverlight) qui n'ont pas à demander de ma carte discrète vont forcer la regarless
  • Enfin, certaines applications (GIMP, en particulier) qui pourraient certainement bénéficier d’un GPU discret ne le demandent pas du tout.

Apple indique-t-il comment il choisit quand changer de carte? Les applications peuvent-elles faire une demande au niveau du système d'exploitation pour la carte discrète si elle existe?

agentroadkill
la source
Les documents du développeur Apple peuvent vous aider: developer.apple.com/metal
Khürt Williams

Réponses:

5

À un niveau élevé, cela ressemble à une transmission automatique: lorsque vous appuyez doucement sur l’essence, le papillon des gaz augmente, mais lorsque vous appuyez sur la pédale d’accélérateur, le moteur rétrograde la transmission pour augmenter l’avantage mécanique.

Vous pouvez influer sur le passage au puissant processeur graphique en tapant sur l'API avec un travail considérable et en espérant que la "transmission" envoie cette charge au GPU non intégré.

La documentation sur l'API est entièrement dans Xcode (et en ligne aussi, mais je préfère utiliser la recherche sur Xcode pour rechercher un document).

Je commencerais par:

Ces liens couvrent le Mac Pro et la section "Ce que vous devez savoir lors de l'utilisation d'OpenCL" contient une note utile intitulée WWDC 2013 Session 508: Utilisation d'OpenCL. explique comment basculer entre deux GPU dans un portable Mac en tenant compte de considérations d'alimentation

bmike
la source
Semble intéressant. Je vérifierai les documents Xcode lorsque je serai sur mon Mac plus tard.
agentroadkill
Donc pour être clair - c'est au développeur de l'application de décider si l'application doit utiliser des graphiques discrets ou intégrés? Le système d'exploitation ne fait pas cet appel lui-même?
agentroadkill
@agentroadkill Je dirais le contraire: le développeur peut demander au système d'exploitation ce qui se passe actuellement et peut influencer les choses, mais le système d'exploitation décide de planifier le travail en fonction de plusieurs entrées en conflit. Après tout, vous pourriez avoir des dizaines d'appels sur le GPU de la machine d'applications en continu.
bmike
Oui, le système d’exploitation finit par appeler, mais selon l’article lié: 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. Donc, le développeur peut choisir de pousser le travail sur ce GPU, le système d'exploitation décidera si c'est autorisé et l'arbitrera, mais l'application peut pousser son travail là-bas, à volonté.
agentroadkill