You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Feature Request: Metal backend: use multiple physical GPUs (eGPU + dGPU) on Intel Macs #28565
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.
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.
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.
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.
Activity
Reeseanderson23 commentedon Sep 8, 2026
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.
QuinnJones22 commentedon Sep 8, 2026
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.
JordanDavis23 commentedon Sep 8, 2026
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.
github-actions commentedon Oct 24, 2026
This issue was closed because it has been inactive for 14 days since being marked as stale.