Nvidia Optimus

Last updated

Nvidia Optimus is a computer GPU switching technology created by Nvidia which, depending on the resource load generated by client software applications, will seamlessly switch between two graphics adapters within a computer system in order to provide either maximum performance or minimum power draw from the system's graphics rendering hardware.

Contents

A typical platform includes both a lower-performance integrated graphics processor by Intel/AMD and a high-performance one by Nvidia. Optimus saves battery life by automatically switching the power of the discrete graphics processing unit (GPU) off when it is not needed and switching it on when needed again. The technology mainly targets mobile PCs such as notebooks. [1] [lower-alpha 1] When an application is being launched that is determined to benefit from the performance of the discrete GPU, the discrete GPU is powered up and the application is served by a rendering context via that GPU. Otherwise the application is served by a rendering context that uses the integrated GPU. Switching between the graphics processors is designed to be completely seamless and to happen "behind the scenes".

Official supported operating systems by Nvidia are Microsoft Windows and Linux. A project called Bumblebee [4] is an alternative open source implementation of Optimus support for Linux. [5]

Operation

When a user launches an application, the graphics driver tries to determine whether the application would benefit from the discrete GPU. If so, the GPU is powered up from an idle state and is passed all rendering calls. Even in this case, though, the integrated graphics processor (IGP) is used to output the final image. When less demanding applications are used, the IGP takes sole control, allowing for longer battery life and less fan noise. Under Windows the Nvidia driver also provides the option to manually select the GPU in the right-click menu upon launching an executable.

Within the hardware interface layer of the Nvidia GPU driver, the Optimus Routing Layer provides intelligent graphics management. The Optimus Routing Layer also includes a kernel-level library for recognizing and managing specific classes and objects associated with different graphics devices. This Nvidia innovation performs state and context management, allocating architectural resources as needed for each driver client (i.e., application). In this context-management scheme, each application is not aware of other applications concurrently using the GPU.

By recognizing designated classes, the Optimus Routing Layer can help determine when the GPU can be utilized to improve rendering performance. Specifically, it sends a signal to power-on the GPU when it finds any of the following three call types:

Predefined profiles also assist in determining whether extra graphics power is needed. These can be managed using the Nvidia control panel.

Optimus avoids usage of a hardware multiplexer and prevents glitches associated with changing the display driver from IGP to GPU by transferring the display surface from the GPU frame buffer over the PCI Express bus to the main memory-based framebuffer used by the IGP. The Optimus Copy Engine is a new alternative to traditional DMA transfers between the GPU framebuffer memory and main memory used by the IGP.

Using the IGP to output data from the discrete GPU may become a bottleneck at high framerates. On desktop-replacement or gaming laptops (where performance is prioritized over energy efficiency), Optimus technology has been heavily criticized. Some vendors have provided hardware multiplexer solutions to completely shut off the Optimus architecture. The operation may be hosted in the BIOS, and often require a reboot.

Linux support

In the middle the free and open-source driver stack consisting of Mesa 3D and libDRM in user-space and DRM/KMS driver in the Linux kernel. Nvidia's proprietary kernel blob cannot make uses of DMA-BUF because of license restrictions. The Linux Graphics Stack and glamor.svg
In the middle the free and open-source driver stack consisting of Mesa 3D and libDRM in user-space and DRM/KMS driver in the Linux kernel. Nvidia's proprietary kernel blob cannot make uses of DMA-BUF because of license restrictions.

The binary Nvidia driver added partial Optimus support May 3, 2013 in the 319.17. [6] As of May 2013, power management for discrete card is not supported, which means it cannot save battery by turning off Nvidia graphic card completely. [7]

The open-source project Bumblebee tries to provide support for graphics-chip switching. As in the Windows implementation, by default all applications run through the integrated graphics processor. As of 2013 one can only run a program with improved graphical performance on the discrete GPU by explicitly invoking it as such: for example, by using the command line or through specially configured shortcut icon. Automatic detection and switching between graphics processors is not yet available.

