Clarification of new multi GPU abilities

"# TouchDesigner running on multi-cards, GPU Affinity - TouchDesigner runs on multi graphics cards with hardware limitations (space, mixing card types, power supplies), but you need to use the new -gpu startup option, which allows users to select which GPU this instance of Touch will run on. It only works on NVIDIA Quadro family cards.

* e.g touchdesigner -gpu 1 myfile.toe will start touch and have it only run on the 2nd GPU. 

"
just a clarification
does this mean that touch will still only work on ONE GPU, but that gpu could be one of any number as on the quadros?
is this extendable to run across multiple GPU’s like the new telsa boxes say? (see my previous post where they claim it presents as a single GPU to the OS)

This is different than SLI (or any configuration that makes multiple GPUs appear like a single GPU to the system). The idea here is that you have 2+ Quadros in your system, NOT connected in SLI, and you want multiple monitors (UI on one, renderings on another for example).
You have one .toe file which is your UI, you use the -gpu option to have it run only on the first GPU (the less powerful one normally, if they are different).
Then you have another .toe file which does your rendering (they communicate through Touch In/Out CHOPs). This one is run on the other GPU.
If you try dragging a window from an instance of Touch that is bound to one GPU onto a monitor that that GPU isn’t driving, the window won’t display correctly (at all actually).

Without this feature, both GPUs would be doing all the work for both instances of Touch, since they don’t know which one will end up displaying the image. Also you often run into driver bugs (a TOP appears correctly on one monitor, but you drag the window on to the other monitor and it doesn’t display correctly anymore).

This is not a way to split expensive GPU work between GPUs, and combine the results. You can’t quickly share the data that one GPU created with the other GPU (the only way is to use Touch In/Out TOP or Shared Memory TOP to download/upload from one GPU to the other, but that will be slow).

Let me know if that makes it more clear, I’ll write a wiki article about this soon.

The main reason we added this feature was because if you have two different monitors connected to the same GPU, one of them will always suffer from horizontal tearing (regardless of your vsync setting). If you instead have two different GPUs connected to two different monitors, neither of them will tear.

great, thanks for that
Cheers

Too bad nvidia is only supporting this on quadro cards.

Jason, see also viewtopic.php?f=4&t=466&hilit=+gpu#p1882 for a scenario where it will come in handy. Basically it should allow you to load a new synth without any hangs in the current synth rendering by just loading it into a seperate toe file. In each synth you will need to set your GPU and CPU affinities and finally you would blend between both synths in a third synth (either mixxa or a custom video mixer). You’ll need 3 GPUs in such a system.

By the way, is CPU affinity working per CPU or per core?

Is it predictable on which monitor the tearing will occur? In case of a laptop, you’ll always have 2 different monitors, so as long as it’s on the internal laptop display, it wouldn’t be so bad.

CPU affinity is per-core. However I don’t think it’s useful. I added it to do some testing, but I’ve found that the OS does a fine job scheduling processes, and there is no need to try to do it yourself.
GPU is useful though.

I haven’t found to much consistency with which monitor tears. I hear it should usually be the secondary monitor, but I’ve been able to get the primary one to tear in cases also. It’s also possible that laptops don’t suffer from this as much, as the LCD screen is possibly connected differently than the other monitor. I don’t know for sure, but I’ve heard of people using laptops without a tearing issue on the secondary monitor.