Як OS X вирішує, коли переключити графічні процесори?


9

Я використовую свій MacBook Pro на початку 2011 року 15 "для майже всього, що знаходиться під сонцем - я часто відстежую, який графічний процесор активний за допомогою gfxCardStatus . Я помітив деякі ідіосинкразії в тому, як OS X вирішує, коли переключати графічні процесори:

  • НАЙБІЛЬШІ програми, які потребують X11, запускають автоматичне перемикання, але не всі
  • Здається, кожен додаток, що вимагає Java, запустить автоматичне перемикання, хоча я не перевіряв це на додатках, що не мають GUI.
  • Деякі додатки (наприклад, Mathematica або XCode), яким МОЖЕ бути потрібний високоефективний графічний процесор, змусять рухатись до дискретної картки відразу, навіть якщо їх запускають лише для тривіального завдання (динамічне перемикання в додатку було б крутим, поза темою)
  • Багато застарілих додатків (Silverlight), які не мають жодного ділового запиту на мою дискретну карту, змусять її бездарно
  • Нарешті, деякі програми (зокрема, GIMP), які безумовно могли отримати вигоду від дискретного GPU, насправді взагалі не вимагають цього.

Чи документує Apple, як він вибирає, коли перемикати карти? Чи можуть додатки подавати запит на ОС для дискретної картки, якщо вона існує?


Документи для розробників Apple можуть допомогти: developer.apple.com/metal
Хюрт Вільямс

Відповіді:


5

На високому рівні це схоже на автоматичну коробку передач - коли тихо натискаєш на газ, дросель збільшується, але коли ти тупаєш по педалі прискорювача, двигун опускає коробку передач, щоб збільшити механічну перевагу.

Ви можете вплинути на перехід на потужний GPU, вразивши API значною роботою і очікуйте, що "передача" відправить це завантаження в неінтегрований графічний процесор.

Документація в API є в Xcode (і в Інтернеті теж, але я вважаю за краще використовувати пошук по Xcode для полювання на документ).

Я б почав із:

Ці посилання охоплюють Mac Pro, а в розділі "Що слід знати при використанні OpenCL" міститься корисна примітка про те, що WWDC 2013 Session 508: Робота з OpenCL описує, як перемикатися між двома графічними процесорами на портативному комп'ютері Mac, використовуючи енергетичні міркування.


Виглядає цікаво. Я перевірю документи Xcode, коли пізніше я буду на своєму Mac.
agentroadkill

Тож, щоб було зрозуміло - розробник додатку повністю вирішує, чи повинен додаток використовувати дискретну або інтегровану графіку? ОС не робить цей дзвінок самостійно?
agentroadkill

@agentroadkill Я б сказав, що це навпаки - розробник може запитати ОС, що зараз відбувається, і може впливати на речі, але ОС вирішує запланувати роботу на основі кількох конфліктуючих входів. Зрештою, у вас можуть бути десятки додатків, які машинні GPU дзвінки постійно.
bmike

Правильно, ОС в кінцевому підсумку здійснює дзвінок, але відповідно до відповідної статті: 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.Таким чином, розробник може вибрати, щоб підштовхнути роботу до цього графічного процесора, ОС вирішить, чи це дозволено, і арбітражувати це, але додаток може за власним бажанням працювати там.
agentroadkill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.