Hi,

I would like to update the discussion we started back in October
regarding an apparent problem scaling OSG to multiple windows on
multiple graphics cards. For full details on the previous discussion
search the email archive for "problem scaling to multiple cards".

Summary of the problem:

    We have a multi-threaded OSG application using version 2.8.3.  (We also
    ran the same tests using version 2.9.9 and got the same results.)  We
    have a system with four Nvidia FX5800 cards (an immersive cave like
    config) and 8 cores with 32 GB memory.

    Since the application is parallel drawing to independent cards using
    different cores, we expect the frame rate to be independent of the number
    of cards in use.  However, frame rate is actually X/N where N is the
    number of cards being used.

    For example if the frame rate is 100 using one card, the frame rate
    drops to 50 for 2 cards and 25 for 4 cards in use.  If the
    application worked properly, the FPS would be 100 in all cases.


We have tried a number of things to isolate the problem:

     * We can run four copies of the test program each drawing to a different
       card, using a different core, and get the expected FPS. In this case,
       4 copies run the same speed as 4, 3 or 1 copies.

     * We have created a pure OpenGL threaded application which draws to
       1, 2, 3, or 4 cards. There is no OSG involved. This application
       runs properly, no degradation in FPS for multiple cards.

     * When we set OSG_SERIALIZE_DRAW_DISPATCH to OFF (default is ON)
       the total FPS actually drops. Watching the graphical statistics,
       the DRAW is clearly running in parallel, but is actually a bit
       slower than when the DRAW is serialized.

       While this behavior is consistent with the messages posted by
       Robert in August 2007 (search for OSG_SERIALIZE_DRAW_DISPATCH),
       its not what one would think should happen. Specifically, it
       seems counter-intuitive that serialized DRAW is faster than
       parallel DRAW.

     * We have created a separate system using two Nvidia FX4600 cards
       and experienced the same mis-behavior.

     * We have tried numerous Nvidia drivers, from the most recent
       to older drivers with the same mis-behavior.

     * We have configured a system using two ATI Radeon HD 3450 cards
       and get the same mis-behavior. This test eliminates the Nvidia
       driver and OpenGL libraries as a source of the problem.

     * We tried a version of the test program that uses separate copies
       of the scenegraph for each camera, to eliminate contention on the data
       in the scenegraph, but got the same results.

Looking at the results of our tests, its seems to indicate there is
some OSG problem preventing multi-threaded applications from running
properly on systems with multiple graphics cards (and multiple cores).

OSG is a critical component to our immersive virtual reality
environment.  Our scientific visualization applications are continuing
to demand more and more performance. We need multi-threading to work
properly.

What experiences are others with multiple cards having regarding
multi-threading? If anyone is interested, we can send our test program.

We would very much appreciate any help or suggestions on solving this
problem anyone can offer.

Thanks,
Steve Satterfield, [email protected]
John Kelso, [email protected]

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to