Nvidia Optimus - Nvidia Optimus

Nvidia Optimus это компьютер Переключение графического процессора технология, созданная Nvidia который, в зависимости от нагрузки на ресурсы, создаваемой клиентскими программными приложениями, будет плавно переключаться между двумя графическими адаптерами в компьютерной системе, чтобы обеспечить максимальную производительность или минимальное энергопотребление аппаратного обеспечения графического рендеринга системы.

Типичная платформа включает в себя как низкопроизводительные встроенный графический процессор к Intel и высокопроизводительный от Nvidia. Optimus экономит заряд батареи за счет автоматического переключения питания дискретного графический процессор (GPU) выключить, когда он не нужен, и снова включить его, когда он понадобится. Технология в основном предназначена для мобильных ПК, таких как записные книжки.[1][а] Когда запускается приложение, которое определено, чтобы получить выгоду от производительности дискретного графического процессора, дискретный графический процессор включается, и приложение обслуживается контекстом рендеринга через этот графический процессор. В противном случае приложение обслуживается контекстом рендеринга, который использует встроенный графический процессор. Переключение между графическими процессорами должно быть полностью незаметным и происходить «за кадром».

Официально поддерживаемые Nvidia операционные системы: Майкрософт Виндоус и Linux. Проект под названием Bumblebee[4] альтернатива Открытый исходный код реализация поддержки Optimus для Linux.[5]

Операция

Когда пользователь запускает приложение, графика Водитель пытается определить, выиграет ли приложение от дискретного графического процессора. Если да, то графический процессор получает питание от праздный состояние и передаются все вызовы рендеринга. Однако даже в этом случае для вывода окончательного изображения используется встроенный графический процессор (IGP). Когда используются менее требовательные приложения, IGP берет на себя единоличное управление, что позволяет продлить срок службы батареи и снизить шум вентилятора. В Windows драйвер Nvidia также предоставляет возможность вручную выбрать графический процессор в контекстном меню при запуске исполняемого файла.

На уровне аппаратного интерфейса драйвера графического процессора Nvidia уровень маршрутизации Optimus обеспечивает интеллектуальное управление графикой. Слой маршрутизации Optimus также включает ядро -уровневая библиотека для распознавания и управления конкретными классами и объектами, связанными с различными графическими устройствами. Это нововведение Nvidia выполняет управление состоянием и контекстом, распределяя архитектурные ресурсы по мере необходимости для каждого клиента-драйвера (т. Е. Приложения). В этой схеме управления контекстом каждое приложение не знает о других приложениях, одновременно использующих графический процессор.

Распознавая назначенные классы, Optimus Routing Layer может помочь определить, когда можно использовать графический процессор для повышения производительности рендеринга. В частности, он отправляет сигнал на включение графического процессора, когда обнаруживает любой из следующих трех типов вызовов:

  • DX Calls: любой движок 3D-игры или DirectX приложение вызовет эти вызовы
  • DXVA Вызовы: воспроизведение видео будет запускать эти вызовы (DXVA = DirectX Video Acceleration)
  • CUDA Вызовы: приложения CUDA будут запускать эти вызовы

Предопределенные профили также помогают определить, требуется ли дополнительная графическая мощность. Этим можно управлять с помощью панели управления Nvidia.

Optimus избегает использования оборудования мультиплексор и предотвращает сбои, связанные с изменением драйвера дисплея с IGP на GPU, путем переноса поверхности дисплея с GPU кадровый буфер по шине PCI Express в основной буфер кадра памяти, используемый IGP. Optimus Copy Engine - новая альтернатива традиционным DMA передача между памятью кадрового буфера графического процессора и основной памятью, используемой IGP.

Поддержка Linux

Посередине бесплатный стек драйверов с открытым исходным кодом, состоящий из Меса 3D и libDRM в пользовательском пространстве и DRM /Драйвер KMS в ядре Linux. Запатентованный BLOB-объект ядра Nvidia не может использовать DMA BUF из-за лицензионных ограничений.


Бинарный драйвер Nvidia добавил частичную поддержку Optimus 3 мая 2013 г. в версии 319.17.[6] По состоянию на май 2013 года управление питанием для дискретной карты не поддерживается, что означает, что он не может сэкономить заряд батареи, полностью отключив графическую карту Nvidia.[7]

Проект с открытым исходным кодом Шмель пытается обеспечить поддержку переключения графического чипа. Как и в реализации Windows, по умолчанию все приложения работают через встроенный графический процессор. По состоянию на 2013 год можно только запустить программу с улучшенной графической производительностью на дискретном графическом процессоре, явно вызвав ее как таковую: например, используя командная строка или через специально настроенный ярлык. Автоматическое определение и переключение между графическими процессорами пока недоступно.

Идет работа над графический интерфейс - шмель - призван обеспечить более удобный запуск программ для улучшения графической производительности при необходимости.

Пар для Linux можно настроить для запуска игр с использованием дискретного графического процессора (Сообщество Steam: Optimus и Steam для Linux ).

