From db973c8fc2579e97fa4b8adea5cb88835138b3ee Mon Sep 17 00:00:00 2001 From: Daniel Hiltgen Date: Thu, 30 Oct 2025 15:12:14 -0700 Subject: [PATCH] win: avoid ID mixups on refresh (#12869) On Windows AMD IDs are numeric, and can reorder based on the filter environment. By passing in the filter env on a full discovery refresh, we'll only look at the actual devices and ignore unsupported iGPUs. Without this, on some systems iGPU VRAM was incorrectly being used to populate the dGPU. --- discover/runner.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/discover/runner.go b/discover/runner.go index e74050d0..caaef222 100644 --- a/discover/runner.go +++ b/discover/runner.go @@ -335,11 +335,14 @@ func GPUDevices(ctx context.Context, runners []ml.FilteredRunnerDiscovery) []ml. ctx, cancel := context.WithTimeout(ctx, 3*time.Second) defer cancel() + // Apply any dev filters to avoid re-discovering unsupported devices, and get IDs correct + devFilter := ml.GetVisibleDevicesEnv(devices) + for dir := range libDirs { - updatedDevices := bootstrapDevices(ctx, []string{LibOllamaPath, dir}, nil) + updatedDevices := bootstrapDevices(ctx, []string{LibOllamaPath, dir}, devFilter) for _, u := range updatedDevices { for i := range devices { - if u.DeviceID == devices[i].DeviceID { + if u.DeviceID == devices[i].DeviceID && u.PCIID == devices[i].PCIID { updated[i] = true devices[i].FreeMemory = u.FreeMemory break