Work in progress on a graphical interface - bumblebee-ui - aims to allow more convenient starting of programs for improved graphical performance when necessary.

Steam for Linux can be set up to run games using the discrete GPU (Steam Community: Optimus and Steam for Linux).

The Bumblebee Project continues to evolve as more necessary software changes are made to the graphics architecture of Linux. To make most use of it, it is best to use a recent Linux distribution. As of 2013, Bumblebee software repositories are available for Arch Linux, Debian, Fedora, Gentoo, Mandriva, OpenSuSE and Ubuntu. The source package can be used for other distributions.

An attempt by Nvidia to support Optimus through DMA-BUF, a Linux kernel-mechanism for sharing buffers across hardware (potentially GPUs), was rebuffed by kernel developers in January 2012 due to license incompatibility between the GPL-licensed kernel-code and the proprietary-licensed Nvidia blob. [8]

When no software mechanism exists for switching between graphics adapters, the system cannot use the Nvidia GPU at all, even if an installed graphics driver would support it. [9]

Modern Optimus Support

Many linux distributions now support Nvidia offloading, where the nvidia card does all rendering. Since the internal laptop display is physically connected to the intel driver, the nvidia card renders to the intel display memory. To avoid tearing, the xorg server has a mechanism called Prime Synchronization to time these buffer updates to avoid tearing, similar to vsync; the nvidia driver must be loaded as a kernel module for this to work. This is not usually activated by default.

Unlike bumblebee, this offloading solution allows multi-monitor graphics. The disadvantage is that toggling the nvidia card requires a logout.

The leading implementation of this approach is Ubuntu's 'prime-select' package, which has a command line and graphical tool to turn the nvidia card off. Unlike Windows, this is not done dynamically, and the user must restart the login session for the change to take effect.

Ubuntu's prime-select script is available on Ubuntu derivatives, which in some cases add their own graphical tools. The prime-offload approach has been ported or reimplemented in arch and fedora.

In 2016, Nvidia announced GL Vendor Neutral Dispatch, meaning both intel and nvidia drivers can be simultaneously installed. This has greatly simplified the process of switching modes, although it took until 2018 until distributions started taking advantage.

Some older and high-end laptops contain a BIOS setting to manually select the state of the hardware multiplexer to switch output between the two video devices. In this case, a Linux user can place the laptop in hardware configurations where there is only once graphics device. This avoids the complexities of running two graphics drivers, but offers no power savings.

Since driver version 435 the proprietary driver supports render offloading of a single window. It creates a virtual display where the dGPU renders to, which will be displayed in the window on the main screen for offloaded application. [10] As of October 2019 this requires usage of the xorg development branch, since needed modifications are not yet released.

See also

Notes

  1. Desktop Optimus was slated to be launched in June of 2011 [2] under the name Synergy, [3] but never made it.

Related Research Articles

<span class="mw-page-title-main">GeForce</span> Range of GPUs by Nvidia

GeForce is a brand of graphics processing units (GPUs) designed by Nvidia and marketed for the consumer market. As of the GeForce 40 series, there have been eighteen iterations of the design. The first GeForce products were discrete GPUs designed for add-on graphics boards, intended for the high-margin PC gaming market, and later diversification of the product line covered all tiers of the PC graphics market, ranging from cost-sensitive GPUs integrated on motherboards, to mainstream add-in retail boards. Most recently, GeForce technology has been introduced into Nvidia's line of embedded application processors, designed for electronic handhelds and mobile handsets.

<span class="mw-page-title-main">Windowing system</span> Software that manages separately different parts of display screens

In computing, a windowing system is a software suite that manages separately different parts of display screens. It is a type of graphical user interface (GUI) which implements the WIMP paradigm for a user interface.

<span class="mw-page-title-main">ATI Technologies</span> Canadian technology corporation