Проект Bumblebee продолжает развиваться, поскольку в графическую архитектуру Linux вносятся все более необходимые изменения программного обеспечения. Чтобы максимально использовать его, лучше всего использовать последний дистрибутив Linux. По состоянию на 2013 год, Репозитории программного обеспечения Bumblebee доступны для Arch Linux, Debian, Fedora, Gentoo, Mandriva, OpenSuSE и Ubuntu. Пакет с исходным кодом можно использовать для других дистрибутивов.

Попытка Nvidia поддержать Оптимуса через DMA BUF, а Ядро Linux -механизм обмена буферы через оборудование (потенциально графические процессоры), разработчики ядра отвергли в январе 2012 года из-за лицензия несовместимость между GPL лицензионный код ядра и проприетарная лицензия Nvidia капля.[8]

Когда не существует программного механизма для переключения между графическими адаптерами, система вообще не может использовать графический процессор Nvidia, даже если установленный графический драйвер будет его поддерживать.[9]

Современная поддержка Optimus

Многие дистрибутивы Linux теперь поддерживают разгрузку Nvidia, когда карта nvidia выполняет весь рендеринг. Поскольку внутренний дисплей ноутбука физически подключен к драйверу Intel, карта NVIDIA отображает память дисплея Intel. Чтобы избежать разрывов, на сервере xorg есть механизм, называемый Prime Synchronization, который синхронизирует эти обновления буфера, чтобы избежать разрывов, аналогично vsync; чтобы это работало, драйвер nvidia должен быть загружен как модуль ядра. Обычно это не активируется по умолчанию.

В отличие от bumblebee, это решение для разгрузки позволяет использовать графику с несколькими мониторами. Недостатком является то, что для переключения карты nvidia требуется выход из системы.

Ведущей реализацией этого подхода является пакет Ubuntu «prime-select», в котором есть командная строка и графический инструмент для отключения карты nvidia. В отличие от Windows, это не выполняется динамически, и пользователь должен перезапустить сеанс входа в систему, чтобы изменения вступили в силу.

Сценарий основного выбора Ubuntu доступен в производных Ubuntu, которые в некоторых случаях добавляют свои собственные графические инструменты. Подход Prime-Offload был перенесен или повторно реализован в Arch и Fedora.

В 2016 году Nvidia анонсировала GL Vendor Neutral Dispatch, что означает, что драйверы Intel и NVIDIA могут быть установлены одновременно. Это значительно упростило процесс переключения режимов, хотя до тех пор, пока дистрибутивы не начали пользоваться преимуществами, потребовалось до 2018 года.

Некоторые старые и дорогие ноутбуки содержат BIOS настройка для ручного выбора состояния аппаратного мультиплексора для переключения вывода между двумя видеоустройствами. В этом случае пользователь Linux может поместить ноутбук в аппаратную конфигурацию, где есть только одно графическое устройство. Это позволяет избежать сложностей, связанных с запуском двух графических драйверов, но не обеспечивает экономии энергии.

Начиная с версии драйвера 435, проприетарный драйвер поддерживает выгрузку рендеринга одного окна. Он создает виртуальный дисплей, на котором выполняется рендеринг dGPU, который будет отображаться в окне на главном экране для выгруженного приложения.[10] По состоянию на октябрь 2019 года для этого требуется использование ветки разработки xorg, поскольку необходимые модификации еще не выпущены.

Смотрите также

Примечания

  1. ^ Desktop Optimus должен был быть выпущен в июне 2011 года.[2] под именем Синергия,[3] но так и не успел.

Рекомендации

  1. ^ «Оптимус Технологии». Nvidia. Получено 10 апреля 2016.
  2. ^ Ли, Теренс (23 апреля 2011 г.). «NVIDIA представит Desktop Optimus / Synergy на выставке COMPUTEX». Получено 10 апреля 2016.
  3. ^ Поп, Себастьян (26 апреля 2011 г.). «NVIDIA Optimus приземляется на настольные компьютеры». Получено 10 апреля 2016.
  4. ^ "Демон шмеля". GitHub. 22 апреля 2013 г.. Получено 10 апреля 2016.
  5. ^ "Шмель версии 3.0" Tumbleweed "релиз". 20 января 2012 г.. Получено 10 апреля 2016.
  6. ^ Платтнер, Аарон (2 мая 2013 г.). «Драйвер 319.17 для Linux, Solaris и FreeBSD (долгоживущий выпуск ветки)». Nvidia. Получено 10 апреля 2016.
  7. ^ "Релиз проприетарного драйвера NVIDIA 319.17 с поддержкой Optimus и RandR 1.4" (на русском). 2 мая 2013. Получено 10 апреля 2016.
  8. ^ «NVIDIA говорит о возможностях Optimus для Linux». Фороникс. 25 января 2012 г.
  9. ^ «На ноутбуках, у которых нет этого аппаратного мультиплексора, в настоящее время нельзя использовать графический процессор NVIDIA для отображения»., 23 июля 2010 г., по состоянию на 27 ноября 2010 г. В архиве 18 июля 2011 г. Wayback Machine
  10. ^ «Глава 35. Разгрузка рендера PRIME». download.nvidia.com. Получено 2019-10-09.

внешняя ссылка