Ahoj Kev4 Vesely,
To, co se zde děje, souvisí s tím, jak DirectML enumeruje zařízení prostřednictvím DXGI. V určitých kombinacích ovladačů a runtime prostředí se může stejné fyzické GPU zobrazit dvakrát: jednou jako diskrétní adaptér a podruhé jako logické zařízení WARP nebo fallback zařízení. Tato duplicita mate frameworky jako ONNX Runtime nebo OpenVINO při pokusu o výběr cílového zařízení.
Prvním krokem, který doporučuji, je aktualizovat na nejnovější ovladače NVIDIA a zajistit, aby byly aktuální také runtime knihovny DirectML. Microsoft vydal opravy, které zlepšují logiku enumerace adaptérů, takže je zásadní udržovat Windows i ovladače GPU plně aktualizované. ONNX Runtime můžete také explicitně nakonfigurovat tak, aby vybral správné zařízení nastavením execution provideru na DirectML se správným indexem adaptéru, čímž obejdete falešnou položku.
Dalším řešením je zakázání softwarového adaptéru WARP v prostředích, kde má být dostupné pouze diskrétní GPU. To lze provést prostřednictvím registru nebo konfigurace na úrovni aplikace v závislosti na použitém frameworku. Někteří uživatelé také zaznamenali úspěch při vynucení použití adaptéru 0 pro DirectML provider, který obvykle odpovídá fyzickému GPU.
Z architektonického hlediska nejde o hardwarovou závadu, ale spíše o zvláštnost mapování v runtime prostředí. Dlouhodobým řešením je sladění verzí ovladačů, DirectML a frameworků tak, aby enumerace konzistentně zobrazovala pouze platné GPU.
Doufám, že toto vysvětlení pomůže objasnit hlavní příčinu problému. Pokud vám tato odpověď pomohla, nezapomeňte prosím kliknout na „Accept Answer“.
Jason.