Este tema ha sido cerrado
xSOSxHawkens 27 ENE 2018 a las 18:13
Manually bind which GPU a program uses?...
Skippable preface: I guess in my first post I was too specific to the programs in question and the result was that the thread got moved to a non-applicable section of the forums, where I was then told I needed to re-post it into three other forums which were also not on topic. Instead of people understanding that I am asking a question about Windows and how it interacts with my hardware everyone got lost on the word “steam” in the post and apparently thought it was not hardware or OS related...

Therefore I have stripped my request down to the absolute basics so as to show that this is clearly a question regarding how to use my OS (windows 10) and my hardware (two separate GPU's) in an advanced way...






TL:DR How do I manually bind which GPU a program executes onto, prior to launching said executable, in a multi GPU, multi vendor system?





Situation:

One computer, with two separate graphics cards, identified by Windows 10 as GPU-0 and GPU-1.

Two separate screens, Screen-1 (SC1) run by GPU-1 and Screen-2 (SC2) run by GPU-0

SC-1 and GPU-1 are main screen and main GPU, SC2 and GPU-0 are secondary screen and GPU.

Two programs that are 3d rendered,. One heavy 3D rendering (prog-1) and one light 3D rendering (pro-2).




Desired result: When launched, have Prog-2 execute and render on GPU-0 on SC-2, while Prog-1 launches on the main screen SC1 rendered by GPU-1.



Possible solutions?

Launch flags similar to how you would bind an exe or process to operate with a pre-defined pre-launch affinity, as seen here:

https://stackoverflow.com/questions/7759948/set-affinity-with-start-affinity-command-on-windows-7



Being that Windows allows the setting of CPU affinity on launch through command line arguments, it would stand to reason that now that Windows 10 can clearly differentiate between GPU-0 and GPU-1 as separate devices that there * should * be a way for me to manually assign which GPU I want a specific EXE to run on before launch...


How?
Última edición por xSOSxHawkens; 27 ENE 2018 a las 18:36
< >
Mostrando 1-15 de 36 comentarios
Vince ✟ 27 ENE 2018 a las 18:58 
Can you right click icon and choose to run with specific gpu?

Maybe using application profiles in the 3-D control center?
xSOSxHawkens 27 ENE 2018 a las 19:00 
Publicado originalmente por Vince:
Can you right click icon and choose to run with specific gpu?

Maybe using application profiles in the 3-D control center?

Both those options are for mobile users only. Both AMD and Nvidia offer that feature for their respective hybrid graphics options on laptops, but this is on a desktop platform.

Sadly on the desktop, neither Nvidia nor AMD offer that as a feature of their drivers.
Última edición por xSOSxHawkens; 27 ENE 2018 a las 19:00
AussieBobby 28 ENE 2018 a las 6:16 
I think the only way is to use a virtual machine/s
Hatman 28 ENE 2018 a las 6:28 
What kind of GPUs are they?
What kind of programs are you trying to run? (OpenGL? DX?, etc.)
Why do you want to run them seperately?
rotNdude 28 ENE 2018 a las 10:03 
Have you tried this? I think you have, but I'm not too sure.

https://www.techadvisor.co.uk/how-to/pc-components/how-set-default-graphics-card-3612668/
DonJuanDoja 28 ENE 2018 a las 11:36 
Yea I swear you could select preferred gpu in Nvidia control panel for program specific 3D settings..

Never had two GPUs though, always one card with IGP disabled so it couldn’t see the IGP.

Yea last screenshot of Rotndudes link
Última edición por rotNdude; 28 ENE 2018 a las 14:22
xSOSxHawkens 28 ENE 2018 a las 13:24 
Publicado originalmente por rotNdude:
Have you tried this? I think you have, but I'm not too sure.

https://www.techadvisor.co.uk/how-to/pc-components/how-set-default-graphics-card-3612668/


Publicado originalmente por DonJuanDoja:
Yea I swear you could select preferred gpu in Nvidia control panel for program specific 3D settings..

Never had two GPUs though, always one card with IGP disabled so it couldn’t see the IGP.

Thanks guys, but as already mentioned this methosd is not availabel on non-mobile hybrid systems, and is not an option on desktop class drivers.

Publicado originalmente por Hatman:
What kind of GPUs are they?
What kind of programs are you trying to run? (OpenGL? DX?, etc.)
Why do you want to run them seperately?

GPU-0 is my integrated IGP, Intel HD4600 running my secondary screen.
GPU-1 is myu PCI-e GTX-960.

Programs in question would be Steam.exe (which is the program I wish to execute on the IGP) and any games (which I want to launch on the default GPU)



I want to run them seperartly because I use Steam In Home Streaming with a Steam link and a controller. When doing this I encode the network stream on my IGP to allow for the GPU and CPU to dedicate to the game. When using a controller on a steam link the best way to navigate steam is through Steam Big Picture mode, which is the default mode it launches into.

Sadly SBPM takes roughly ~10% of the GPU power of my GTX-960, which means I take a hit to FPS in games that tax the card already.

The whole reason I use my IGP for encoding is to avoid the ~10% hit I would take using hardware encoding on my GPU or software on CPU, therefore this negates any advantages I was getting to begin with.

I can remove this issue by using a BlueTooth KB/M with the Steam Link, so I can manualy close SBPM and launch my games through the normal desktop client. When I do this the ~10% usage on the GTX goes away, and its just like it should be with CPU/GPU dedicated 100% to the game and the IGP handling the encode.

What I want to do is bind the Steam.exe executable to the IGP, so that when SBPM is launched it is rendered using my IGP instead of the CPU.

I have already tested it, and I know the IGP can render a 1080P SBOM menu while also encoding a 1080p stream without choking. At this point I am 100% certain the *hardware* is capable of doing what I want, its just now a question of how to make windows do what I want lol.

Publicado originalmente por AussieBobby:
I think the only way is to use a virtual machine/s

That would work, in the sense that the seconda machine would be tied to the second GPU and you would launch two seperate apps ont he GPU's through the main system and vitual system respectivly, but thatwould not work out for my needs :(


Última edición por rotNdude; 28 ENE 2018 a las 14:23
xSOSxHawkens 6 FEB 2018 a las 11:38 
Any possible sollutions?
Krakixx 7 ENE 2019 a las 7:30 
Hello i find a solution I can use my intel 4600 for exemple. For spotify For netflix apps or wallpaper engine or google chrome etc.. accept my friend request OR add me i told u the solution ok answer to this post i wait for u
Última edición por Krakixx; 7 ENE 2019 a las 7:55
xSOSxHawkens 7 ENE 2019 a las 16:11 
Publicado originalmente por Krakixx:
Hello i find a solution I can use my intel 4600 for exemple. For spotify For netflix apps or wallpaper engine or google chrome etc.. accept my friend request OR add me i told u the solution ok answer to this post i wait for u
So whats the sollution?
Washell 7 ENE 2019 a las 16:27 
What GPU it runs on is determined by what monitor it runs on, and once you start looking for that, tools are easily found. Just two I found within a minute of looking:
https://www.realtimesoft.com/ultramon/
http://dualmonitortool.sourceforge.net/dmt_launcher.html
Última edición por Washell; 7 ENE 2019 a las 16:28
🆂tartup🆃im 9 JUN 2019 a las 20:19 
BUMP:

I have this same issue. I need Chrome to run on a specific GPU. None of the solutions mentioned worked. For example:

I have a dual Nvidia GPU system and I need to force chrome.exe to use a specific GPU for all of it's GPU-related tasks (3D, video decoding, memory, etc). Any idea how to do this?

I've tried the following:

* Put Chrome on the proper monitor connected to the desired GPU. No affect, still renders Video Decode on wrong GPU.
* Inside Nvidia Control Panel -> Manage 3D settings -> Program Settings -> Chrome.exe both"CUDA-GPUs" and "Open GL Rendering GPU" were set to the proper GPU and this had no affect and still renders on the wrong GPU
* Right click on chrome.exe -> Render OpenGL on -> Selecting proper GPU has no affect and still renders on the wrong GPU
* Gathered my vendor ID/device ID via chrome://gpu
* --- Found the proper GPU IDs + ensured Chrome is on the desktop monitor that is plugged into the proper GPU
* Ran chrome.exe --gpu-active-vendor-id=0x1e07 --gpu-active-device-id=0x1e07
* --- Tested on Twitch stream for example, found it still uses the wrong GPU ID
* Tried --supports-dual-gpus to no affect

Any guidance is much appreciated!

Thanks!
xSOSxHawkens 10 JUN 2019 a las 15:32 
Before this gets called as a necro as the OP I would like to say I am still looking for a solution and this thread/topic is valid.
Gunjoe 13 JUL 2019 a las 23:59 
Just wanted to bump this aswell, ive tried the same as 🆂tartup🆃im to no luck most of the time. I was successful in running some apps using GPU-1 when right clicking and selecting the desired gpu, but it only worked for some apps, in my case DOOM 2016 successfully used GPU-1. No luck on a solid solution tho.
xSOSxHawkens 14 JUL 2019 a las 0:45 
Still wondering how to do this myself... Would love to bind one specific application to always render using my iGP while letting my mainline GPU handle the rest...
< >
Mostrando 1-15 de 36 comentarios
Por página: 1530 50

Publicado el: 27 ENE 2018 a las 18:13
Mensajes: 36