DirectX 12 Linked vs Unlinked Multi-Adapter

DirectX 12 introduced explicit multi-adapter support, allowing developers to harness the combined power of multiple graphics processing units (GPUs) directly within their applications. The primary distinction between the two configurations lies in how the system views and handles the hardware: linked multi-adapter mode binds identical GPUs together as a single logical unit to share resources over high-speed interconnects, whereas unlinked multi-adapter mode allows completely different, independent GPUs to work together through explicit developer control. Understanding these differences is essential for optimizing rendering pipelines across varied PC hardware.

Linked Multi-Adapter Mode

In linked multi-adapter mode, the GPUs must be nearly identical hardware configurations, typically from the same vendor and architecture (such as systems historically using NVIDIA SLI or AMD CrossFire technologies).

DirectX 12 exposes linked GPUs as a single ID3D12Device containing multiple "nodes." Because the hardware is symmetrical and linked, these nodes share resources much more intimately:

  • Unified Driver and Architecture: The GPUs utilize a single driver instance, enabling optimized hardware-level communication.
  • Shared Memory Pools: In linked mode, GPUs can mirror memory or directly access peer GPU memory over high-speed bridges (like NVLink) or PCIe buses with minimal latency.
  • Streamlined Control: Developers manage one device context while specifying which specific node executes a command list, simplifying synchronization compared to completely separate adapters.
  • Primary Use Case: Traditional multi-GPU performance scaling, such as Alternate Frame Rendering (AFR) or Split Frame Rendering (SFR), where raw graphics throughput is divided evenly across identical cards.

Unlinked Multi-Adapter Mode

Unlinked multi-adapter mode treats every GPU in the system as an entirely independent entity. This mode works across heterogeneous configurations, meaning you can combine an integrated GPU (iGPU) with a dedicated GPU (dGPU), or even combine cards from different manufacturers (such as an AMD GPU paired with an NVIDIA GPU).

Under the DirectX 12 API, each GPU is represented by its own separate ID3D12Device:

  • Hardware Independence: No bridges, matched architectures, or shared drivers are required.
  • Explicit Resource Transfer: Memory cannot be directly shared or mirrored automatically. The application must explicitly copy data from one GPU’s memory into shared system RAM, and then into the second GPU's memory.
  • High Synchronization Overhead: The developer is entirely responsible for coordinating workloads, managing fences across different devices, and preventing bottlenecks caused by system bus latency.
  • Primary Use Case: Task-based offloading. For example, a heavy 3D rendering workload can run on a dedicated graphics card while the integrated CPU graphics processes asynchronous compute tasks like physics, AI, ambient occlusion, or post-processing passes.

Core Differences at a Glance

  • Hardware Compatibility: Linked mode demands matched hardware architectures from the same vendor. Unlinked mode accepts any combination of DirectX 12-capable GPUs.
  • API Representation: Linked mode provides one device with multiple internal nodes (ID3D12Device with node masks). Unlinked mode exposes separate, distinct devices for each adapter.
  • Memory Management: Linked setups can leverage peer-to-peer memory access and automatic mirroring. Unlinked setups require explicit memory staging and transfer over the PCIe bus via system memory.
  • Implementation Complexity: While both explicit multi-adapter modes require manual programming compared to legacy driver-managed solutions, unlinked mode is significantly more complex due to the need to balance asymmetric compute power and manage distinct device contexts.