ATI Technologies Inc. was a Canadian semiconductor technology corporation based in Markham, Ontario, that specialized in the development of graphics processing units and chipsets. Founded in 1985 as Array Technology Inc., the company listed publicly in 1993 and was acquired by AMD in 2006. As a major fabrication-less or fabless semiconductor company, ATI conducted research and development in-house and outsourced the manufacturing and assembly of its products. With the decline and eventual bankruptcy of 3dfx in 2000, ATI and its chief rival Nvidia emerged as the two dominant players in the graphics processors industry, eventually forcing other manufacturers into niche roles.

<span class="mw-page-title-main">Graphics processing unit</span> Specialized electronic circuit; graphics accelerator

A graphics processing unit (GPU) is a specialized electronic circuit initially designed to accelerate computer graphics and image processing. After their initial design, GPUs were found to be useful for non-graphic calculations involving embarrassingly parallel problems due to their parallel structure. Other non-graphical uses include the training of neural networks and cryptocurrency mining.

<span class="mw-page-title-main">Scalable Link Interface</span> Brand name; multi-GPU technology by Nvidia

Scalable Link Interface (SLI) is the brand name for a now discontinued multi-GPU technology developed by Nvidia for linking two or more video cards together to produce a single output. SLI is a parallel processing algorithm for computer graphics, meant to increase the available processing power.

The Direct Rendering Manager (DRM) is a subsystem of the Linux kernel responsible for interfacing with GPUs of modern video cards. DRM exposes an API that user-space programs can use to send commands and data to the GPU and perform operations such as configuring the mode setting of the display. DRM was first developed as the kernel-space component of the X Server Direct Rendering Infrastructure, but since then it has been used by other graphic stack alternatives such as Wayland and standalone applications and libraries such as SDL2 and Kodi.

In computing, hardware overlay, a type of video overlay, provides a method of rendering an image to a display screen with a dedicated memory buffer inside computer video hardware. The technique aims to improve the display of a fast-moving video image — such as a computer game, a DVD, or the signal from a TV card. Most video cards manufactured since about 1998 and most media players support hardware overlay.

<span class="mw-page-title-main">Free and open-source graphics device driver</span> Software that controls computer-graphics hardware

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

The Intel Graphics Media Accelerator (GMA) is a series of integrated graphics processors introduced in 2004 by Intel, replacing the earlier Intel Extreme Graphics series and being succeeded by the Intel HD and Iris Graphics series.

X-Video Motion Compensation (XvMC), is an extension of the X video extension (Xv) for the X Window System. The XvMC API allows video programs to offload portions of the video decoding process to the GPU video-hardware. In theory this process should also reduce bus bandwidth requirements. Currently, the supported portions to be offloaded by XvMC onto the GPU are motion compensation and inverse discrete cosine transform (iDCT) for MPEG-2 video. XvMC also supports offloading decoding of mo comp, iDCT, and VLD for not only MPEG-2 but also MPEG-4 ASP video on VIA Unichrome hardware.

nouveau (software) Open source software driver for Nvidia GPU

nouveau is a free and open-source graphics device driver for Nvidia video cards and the Tegra family of SoCs written by independent software engineers, with minor help from Nvidia employees.

AMD PowerPlay is the brand name for a set of technologies for the reduction of the energy consumption implemented in several of AMD's graphics processing units and APUs supported by their proprietary graphics device driver "Catalyst". AMD PowerPlay is also implemented into ATI/AMD chipsets which integrated graphics and into AMD's Imageon handheld chipset, that was sold to Qualcomm in 2008.

<span class="mw-page-title-main">AMD Hybrid Graphics</span> Line of discrete and integrated graphics processing units

AMD Hybrid Graphics technology, is a collective brand from AMD for its Radeon line of discrete and integrated GPU, promoting higher performance and productivity while saving energy consumption in GPUs.

<span class="mw-page-title-main">Intel Graphics Technology</span> Series of integrated graphics processors by Intel

