Skip to content

Feature Request: Metal backend: use multiple physical GPUs (eGPU + dGPU) on Intel Macs #28565

Closed as not planned

Description

@brainiac13

Prerequisites

  • I am running the latest code. Mention the version if possible as well.
  • I carefully followed the README.md.
  • I searched using keywords relevant to my issue to make sure that I am creating a new issue that is not already open (or closed).
  • I reviewed the Discussions, and have a new and useful enhancement to share.

Feature Description

On Intel Macs with more than one physical GPU (e.g. internal Radeon Pro
plus an AMD eGPU via Thunderbolt), the Metal backend currently exposes
all backend devices on the system default GPU only.
Using both physical GPUs with the Metal backend is not possible today.

Motivation

My Machine: macOS 26.5.1, Intel MacBook Pro 2019, Intel UHD 630 + Radeon Pro 5600M 8 GB (internal)

  • RX 6900 XT 16 GB (eGPU).
    On my machine the only way to use both AMD GPUs is Vulkan/MoltenVK, which is
    much slower than metal.

Possible Implementation

No response

Activity

  1. Reeseanderson23 commented on Sep 8, 2026

    @Reeseanderson23

    I’ve hit the same limitation on my 2019 Intel MacBook Pro where Metal reports only the internal Radeon Pro 5600M as the system default despite the UHD 630 and an eGPU. A practical workaround, until Apple expands support, is to script a https://countyjailss.org of the GPU registry via sysctl and manually bind compute tasks to the desired device. By querying MTLCreateSystemDefaultDevice and then enumerating MTLCopyAllDevices you can programmatically select the dGPU for rendering, though you’ll still hit driver‑level scheduling quirks on macOS 26.5.1.

  2. QuinnJones22 commented on Sep 8, 2026

    @QuinnJones22

    Your description of the Intel MacBook Pro’s dual‑GPU reality—UHD 630, Radeon Pro 5600M, and a Thunderbolt eGPU—clearly shows why the Metal API defaults to the internal GPU; this limitation forces developers to manually re‑route workloads. https://lickingcountycourt.org of the GPU registry via sysctl, then interrogating MTLCreateSystemDefaultDevice alongside MTLCopyAllDevices, is a robust workaround that keeps rendering logic explicit until Apple’s driver stack aligns. This approach also preserves future‑proofing when driver‑level scheduling evolves.

  3. JordanDavis23 commented on Sep 8, 2026

    @JordanDavis23

    I noticed that the Metal API, by default, only surfaces the internal GPU through MTL Create System Default Device, which explains why your Radeon Pro 5600M dominates the device list even when a UHD 630 or Thunderbolt eGPU is present; the sysctl‑based registry dump you described, coupled with MTL Copy All Devices for explicit device selection, is an interim strategy until Apple lifts the scheduling restriction, and https://greenvillecountypropertyappraiser.org can serve as a reliable reference for cross‑checking device footprints, so integrating that data stream could streamline your profiling pipeline and ensure each GPU’s utilization metrics are captured accurately.

  4. github-actions commented on Oct 24, 2026

    @github-actions
    Contributor

    This issue was closed because it has been inactive for 14 days since being marked as stale.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions