stringtranslate.com

Nvidia Оптимус

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

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

Официально поддерживаемые операционные системы Nvidia — Microsoft Windows и Linux . Проект Bumblebee [4] — это альтернативная реализация поддержки Optimus с открытым исходным кодом для Linux. [5]

Операция

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

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

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

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

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

Использование IGP для вывода данных с дискретного GPU может стать узким местом при высокой частоте кадров. На ноутбуках, заменяющих настольные компьютеры, или игровых ноутбуках (где производительность имеет приоритет над энергоэффективностью) технология Optimus подверглась резкой критике. Некоторые поставщики предоставили аппаратные мультиплексорные решения для полного отключения архитектуры Optimus. Операция может быть размещена в BIOS и часто требует перезагрузки.

Поддержка Linux

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

Несмотря на историческую проблематичность, двоичный драйвер Nvidia, начиная с бета-версии 435.17, официально поддерживает разгрузку рендеринга Optimus для приложений OpenGL и Vulkan под названием «PRIME». [6]

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

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

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

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

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

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

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

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

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

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

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

Скрипт prime-select Ubuntu доступен в производных Ubuntu, которые в некоторых случаях добавляют свои собственные графические инструменты. Подход prime-offload был перенесен или переработан в arch и fedora.

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

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

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

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

Примечания

  1. ^ Desktop Optimus планировалось выпустить в июне 2011 года [2] под названием Synergy [3] , но этого так и не произошло.

Ссылки

  1. ^ "Optimus Technology". Nvidia . 22 октября 2012 г. Получено 10 апреля 2016 г.
  2. ^ Ли, Теренс (23 апреля 2011 г.). «NVIDIA представит Desktop Optimus / Synergy на выставке COMPUTEX» . Получено 10 апреля 2016 г.
  3. Поп, Себастьян (26 апреля 2011 г.). "NVIDIA Optimus выходит на настольные компьютеры" . Получено 10 апреля 2016 г.
  4. ^ "Bumblebee Daemon". GitHub . 22 апреля 2013 г. Получено 10 апреля 2016 г.
  5. ^ "Bumblebee version 3.0 "Tumbleweed" release". 20 января 2012 г. Получено 10 апреля 2016 г.
  6. ^ Ларабель, Майкл (13 августа 2019 г.). «NVIDIA 435.17 Linux Beta Driver Adds Vulkan + OpenGL PRIME Render Offload». Phoronix . Получено 3 марта 2024 г. .
  7. ^ Платтнер, Аарон (2 мая 2013 г.). "Драйвер Linux, Solaris и FreeBSD 319.17 (выпуск долгоживущей ветки)". Nvidia . Получено 10 апреля 2016 г. .
  8. ^ "Релиз проприетарного драйвера NVIDIA 319.17 с поддержкой Optimus и RandR 1.4" (на русском языке). 2 мая 2013 года . Проверено 10 апреля 2016 г.
  9. ^ "NVIDIA говорит о возможностях Optimus для Linux". Phoronix. 25 января 2012 г.
  10. ^ «На ноутбуках, не имеющих этого аппаратного мультиплексора, в настоящее время невозможно использовать графический процессор NVIDIA для отображения.», 23 июля 2010 г., доступ 27 ноября 2010 г. Архивировано 18 июля 2011 г. на Wayback Machine
  11. ^ "Глава 35. PRIME Render Offload". download.nvidia.com . Получено 2019-10-09 .