Target GPU on a multiple display system

In a multiple GPU system where one smaller card is used for monitoring, and the others (more powerful) for multi-channel output, it seems that GPU performance is determined by which GPU is assigned the main display in Windows, correct? (that is my conclusion after a few tests, anyway)

Of course, one can assign the main display to the more powerful GPUs, but…
The problem with this is obviously that for a visual performance, it is not optimal to have the blended screens as the main display because you’ll get all dialogue boxes and start-up screens onto that spanned desktop.

I have tried everything I could think of from Windows 7 side and the desktop management options supplied by the driver. Not a solution.

So: is there a way to determine which GPUs vvvv will use for acceleration, other than the method above?

nope. for DX9 it is like this:
the position of a renderer-window defines the gpu all of the stuff it is showing is being computed on. so first thing to check is that none of the renderers is open on the cheap gpu.

if it is still slow you have to understand that other nodes like the Pipet (EX9.Texture) are gpu-dependent like the renderer. but since a pipet does not have a window assigned (which would determine the gpu it is running on) you can choose its device in via the Inspektor.

also note Device (EX9 Auto) which on the first output will show you for each active device:

  • ReferenceCount: number of renderer depending on it
  • ParasiteCount: number of pipet-like nodes depending on it

on your cheap device you should have 0 references and 0 parasites. see?

for DX11 we’ll have to say what vux says.

If you use dx11, you can force the device by index using command line:

vvvv.exe /dx11mode:forcen where n is device index.

So if you want to use the second graphics card, you would do:
vvvv.exe /dx11mode:force1

Please note that in dx11 vvvv never creates multiple devices, since dxgi handles output for you.

Forgot to mention, this is only on beta31.2 build.

And I love the fact that node like Pipet got named Parasites :)

I am using DX11. And the performance drop (depending on which card is assigned the main window) is substantial: a patch that runs typically at 29-30fps will drop to 1-2fps. And… I should have clarified that I am using 3 other graphics cards (of the powerful kind), so a total count of 4. Can one force onto multiple cards that are sharing one large desktop?

Edit: I can see that assigning the right ID of one of the other cards works (does it correspond to the ids assigned by the driver? I couldn’t tell). Which, I am guessing, is down to the system architecture and the driver. Thank you all.

@vux: but all shader passes flag as parasites as well;)…
btw Device(EX9 Manual)doesn’t show correct data for me

How do you assign your renderers?

Do you have one per screen or do you span a large one?

Also, do you use VSync? I did (long ago/dx9) a project with 5 cards and 9 screens. Just a simple quad with vertical sync was about 7fps.

I dont span and i use Vsync, if you mean Nvidia setting herehttps://vvvv.org/sites/default/files/imagecache/large/images/Vsync.jpg

should i better not?

I’ve had quite erratic behaviour at 50hz, where artefacts show in one of the channels. I’ve put it down to driver issues, but for good troubleshooting it would be great to know what are the best settings to go for when using sync with nVidia GPUS and - should one let the driver take over, is the sync option in vvvv important? Some of these issues are not immediately apparent, thus the question…