Como o OS X decide quando trocar os processadores gráficos?


9

Uso meu MacBook Pro de 15 polegadas no início de 2011 para quase tudo sob o sol - monitoro frequentemente qual GPU está ativa usando gfxCardStatus . Percebi algumas idiossincrasias na maneira como o OS X decide quando alternar os processadores gráficos:

  • A maioria dos aplicativos que exigem o X11 acionará a troca automática, mas nem todos
  • Parece que todo aplicativo que requer java acionará a troca automática, embora eu não o tenha testado com aplicativos que não são da GUI.
  • Alguns aplicativos (como Mathematica ou XCode), que PODERAM exigir uma GPU de alto desempenho, forçarão o movimento para o cartão discreto imediatamente, mesmo que apenas sejam acionados para uma tarefa trivial (alternar dinamicamente no aplicativo seria interessante, fora de tópico)
  • Muitos aplicativos herdados (silverlight) que não têm nenhum negócio em pedir meu cartão discreto o forçarão de forma irrelevante
  • Finalmente, alguns aplicativos (GIMP, em particular) que definitivamente poderiam se beneficiar de uma GPU discreta, na verdade, não pedem nada.

A Apple documenta como escolhe quando trocar de cartão? Os aplicativos podem fazer uma solicitação no nível do sistema operacional para o cartão discreto, se existir?


Os documentos de desenvolvedores da Apple podem ajudar: developer.apple.com/metal
— Khürt Williams

Respostas:


5

Em um nível alto, é como uma transmissão automática - quando você pressiona o acelerador suavemente, o acelerador aumenta, mas quando você pisa no pedal do acelerador, o motor reduz a velocidade da transmissão para aumentar a vantagem mecânica.

Você pode influenciar a mudança para a poderosa GPU pressionando a API com um trabalho significativo e espera que a "transmissão" despache esse carregamento para a GPU não integrada.

A documentação da API está toda no Xcode (e online também, mas eu prefiro usar a pesquisa no Xcode para procurar um documento).

Eu começaria com:

  • xcdoc: //? url = developer.apple.com / library / etc / redirect / xcode / mac / 1153 / technotes / tn2335 / _index.html ( link on-line do mesmo artigo )

Esses links abrangem o Mac Pro e a seção "O que você deve saber ao usar o OpenCL" contém uma observação útil de que a Sessão 508 da WWDC 2013: Trabalhando com o OpenCL descreve como alternar entre duas GPUs em um Mac portátil usando considerações de energia.


Parece interessante. Vou verificar os documentos do Xcode quando estiver no meu Mac mais tarde.
— agentroadkill

Portanto, para deixar claro: é de inteira responsabilidade do desenvolvedor do aplicativo decidir se o aplicativo deve usar gráficos discretos ou integrados? O sistema operacional não faz essa chamada em si?
— agentroadkill

@agentroadkill Eu diria o contrário - o desenvolvedor pode perguntar ao sistema operacional o que está acontecendo agora e pode influenciar as coisas, mas o sistema operacional está decidindo agendar o trabalho com base em várias entradas conflitantes. Afinal, você pode ter dezenas de aplicativos na GPU da máquina continuamente.
— bmike

Certo, o sistema operacional finalmente faz a ligação, mas de acordo com o artigo vinculado: para que 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.o desenvolvedor possa optar por enviar trabalho para essa GPU, o sistema operacional decidirá se é permitido e arbitrará isso, mas o aplicativo poderá enviar seu trabalho para lá, à vontade.
— agentroadkill
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.