Hi all, I hope I'm not hijacking too much this thread. I just  wanted the
same kind of behaviour as Alex hoping it could help so let me know if I
should start a new thread.

Robert,
I checked for the Atomic Build and I got the same
include/OpenThreads/Config as yours.
Meanwhile when a switch the Threading model (pressing m) I don't see any
notable improvement.

I also tried to optimize my scene graph using the osgUtil::Optimizer with
different options. An I don' t get neither an improvement. I tryed the
following options :
-- 
osgUtil::Optimizer::FLATTEN_STATIC_TRANSFORMS_DUPLICATING_SHARED_SUBGRAPHS
(to rule the problem of PAT you mentionned previously)
-- osgUtil::Optimizer::STATIC_OBJECT_DETECTION
-- osgUtil::Optimizer::SPATIALIZE_GROUPS ( to get an octree structure)
-- osgUtil::Optimizer::SHARE_DUPLICATE_STATE (to handle duplicated
statesets)
-- osgUtil::Optimizer::COPY_SHARED_NODES

Here are my stats. Tell me if you think they are not normal considering that
my CG is not a brand new one but  a NVidia Quadro Fx 550 and the complexity
of the 3D scene.
Frame Rate : 8.5
Threading model: SingleThreaded
Event/Update/Cull/Draw/GPU:0.1/0.06/30/23/115
Vertices: 4.5M
Drawable:1382
Matrices:1382
triangle strips: 2.5M
polygons: 3k

This are thes stats I get in my own osg app. Note that the Threadingmodel is
SingleThreaded because so far I get a segmentation fault when switching it
in this app. But this is not the case in osgViewer.

Here are the stats for the same model in osgviewer:
Frame Rate : 7.5
Threading model: DrawThreadPerContext
Event/Update/Cull/Draw/GPU:0.1/0.06/42/86/117
Vertices: 4.5M
Drawable:1382
Matrices:1382
triangle strips: 2.5M
polygons: 3k

By the way I've also tried using small feature culling. I know it's enabled
by default but there is a parameter which I don'tknow the default value :
SmallFeatureCullingPixelSize. What would be a reasonable value for it.


On Thu, Feb 12, 2009 at 10:25 AM, Robert Osfield
<[email protected]>wrote:

