The interesting point to this discussion is that individuals at NVidia actually tell me that the driver benefits from having more than one thread when optimizing for mulitple graphics contexts, even in single CPU single GPU situations.  This is contrary to what I would expect and have preached for years now (and in fact, your initial test seems to support what was believed  prior). 

I'm expecting to sign a contract in the near future with a company that is backing development and research in this area, so I hope to characterize this information in a more thorough and informative way through some real tests.  The tests will be slanted toward NVidia hardware and drivers, but should be useful for all.

In your original question, I believe you wanted to know of advantages for threading in an environment with a single display device (that is,  two windows, one monitor type thing, right?).  I believe the answer to that question is quite dependent on hardware, OS and drivers.

-don

On 8/18/06, Holtz, Corbin L <[EMAIL PROTECTED]> wrote:
Tugkan,

Don Burns is the expert in the area so I'll let him jump up if I get
this wrong.  I believe you answered your own question.  If you have only
one GPU trying to accommodate multiple threads, then you will have a
performance hit.  This is probably partly because each draw thread is
hitting the GPU with rendering data that has different GL states and the
pipe has to flush as it goes back and forth from each thread to the
other.  I think you will do better with single threaded because the
state management built into OSG will better optimize the data stream
going to the GPU to limit GL state changes.  The multithread support is
really meant for systems with multiple graphics pipes (SGI, etc).  I'm
not sure, but I'd guess that something like an SLI system can be
configured to either act like 2 independent pipes (driving separate
monitors) or a single pipe (with higher performance).

Corbin

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]] On Behalf Of Tugkan
Calapoglu
Sent: Friday, August 18, 2006 3:34 AM
To: osg users
Subject: [osg-users] Multiprocessing and OSG

Hi All,

AFAIK to harness the power of multiple CPU's what we have to do is to
create multiple windows and cameras and use ThreadPerCamera model. In
this way we can get a cull&draw thread for (say) left and right half of
the screen.

This method, however, requires also multiple pipes because otherwise
each camera fights for the graphics card during draw. I couldn't observe

a performance improvement when I tried that. Indeed it was worse.

When I tried to use a single window and multiple cameras I received:

Warning: disabling multi-threading of cull and draw to avoid
          threading problems when camera's share a RenderSurface.


Now, this architecture is good for a machine with multiple CPU's, GPU's
and projectors/monitors. If I want to drive only one monitor/projector
than I am bound to single threaded mode because two windows on one
display will not be rendered with two GPUs. Instead one of the GPUs will

render both windows.

So the question is, is there a method that lets us use multiple threads
without the need of multiple projectors/monitors?

Thanks,
Tugkan.

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to