Error assigning GPU affinity for 2nd GPU

5 messages Options
Embed this post
Permalink
jhsilverman

Error assigning GPU affinity for 2nd GPU

Reply Threaded More More options
Print post
Permalink
I am trying to write an application that will run exclusively on the second GPU of my Windows machine. I have two displays, one plugged into each of my two NVidia Quadro FX 4800 cards. I try to open a window on the second display and use an affinity-context that masks/locks onto GPU #2. I've been seeing consistent errors when the app calls wglMakeCurrent with my window device context and affinity context.

I see the exact same errors when I run the following, suggesting some deeper problem:

./build/vs2005/win32/release/eqPly.exe -- --eq-config examples/configs/2-pipe.2D.eqc

I've tried just using the 1-window.nonthreaded.eqc with the following settings:

...          
   pipe
   {
     device 1
     window
     {
       viewport [ 1.25 0.25 0.5 0.5 ]                    
       channel { name "channel" }
     }
   }
...

Same error.

When it crashes, here's the top of the stack:

WGLWindow::configInit() line 260: makeCurrent();
WGLWindow::makeCurrent() line 98: wglMakeCurrent( _wglDC, _wglContext )) returns FALSE, so EQCHECK/assert fails. GetLastError() return DWORD 0xc00720d0.

It's the "device 1" parameter in the config file that's giving me trouble. If I use only "device 0" it works just fine with the affinity context.

I've tried eqPly and my own code on another machine, also Win7x64 Ultimate, dual 4800 cards. Same error. I've tried NVidia drivers 191.00, 191.07, 182.65... same error.

Has anybody seen anything like this before? Any suggestions? Thanks in advance!
jhsilverman

Re: Error assigning GPU affinity for 2nd GPU

Reply Threaded More More options
Print post
Permalink
I've enlisted Microsoft to find out why their wglMakeCurrent() is failing with such a mysterious GetLastError code. Will report back...
m0bl0

Re: Error assigning GPU affinity for 2nd GPU

Reply Threaded More More options
Print post
Permalink
In reply to this post by jhsilverman
jhsilverman wrote:
When it crashes, here's the top of the stack:

WGLWindow::configInit() line 260: makeCurrent();
WGLWindow::makeCurrent() line 98: wglMakeCurrent( _wglDC, _wglContext )) returns FALSE, so EQCHECK/assert fails. GetLastError() return DWORD 0xc00720d0.

It's the "device 1" parameter in the config file that's giving me trouble. If I use only "device 0" it works just fine with the affinity context.

I've tried eqPly and my own code on another machine, also Win7x64 Ultimate, dual 4800 cards. Same error. I've tried NVidia drivers 191.00, 191.07, 182.65... same error.

Has anybody seen anything like this before? Any suggestions? Thanks in advance!

Yes, we actually have seen this exact same thing here (not sure about the exact error code right now, but at least something equally unreasonable). This is also on Win7 x64 (Pro I think), with dual Quadro FX 5800 cards.
Some things to note:
- On XP, this works fine.
- This is not Equalizer-specific; a non-Equalizer application trying to do this got the same error.

We weren't able to find a solution, so if you do manage to find out anything, I'd be very interested to hear it!

Thanks and good luck,
Marc
Stefan Eilemann

Re: [eq-dev] Error assigning GPU affinity for 2nd GPU

Reply Threaded More More options
Print post
Permalink
In reply to this post by jhsilverman

On 10. Oct 2009, at 5:27, jhsilverman (via Nabble) wrote:

> I've enlisted Microsoft to find out why their wglMakeCurrent() is  
> failing with such a mysterious GetLastError code. Will report back...

 From the other messages, I gather that you're not on Windows XP. We  
do not officially support Vista or Windows 7 yet.

You might want to follow up with nVidia, if GPU affinity is not  
working on these platforms, as Marc suggested.


Cheers,

Stefan.

m0bl0

Re: [eq-dev] Error assigning GPU affinity for 2nd GPU

Reply Threaded More More options
Print post
Permalink
Stefan Eilemann wrote:
You might want to follow up with nVidia, if GPU affinity is not  
working on these platforms, as Marc suggested.
Just wanted to add that it's not completely "not working": You *can* get an FBO on the second GPU, just not a visible window. (PBuffer also fails, don't remember on which call exactly, but not the wglMakeCurrent...)

Cheers,
Marc