Intel Graphics Technology (GT) is the collective name for a series of integrated graphics processors (IGPs) produced by Intel that are manufactured on the same package or die as the central processing unit (CPU). It was first introduced in 2010 as Intel HD Graphics and renamed in 2017 as Intel UHD Graphics.

<span class="mw-page-title-main">GPU switching</span> Mechanism for computers with multiple graphic controllers

GPU switching is a mechanism used on computers with multiple graphic controllers. This mechanism allows the user to either maximize the graphic performance or prolong battery life by switching between the graphic cards. It is mostly used on gaming laptops which usually have an integrated graphic device and a discrete video card.

<span class="mw-page-title-main">ThinkPad W series</span> Series of laptops by Lenovo

The ThinkPad W-series laptops from Lenovo are described by the manufacturer as being "mobile workstations", and suit that description by being physically on the larger side of the laptop spectrum, with screens ranging from 15" to 17" in size. Most W-series laptops offer high-end quad-core Intel processors with an integrated GPU as well as an Nvidia Quadro discrete GPU, utilizing Nvidia Optimus to switch between the two GPUs as required. Notable exceptions are the W500, which has ATI FireGL integrated workstation-class graphics, and the W550s, which is an Ultrabook-specification laptop with only a dual-core processor. The W-series laptops offer ISV certifications from various vendors such as Adobe Systems and Autodesk for CAD and 3D modeling software.

GPU virtualization refers to technologies that allow the use of a GPU to accelerate graphics or GPGPU applications running on a virtual machine. GPU virtualization is used in various applications such as desktop virtualization, cloud gaming and computational science.

<span class="mw-page-title-main">AMD PowerTune</span> Brand name by AMD

AMD PowerTune is a series of dynamic frequency scaling technologies built into some AMD GPUs and APUs that allow the clock speed of the processor to be dynamically changed by software. This allows the processor to meet the instantaneous performance needs of the operation being performed, while minimizing power draw, heat generation and noise avoidance. AMD PowerTune aims to solve thermal design power and performance constraints.

Pop!_OS Linux distribution

Pop!_OS is a free and open-source Linux distribution, based on Ubuntu, and featuring a customized GNOME desktop environment known as COSMIC. The distribution is developed by American Linux computer manufacturer System76. Pop!_OS is primarily built to be bundled with the computers built by System76, but can also be downloaded and installed on most computers.

<span class="mw-page-title-main">Intel Arc</span> Graphics processing unit brand

Intel Arc is a brand of graphics processing units designed by Intel. These are discrete GPUs mostly marketed for the high-margin PC gaming market. The brand also covers Intel's consumer graphics software and services.

References

  1. "Optimus Technology". Nvidia. 22 October 2012. Retrieved 10 April 2016.
  2. Lee, Terence (23 April 2011). "NVIDIA To Launch Desktop Optimus / Synergy at COMPUTEX" . Retrieved 10 April 2016.
  3. Pop, Sebastian (26 April 2011). "NVIDIA Optimus Lands on Desktops" . Retrieved 10 April 2016.
  4. "Bumblebee Daemon". GitHub. 22 April 2013. Retrieved 10 April 2016.
  5. "Bumblebee version 3.0 "Tumbleweed" release". 20 January 2012. Retrieved 10 April 2016.
  6. Plattner, Aaron (2 May 2013). "Linux, Solaris, and FreeBSD driver 319.17 (long-lived branch release)". Nvidia . Retrieved 10 April 2016.
  7. "Релиз проприетарного драйвера NVIDIA 319.17 с поддержкой Optimus и RandR 1.4" (in Russian). 2 May 2013. Retrieved 10 April 2016.
  8. "NVIDIA Talks Of Optimus Possibilities For Linux". Phoronix. January 25, 2012.
  9. "On laptops that don't have that hardware mux you currently cannot use the NVIDIA GPU for display.", July 23, 2010, accessed November 27, 2010. Archived July 18, 2011, at the Wayback Machine
  10. "Chapter 35. PRIME Render Offload". download.nvidia.com. Retrieved 2019-10-09.