Multi-GPU systems
Locate and work with internal and external GPUs and their displays, video memory, and performance tradeoffs.
Overview
Your app can submit work to any or all of the GPUs of a system that supports multiple GPUs. For example, every Mac notebook, such as a MacBook Pro, has an internal GPU, but some have two.
[Image]
A Mac may have a Thunderbolt connection to an external GPU and its displays.
[Image]
Some systems may have even more complicated arrangements of internal and multiple external GPUs and displays.
[Image]
For more information about Mac configurations with GPUs and displays, see Assessing multi-GPU and multidisplay setups on an Intel-based Mac.
Start by locating all GPUs in a system and identifying their types (see Finding multiple GPUs on an Intel-based Mac). Alternatively, you can locate a specific GPU that’s driving a display (see Getting the GPU that drives a view’s display).
When selecting a GPU, consider its memory bandwidth and the storage mode options for its memory resources (see Adjusting for GPU memory bandwidth tradeoffs).
For examples of how to use external GPUs in your graphics rendering or compute processing workflows, see the following:
For more information about external GPU configurations, see Use an external graphics processor with your Mac.
Topics
Locating GPUs
Finding multiple GPUs on an Intel-based MacGetting the GPU that drives a view’s displayMTLCopyAllDevices()MTLCopyAllDevicesWithObserver(handler:)MTLRemoveDeviceObserver(_:)CGDirectDisplayCopyCurrentMetalDevice(_:)MTLDeviceNotificationHandlerMTLDeviceNotificationName
Selecting GPUs
Adjusting for GPU memory bandwidth tradeoffsAssessing multi-GPU and multidisplay setups on an Intel-based MacSelecting device objects for graphics renderingSelecting device objects for compute processing