> Hi Alex,
>
> You would be best served in your investigation by attaching the
> osgViewer::StatsHandler to your viewer.  See the osgviewer.cpp example
> code to see how.  This event handler will give you some pretty useful
> on screen stats.
>
> With the DrawThreadPerContext threading model what you should get is
> the update + cull overlapping with the previous draw dispatch/gpu.
> What I have see is that if the processor is overly contended then the
> the cull and draw times go down.  Processor affinity is set by
> osgViewer which should avoid this contention.
>
> The other thing to look at is the DataVariance, in 2.x it's by default
> using a value UNSPECIFIED, which means you haven't set it yet.  For
> your StateSet and Drawables you make sure that if they don't contain
> any dynamic data that they are set to STATIC, and if they contain
> dynamic data make sure it's set to DYNAMIC.   The more STATIC you have
> the more the frames will be able to overlap. The Optimizer has a
> visitor that can help set the DataVaraince to either STATIC or
> DYNAMIC, but will only override it if the value is currently
> UNSPECIFIED.
>
> Robert.
>
> On Thu, Feb 12, 2009 at 12:17 AM, Pecoraro, Alexander N
> <[email protected]> wrote:
> > Hi again,
> >
> >>> Might I suggest you examine the actual frame rates you get once again
> > now that the atomic ref counts are in place.
> >
> > Here are some performance metrics that I get when running with atomic
> > reference counting in OSG 2.6 (these don't correspond to the numbers in
> > my previous email, which were from osgviewer, whereas these numbers come
> > from my OSG based application, which is doing a little more work than
> > osgviewer during the update stage - the scene graph is the same as
> > before, but the viewpoint is different):
> >
> > OSG 2.6 Frame Rate/Update/Cull/Draw/GPU: 29/1/21/34/25
> > OSG 1.2 Frame Rate/Update/Cull/Draw/GPU: 27/1/ 9/27/25
> >
> > I can get a faster frame rate in 2.6 because the frame rate is tied to
> > the draw time only (due to DrawThreadPerContext functionality), whereas
> > in 1.2 the cull and draw time are the biggest contributors to the frame
> > rate.
> >
> > If I could somehow get my 2.6 draw time to be the same as the 1.2 draw
> > time then I could get my frame rate up to 36 - 37.
> >
> >>> One does need to make sure that your scene graph is set up with
> > STATIC + DYNAMIC DataVariance correctly to allow the frames to overlap
> > the most without endangering thread safety.
> >
> > I was actually wondering about this. Is the fact that my cull and draw
> > times improve to 16 and 31 when I run single threaded in 2.6 possibly
> > indicative of my data variance settings preventing me from obtaining
> > optimal frame overlap?
> >
> > Is the basic rule for setting the data variance on a node is if any of
> > the values on the Node is going to change at any time during runtime
> > then it should be set to DYNAMIC?
> >
> > Thanks.
> >
> > Alex
> >
> > -----Original Message-----
> > From: [email protected]
> > [mailto:[email protected]] On Behalf Of Robert
> > Osfield
> > Sent: Wednesday, February 11, 2009 12:53 AM
> > To: OpenSceneGraph Users
> > Subject: Re: [osg-users] Cull time doubled?
> >
> > Hi Alex,
> >
> > Good to hear that the settings worked in getting your build working
> > with atomic ref counts.
> >
> > W.r.t performance, even atmoic ref counting is faster than using no
> > thread safety on ref counts, and no ref counting is faster than thread
> > unsafe ref counting.  Once difference between OSG 1.x and 2.x is that
> > 2.x provides extra threading models, including ones that overlap the
> > draw with the update + cull traversals of the next frame.  One of
> > consequences of this threading is that the rendering back end has to
> > use thread safe ref counting, so you while you gain performance from
> > the better threading model, you loose a little from the extra cost of
> > the ref counting.
> >
> > Even in your own tests the actual frame rate was shown to be the same
> > or higher when using the new threading model than in 1.2, even though
> > your cull and draw were way more expensive due to the lack of atomic
> > ref counts.  Might I suggest you examine the actual frame rates you
> > get once again now that the atomic ref counts are in place.
> >
> > A lot has been written about the various threading models in 2.x over
> > the last two years so have a look through the osg-users archives and
> > search for items like DrawThreadPerContext,
> > CullThreadPerCameraDrawTheadPerContext.
> >
> > FYI, Most of my models I get better performance, often significantly
> > better when using the new threading models, one does need to make sure
> > that your scene graph is set up with STATIC + DYNAMIC DataVariance
> > correctly to allow the frames to overlap the most without endangering
> > thread safety.
> >
> > Robert.
> >
> > On Wed, Feb 11, 2009 at 1:03 AM, Pecoraro, Alexander N
> > <[email protected]> wrote:
> >> I followed the instructions in the previous email and I was able to
> > get
> >> the 2.6.1 API to build with atomic ref counting on my Enterprise
> > Redhat
> >> box. This change caused a 33% improvement in my culling time and an 8%
> >> improvement in my draw time when in cull thread per context mode. In
> >> single threaded mode it made a similar amount of improvement in both
> >> cull and draw.
> >>
> >> This improvement is definitely nice so thanks for the help, but I am
> >> still confused as to how the 1.2 API is still able to perform about
> > %12
> >> - %15 better than 2.6.1 even with atomic ref counting used. Although,
> > I
> >> will say that I only see this on certain databases - I have another
> >> OpenFlight database that essentially gets the same level of
> > performance
> >> on both versions of the API.
> >>
> >> Has anyone else noticed a difference in performance between 1.2 and
> > 2.6
> >> on any of their old databases?
> >>
> >> Are there other settings (build or runtime) that I can use to improve
> >> performance?
> >>
> >> Are there different default settings or perhaps increased error
> > catching
> >> that was added in 2.X that could account for the difference that I am
> >> seeing?
> >>
> >> Thanks.
> >>
> >> Alex
> >>
> >> -----Original Message-----
> >> From: [email protected]
> >> [mailto:[email protected]] On Behalf Of
> > Robert
> >> Osfield
> >> Sent: Tuesday, February 10, 2009 10:35 AM
> >> To: OpenSceneGraph Users
> >> Subject: Re: [osg-users] Cull time doubled?
> >>
> >> On Tue, Feb 10, 2009 at 4:39 PM, Jason Daly <[email protected]> wrote:
> >>> On RHEL 5, you have to *explicitly* set CXXFLAGS to "-march=i486" or
> >> higher
> >>> *before* running CMake.  For some reason, the default configuration
> >> will
> >>> evaluate to using mutexes, even if your CPU supports the GCC
> > builtins.
> >>
> >> In long hand I think Jason is suggesting something like:
> >>
> >>
> >> // remove the previous CMakeCache.txt to force a full reconfigure
> >> rm CMakeCache.txt
> >>
> >> // set the CXXFLAGS to tell cmake that you plan to use a specific
> >> architecture
> >> export CXXFLAGS="-march=i686"
> >>
> >> // call the ./configure script or run cmake .
> >> -DCMAKE_BUILD_TYPE=Release that it's equivalent to
> >> ./configure
> >>
> >> // then run the parallel build to use all those loverly cores that
> >> modern machines have :-)
> >> make -j 4
> >>
> >>
> >> Could you let us know how you get on with this recipe.
> >>
> >> Robert.
> >> _______________________________________________
> >> osg-users mailing list
> >> [email protected]
> >>
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
> >> g
> >> _______________________________________________
> >> osg-users mailing list
> >> [email protected]
> >>
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
> > g
> >>
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
> > g
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>



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

Reply via email to