GPU switching

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.

Basic components
Most computers using this feature contain integrated graphics processors and dedicated graphics cards that applies to the following categories.

Integrated graphics
Also known as: Integrated graphics, shared graphics solutions, integrated graphics processors (IGP) or unified memory architecture (UMA). This kind of graphics processors usually have much fewer processing units and share the same memory with the CPU. Sometimes the graphics processors are integrated onto a motherboard. It is commonly known as: on-board graphics. A motherboard with on-board graphics processors doesn't require a discrete graphics card or a CPU with graphics processors to operate.

Dedicated graphics cards
Also known as: discrete graphics cards. Unlike integrated graphics, dedicated graphics cards have much more processing units and have its own RAM with much higher memory bandwidth.

In some cases, a dedicated graphics chip can be integrated onto the motherboards, B150-GP104 for example. Regardless of the fact that the graphics chip is integrated, it is still counted as a dedicated graphics cards system because the graphics chip is integrated with its own memory.

Theory
Most Personal Computers have a motherboard that uses a Southbridge and Northbridge structure.

Northbridge control
The Northbridge is one of the core logic chipset that handles communications between the CPU, GPU, RAM and the Southbridge. The discrete graphics card is usually installed onto the graphics card slot such as PCI-Express and the integrated graphics is integrated onto the CPU itself or occasionally onto the Northbridge. The Northbridge is the most responsible for switching between GPUs. The way how it works usually has the following process (refer to the Figure 1. on the right):
 * 1) The Northbridge receives input from Southbridge through the internal bus.
 * 2) The Northbridge signals to CPU through the Front-side bus.
 * 3) The CPU runs the task assignment application (usually the graphics card driver) to determine which GPU core to use.
 * 4) The CPU passes down the command to the Northbridge.
 * 5) The Northbridge passes down the command to the according GPU core.
 * 6) The GPU core processes the command and returns the rendered data back to the Northbridge.
 * 7) The Northbridge sends the rendered data back to Southbridge.

Southbridge control
The Southbridge is a set of integrated circuits such Intel's I/O Controller Hub (ICH). It handles all of a computer's I/O functions, such as receiving the keyboard input and outputting the data onto the screen. The way how it usually works usually has two steps: The reason why the second step can be optional is that sometimes the rendered the data is outputted directly from the discrete graphics card which is located on the graphics card slot so there is no need to output the data through the Southbridge.
 * 1) Take in the user input and pass it down to the Northbridge.
 * 2) (Optional) Receive the rendered data from the Northbridge and output it.

Main purpose
GPU switching is mostly used for saving energy by switching between graphic cards. The dedicated graphics cards consume much more power than integrated graphics but also provides higher 3D performances, which is needed for a better gaming and CAD experience. Following is a list of the TDPs of the most popular CPU with integrated graphics and dedicated graphics cards.

The dedicated graphics cards exhibit much higher power consumption than the integrated graphics on both platforms. Disabling them when no heavy graphics processing is needed can significantly lower the power consumption.

Nvidia Optimus
Nvidia Optimus™ is a computer GPU switching technology created by Nvidia that can dynamically and seamlessly switch between two graphic cards based on running programs.

AMD Enduro
AMD Enduro™ is a collective brand developed by AMD that features many new technologies that can significantly save power. It was previously named as: PowerXpress and Dynamic Switchable Graphics (DSG). This technology implements a sophisticated system to predict the potential usage need for graphics cards and switch between graphics cards based on predicted need. This technology also introduces a new power control plan that allows the discrete graphics cards consume no energy when idling.

Integrated graphics
In personal computers, the IGP (integrated graphics processors) are mostly manufactured by Intel and AMD and are integrated onto their CPUs. They are commonly known as:
 * Intel HD and Iris Graphics - also called HD series and Iris series
 * AMD Accelerated Processing Unit (APU) - also formerly known as: fusion

Dedicated graphics cards
The most popular dedicated graphics cards are manufactured by AMD and Nvidia. They are commonly known as:
 * AMD Radeon
 * Nvidia GeForce

Drivers & OS support
Most common operating systems have built-in support for this feature. However, the users may download the updated drivers from Nvidia or AMD for better experience.

Windows support
Windows 7 has built-in support for this feature. The system automatically switches between GPUs depending on the program that's running. However, the user may switch the GPUs manually through device manager or power manager.

Linux support
In the Linux systems, a patch named has been added to the Linux kernel since version 2.6.34 in order to deal with multiple GPUs. Here, the switch requires a restart of the X Window System to be taken into account.

Ubuntu Control Center allows the user to access  functionality through a GUI.

Mac OS support
Mac OS has built-in support for this feature since v10.5 Leopard. Since OS X Mountain Lion, Apple has integrated the GPU monitor into the Activity Monitor.

Existing troubles

 * System incompatibility or unstable power supply may cause Blue Screen of Death or other bugs
 * Unable to switch if the system wrongly estimated the required computing resource
 * Switching may cause unstable voltage which can lead to flashy screen
 * Inconsistent drivers across vendors for smooth switching