WGL_NV_gpu_affinity problem

Hey, I’m trying to use the gpu affinity extension. I have a Quadro 5600 and Quadro 4500 in the system. Windows XP SP2, latest quadro drivers.

The first issue I’ve run into is that wglEnumGpusNV only returns one GPU: the GPU that is drives the primary monitor. If I switch which monitor is my primary monitor, then I get the other GPU.

What am I doing wrong, am I somehow locking myself into one GPU with the way I’m creating my startup window? (the window i create to get my first GL context, so I can call gpu affinity functions).

I’m fairly certain that GPU affinity is for SLI, not just general multi-GPU stuff. That is, the two cards must be identical and must be bridged together in an SLI configureation before it will work.

Hmm, I don’t think so. It’s mentioned as the way to do Quad output mosaic rendering using a Quadroplex, which obviously isn’t SLI.

Quadroplex, which obviously isn’t SLI.

It is SLI. SLI is the name of a technology; that technology is not inherently limited to connecting two devices.

GPU affinity is an alternative to SLI, it allows manual control of each GPU (which otherwise is not possible under Windows). I used GPU affinity briefly with a combination of a Quadro 3700 and 3500, two different GPU generations, no problems.

The way you create your initial context shouldn’t matter, as long as you can get the wglEnumGpusNV function pointer. Maybe you need to tell Windows to extend your desktop onto one of the secondary GPU’s outputs before the card becomes enabled? Also, try changing the setting for Multi-display/mixed-GPU acceleration in the nvidia control panel.

I’ve made the experience that the second card needs to be online in order to be accessible. Also the Multi-GPU performance mode setting (single vs multi-display perf mode) is sometimes changing the behaviour of enumGPUs.

You can easily test GPU availability using Equalizer, which uses the GPU affinity API: http://www.equalizergraphics.com.

Ya, I know you can do 4 card SLI. The QuadroPlexs are obviously not SLI because each card acts independently, not because they have 4 cards (Maybe theres an option to SLI them also, I dunno). From what I’ve read SLI makes multiple GPUs become one virtual GPU (As far as the system can tell). GPU affinity would make no sense in that case.

I’ll try out the equalizer app, thanks for the help.

Ok I got it working (Yes, it has nothing to do with SLI).

I installed a 4400 and a 4500 in the machine and I can correctly get different windows to only work on different GPUs. I guess there was some sort of conflict between the 5600s and the 4400 for them to work on the same machine together.

Just did a 5500 and 4500 and they work well also. This solves a lot of issues I was having without using gpu affinity, because before my geometry would appear on one monitor, but not the other (dragging the window from one monitor to the other would make the geometry disappear). Now the window doesn’t draw at all on the other monitor, but atleast it’s not random which monitor will display the correct render.

Just updating the post so other people looking for this topic have some answers.