Select GPU to use by specific applications

I have 2 GFX cards installed: GeForce GTX 1060 and Radeon HD 6670. Both are working fine as I plugged in different monitors to different cards to be sure about it.

I want to force some applications to use Radeon HD 6670 instead of GeForce GTX 1060, but I can't find a way to do it. I've found that in Windows 10 you can switch GPU for applications in Graphics Settings between Power Saving and High Performance, but both options are using GeForce GTX 1060 for me.

Is there other way to select GPU for specific applications, or an option to change Power Saving GPU?


Solution 1:

You can't. Windows 10 GPU switcher only works on laptops that have both Intel iGPU and discrete graphics. On desktops, each card runs its own output port. There no way for one card to send its output to the other card (right now there's only SLI and CrossFire, but they only work when the two cards is the same)

Solution 2:

Late to the party but basically:

As stated above by Kurumi Gaming, the Windows 10 Graphics settings does not seem to let you force it to use a secondary non-integrated GPU.

Unfortunetly, the same is true for the "Add Run with graphics processor to start menu" option suggested by ytpillai.

However, there are a few workarounds

1. Program Based

Some programs such as OBS that let you choose which GPU to use for certain tasks such as encoding.

2. Batch Programs

Kernel Kue on the LTT Forums found a workaround for Chrome that disables your primary gpu, launches whatever program you want, then enables the primary again. It requires devcon.exe that comes with Visual Studio although you can download it by itself too. I did that and this exe works for me. It's a bit clunky, and the batch file requires you to know the Device instance path for your card. you can get this by going into Device Manager, R-Click your GPU > Properties > Details > (Drop Down) > Device Instance Path. Here is Kernel Kue's Original Script:

"C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" disable "PCI\VEN_10DE&DEV_17C8*"
start "" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
timeout 5
"C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" enable "PCI\VEN_10DE&DEV_17C8*"

Better Version that walks you through

I made my own modified version that walks your through it and makes things a bit easier. It's also open source batch (as all batch is).

You can run it directly and drag-and-drop or type a path to an exe you want to run on your secondary gpu, or you can call it like this: RunAsGpu.bat "C:\path\to\file\.exe" parameters

I only just made it so I'll add bug fixes and a readme later, and if anyone wants to help me add AMD support let me know.

https://github.com/ITCMD/RunAsGpu

3. Switch GPUs

You can also set your secondary GPU as your primary. This will allow you to set your games to use your second GPU, or, if they don't support that, the above program will let you do that too (just select the opposate graphics card). To change which card is your primary, you'll need to have a display plugged into both cards, then open the Nvidia control panel. I believe in "set up multiple displays" there should be that option. I don't have more than one display atm so I'm not sure.