Text archives Help
- From: David E DeMarle <
>
- To:
- Subject: [Manta] Re: Re: Re: Re: information about the acceleration structures?
- Date: Wed, 14 Apr 2010 19:32:36 -0400
Sorry that wasn't quite accurate.
The overlap happens because all the triangles within the sliding
window extent use vertices in a small region of space. The fact that
more of them share vertices is immaterial.
David E DeMarle
Kitware, Inc.
R&D Engineer
28 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-371-3971 x109
On Wed, Apr 14, 2010 at 3:54 PM, David E DeMarle
<
>
wrote:
>
Better benchmarks are welcome.
>
>
Mine doesn't make a hull. I just make randomly drifting vertices and
>
then make triangles from them. X controls the size of the sliding
>
window into the vertex list that triangles choose from. With x=0 the
>
triangles don't overlap since they never (well rarely if ever) share
>
vertices. When x is bigger, vertices tend to get picked by more and
>
more triangles and so many of the triangles in the sliding window
>
"overlap".
>
>
Features I needed:
>
* exactly controllable number of triangles
>
* has to be separable, so that any number of processors can generate
>
independent swaths of triangles and the union of all those swaths has
>
to be exactly the same (which makes the total size "unlimited")
>
* variability in triangle size, placement and orientation
>
* quick build time
>
* readable in VTK, in parallel
>
>
David E DeMarle
>
Kitware, Inc.
>
R&D Engineer
>
28 Corporate Drive
>
Clifton Park, NY 12065-8662
>
Phone: 518-371-3971 x109
>
>
>
>
On Wed, Apr 14, 2010 at 3:28 PM, Carson Brownlee
>
<
>
>
wrote:
>
> Does that random triangle strip form a hull or is it just slightly less
>
> overlapping because the triangles are attached to eachother? Perhaps a
>
> variable number of variably subdivided polygonal spheres would make for
>
> a better benchmark.
>
> I believe this is one of the options in the primtest scene, or at least
>
> you can repeat objects a certain number of times spaced out along a
>
> grid.
>
> Carson
>
>
>
> On Wed, 2010-04-14 at 11:57 -0400, David E DeMarle wrote:
>
>> Thanks for the explanation.
>
>>
>
>> The degree of "evilness" (or fuzziness, or co-location of triangles)
>
>> is controllable in the test source generator. See,
>
>> vtkMantaTestSource::SetSlidingWindow(x).
>
>>
>
>> As x goes from 0.01 (which I was used) down to 0.0, the data
>
>> degenerates to a random triangle strip. As it goes up to 1.0 I think
>
>> it degenerates to random triangles within a cube.
>
>>
>
>> The build times and frame rates are improve greatly as it approaches
>
>> 0.0.
>
>>
>
>> For 100k triangles, at 0.0:
>
>> grid build 1.26s
>
>> grid render 22.7fps
>
>>
>
>> dynbvh build 1.8s
>
>> dynbvh render 27.7fps
>
>>
>
>> For 100k triangles at 0.005
>
>> grid build 109.7s
>
>> grid render 1.0fps
>
>>
>
>> dynbvh build 1.91127
>
>> dynbvh render 16.7594
>
>>
>
>>
>
>> David E DeMarle
>
>> Kitware, Inc.
>
>> R&D Engineer
>
>> 28 Corporate Drive
>
>> Clifton Park, NY 12065-8662
>
>> Phone: 518-371-3971 x109
>
>>
>
>>
>
>> On Tue, Apr 13, 2010 at 4:34 PM, Thiago Ize
>
>> <
>
>
>> wrote:
>
>> I took a quick look at the scene you generated and it's a very
>
>> evil scene. The triangles are all on top of each other which
>
>> causes issues with most acceleration structures. I had never
>
>> really thought much about this, but the BVH does have the nice
>
>> property that the build time is unaffected by the triangle
>
>> sizes or distribution and depends solely on the triangle
>
>> count. This makes sense since BVHs are object partitioning
>
>> structures and will have a guaranteed upper bound on the
>
>> number of nodes (usually 2n-1). The grid and kd-tree are
>
>> spatial splitting structures and so will end up doing lots of
>
>> extra work when the triangles are overlapping each other in an
>
>> effort to create nodes/cells with only a few triangles.
>
>> However, when it comes to render time, the grid, and sometimes
>
>> the kd-tree, will win out since they do end up separating the
>
>> triangles and space better. In theory the kd-tree would do
>
>> just as well as the grid if the build were smart enough to
>
>> handle this case, but alas it currently is not. If I was
>
>> patient enough, I'd be very interested in seeing how the BSP
>
>> would handle this.
>
>>
>
>> DynBVH: 1.7s, 4.7fps
>
>> rgrid 1: 4.5s, 3.2fps
>
>> rgrid 2: 94s, 8fps
>
>> rgrid 3: 360s, 8.9fps
>
>> KDTree: 6.2s, 2.1fps
>
>> KDTree (with perfect splits): 284s, 6fps
>
>>
>
>> The specific problem you are seeing with respect to the grid
>
>> is that each triangle ends up lying in many grid cells and so
>
>> we get tons of triangle references. With more grid levels you
>
>> end up with smaller grid cells and so a triangle will lie in
>
>> even more grid cells. So in this case I'd recommend a 1 or 2
>
>> level grid. Although to be honest, I think this benchmark is
>
>> testing for a worst case degenerative type scene then the
>
>> normal case scene. If a user creates something where the
>
>> triangles are all on top of each other then chance are there
>
>> is something very wrong either with the code that produced
>
>> those triangles or with their method of visualizing that data.
>
>> I've included a screenshot of just how ugly those triangles
>
>> are. This is a cool test case though for checking out worst
>
>> case performance and if you are worried about worst case build
>
>> time, then BVH is the way to go. But if you want a structure
>
>> for normal situations, then I would recommend a different
>
>> benchmark.
>
>>
>
>>
>
>>
>
>>
>
>>
>
>> Thiago
>
>>
>
>> David E DeMarle wrote:
>
>> > Here is a summary:
>
>> >
>
>> > All tests are on a mac pro running leopard with 8 2.6GHz 64bit
>
>> CPUs and 10G ram.
>
>> >
>
>> > The test data is randomly generated (randomly sized and
>
>> oriented)
>
>> > triangles. The triangles drift so they aren't all completely
>
>> located
>
>> > but they are clumped.
>
>> > Attached are sample images for 1000 and 250000 tris. See
>
>> > vtkMantaTestSource in the ParaView source for details.
>
>> >
>
>> > These pure manta tests don't do camera orbits or colormap but
>
>> are
>
>> > qualitatively similar to the rest.
>
>> >
>
>> > A representative test command is:
>
>> > bin/manta -res 512x512 -np 8 -bench 100 1 -shadow noshadows
>
>> -scene
>
>> > "lib/libscene_triangleSceneViewer(-model
>
>> > /Users/demarle/tmp/mesh_1000.ply -triangleType Wald_tri)"
>
>> >
>
>> > #NAME, #numPROC, #numThread, #numTri, #build time, #avg
>
>> framerate
>
>> > MANTA_DYN, 1, 8, 1000, 0.006706, 209.551
>
>> > MANTA_DYN, 1, 8, 5000, 0.040952, 183.941
>
>> > MANTA_DYN 1, 8, 10000, 0.089845, 111.36
>
>> > MANTA_DYN, 1, 8, 50000, 0.534879, 46.9353
>
>> > MANTA_DYN, 1, 8, 100000, 1.18454, 30.5049
>
>> > MANTA_DYN, 1, 8, 250000, 3.27977, 13.5604
>
>> > MANTA_DYN, 1, 8, 500000, 7.30346, 7.05025
>
>> > MANTA_DYN, 1, 8, 750000, 11.4801, 5.61708
>
>> > MANTA_DYN, 1, 8, 1000000, 15.5694, 3.9836
>
>> > MANTA_DYN, 1, 8, 2500000, 44.9804, 1.43034
>
>> > MANTA_DYN, 1, 8, 5000000, 105.155, 0.600696
>
>> >
>
>> > MANTA_RG3, 1, 8, 1000, 0.021551, 90.2758
>
>> > MANTA_RG3, 1, 8, 5000, 0.360524,99.7973
>
>> > MANTA_RG3, 1, 8, 10000, 1.710166, 85.0091
>
>> > MANTA_RG3, 1, 8, 50000, 38.843968, 86.2438
>
>> > MANTA_RG3, 1, 8,100000, 272.700091, 75.805
>
>> > crash/killed above this
>
>> >
>
>> > vtkManta is about 50% the framerate above, mostly because we
>
>> have to
>
>> > ask manta to render 2x to get a picture out of what the we've
>
>> asked
>
>> > for, but also because build time is included in the framerate
>
>> (compare
>
>> > 1/render time).
>
>> >
>
>> > A representative test command is
>
>> > mpirun -np 1 bin/MantaBenchmark -screensize 512 -threads 8
>
>> > -noChanges -triangles 1000
>
>> >
>
>> > #NAME, #numPROC, #numThread, #numTri, #build time, #render time,
>
>> > #composite time, avg framerate
>
>> > VTKMANTA_DYN, 1, 8, 1000, 0.159514, 0.0116025, 0, 56.3087
>
>> > VTKMANTA_DYN, 1, 8, 5000, 0.215516, 0.0163282, 0, 45.7362
>
>> > VTKMANTA_DYN, 1, 8, 10000, 0.294489, 0.0152193, 0, 52.5233
>
>> > VTKMANTA_DYN, 1, 8, 50000, 0.949177, 0.0322921, 0, 24.6086
>
>> > VTKMANTA_DYN, 1, 8, 100000, 1.86205, 0.0649788, 0, 12.3498
>
>> > VTKMANTA_DYN, 1, 8, 250000, 5.02568, 0.113499, 0, 6.37497
>
>> > VTKMANTA_DYN, 1, 8, 500000, 10.978, 0.202382, 0, 3.37314
>
>> > VTKMANTA_DYN, 1, 8, 750000, 18.7495, 0.288325, 0, 2.22531
>
>> > VTKMANTA_DYN, 1, 8, 1000000, 31.5962, 0.336292, 0, 1.64294
>
>> > VTKMANTA_DYN, 1, 8, 2500000, 115.183, 1.02509, 0, 0.495391
>
>> > VTKMANTA_DYN, 1, 8, 5000000, 285.524, 2.66965, 0, 0.194939
>
>> >
>
>> > VTKMANTA_DYN, 1, 1, 1000, 0.192624, 0.0461057, 0, 20.9861
>
>> > VTKMANTA_DYN, 1, 1, 5000, 0.242418, 0.0578603, 0, 16.7351
>
>> > VTKMANTA_DYN, 1, 1, 10000, 0.327631, 0.087255, 0, 11.1571
>
>> > VTKMANTA_DYN, 1, 1, 50000, 1.02266, 0.167914, 0, 5.69547
>
>> > VTKMANTA_DYN, 1, 1, 100000, 2.03976, 0.358396, 0, 2.67876
>
>> > VTKMANTA_DYN, 1, 1, 500000, 11.4847, 1.186, 0, 0.783819
>
>> >
>
>> > The exact same test with MESA (7.6.2) is:
>
>> >
>
>> > MESA, 1, 1, 1000, 0.0263782, 0.00566359, 0, 102.432
>
>> > MESA, 1, 1, 5000, 0.04706, 0.0160004, 0, 53.1379
>
>> > MESA, 1, 1, 10000, 0.0824239, 0.0387112, 0, 24.0468
>
>> > MESA, 1, 1, 50000, 0.255554, 0.103142, 0, 9.34801
>
>> > MESA, 1, 1, 100000, 0.581918, 0.299732, 0, 3.28216
>
>> > MESA, 1, 1, 250000, 1.55697, 0.537817, 0, 1.82149
>
>> > MESA, 1, 1, 500000, 3.63054, 1.18965, 0, 0.824423
>
>> >
>
>> > And with the 512Mbit NVIDIA 8800GT
>
>> > NVIDIA, 1, 1, 1000, 0.117104, 0.00857559, 0, 56.2237
>
>> > NVIDIA, 1, 1, 5000, 0.127745, 0.00820931, 0, 56.7612
>
>> > NVIDIA, 1, 1, 10000, 0.144963, 0.00814167, 0, 56.2256
>
>> > NVIDIA, 1, 1, 50000, 0.273312, 0.00866277, 0, 52.4685
>
>> > NVIDIA, 1, 1, 100000, 0.45417, 0.00889918, 0, 48.9557
>
>> > NVIDIA, 1, 1, 250000, 1.25211, 0.00939326, 0, 23.3149
>
>> > NVIDIA, 1, 1, 500000, 2.76642, 0.0255764, 0, 16.6894
>
>> > NVIDIA, 1, 1, 750000, 5.9455, 0.0385038, 0, 9.68741
>
>> > NVIDIA, 1, 1, 1000000, 14.4165, 0.0478288, 0, 5.14866
>
>> > NVIDIA, 1, 1, 2500000, 65.545, 0.105334, 0, 1.3805
>
>> > NVIDIA, 1, 1, 5000000, 171.056, 1.2384, 0, 0.361464
>
>> >
>
>> > David E DeMarle
>
>> > Kitware, Inc.
>
>> > R&D Engineer
>
>> > 28 Corporate Drive
>
>> > Clifton Park, NY 12065-8662
>
>> > Phone: 518-371-3971 x109
>
>> >
>
>> >
>
>> >
>
>> > On Sun, Apr 11, 2010 at 11:20 PM, Thiago Ize
>
>> <
>
>
>> wrote:
>
>> >
>
>> > > So RecursiveGrid is crashing with more than 100k triangles?
>
>> That's odd.
>
>> > > I've gotten it to build 10M+ triangle scenes. Are these
>
>> triangles
>
>> > > distributed in some weird fashion? For instance, are the
>
>> triangles large
>
>> > > and overlapping each other so that a single triangle ends up
>
>> being in lots
>
>> > > of grid cells? Any chance you could send me a screenshot of
>
>> what the 100k
>
>> > > scene looks like?
>
>> > >
>
>> > > Here's an example where I built a 1M tri scene on my laptop:
>
>> > >
>
>> > > $bin/manta -scene
>
>> "lib/libscene_triangleSceneViewer.dylib(-rgrid -model
>
>> > > /Users/thiago/data/models/happy_vrip.ply -triangleType
>
>> Wald_tri)"
>
>> > > -nodisplaybench 10 10
>
>> > > Recursive Grid built in 9.577648 seconds for a 1087474 object
>
>> scene
>
>> > > There are 1, 457, 51970, 0 grids per level for a total of
>
>> 14674215 cells
>
>> > > 7 x 18 x 7
>
>> > > Benchmark completed in 1.37217 seconds (10 frames, 7.28771
>
>> frames per
>
>> > > second)
>
>> > >
>
>> > > So 1.4s to render 20 frames and it took 9.5s to load the
>
>> model and build the
>
>> > > structure with the recursive grid. The peak memory usage
>
>> during the build
>
>> > > was about 250MB and for rendering it stayed at 250MB.
>
>> > >
>
>> > > $bin/manta -scene
>
>> "lib/libscene_triangleSceneViewer.dylib(-DynBVH -model
>
>> > > /Users/thiago/data/models/happy_vrip.ply -triangleType
>
>> Wald_tri)"
>
>> > > -nodisplaybench 10 10
>
>> > > DynBVH::preprocess START (1087474 objects)
>
>> > >
>
>> > > DynBVH build time: Total (24.1661)
>
>> > > object_ids initialization (0.366518)
>
>> > > build (23.6126)
>
>> > > updateBounds (0.18699)
>
>> > > num_nodes = 1188560
>
>> > >
>
>> > > Benchmark completed in 0.984006 seconds (10 frames, 10.1625
>
>> frames per
>
>> > > second)
>
>> > >
>
>> > > So DynBVH took 2.5 times longer to build than recursive grid
>
>> and was 1.36x
>
>> > > faster to render. It's peak memory usage was 300MB during the
>
>> build (more
>
>> > > than the rgrid) and then 240MB during rendering. So from a
>
>> build
>
>> > > perspective rgrid wins hands down, at least for triangle
>
>> meshes.
>
>> > > Incidentally, as an example of why rgrid's build is
>
>> unoptimized and could be
>
>> > > much faster, I tried building the same scene using my
>
>> optimized grid build
>
>> > > (not in manta) and I get a build time of about 1s (on one
>
>> thread).
>
>> > >
>
>> > > Thiago
>
>> > >
>
>>
>
>
>
>
>
>
>
- [Manta] Re: Re: information about the acceleration structures?, (continued)
- [Manta] Re: Re: information about the acceleration structures?, David E DeMarle, 04/09/2010
- Message not available
- [Manta] Re: Re: Re: information about the acceleration structures?, David E DeMarle, 04/11/2010
- [Manta] Re: Re: Re: Re: information about the acceleration structures?, Thiago Ize, 04/11/2010
- [Manta] Re: Re: Re: Re: Re: information about the acceleration structures?, David E DeMarle, 04/11/2010
- [Manta] Re: Re: Re: Re: Re: Re: information about the acceleration structures?, Thiago Ize, 04/11/2010
- [Manta] Re: Re: Re: Re: Re: Re: Re: information about the acceleration structures?, David E DeMarle, 04/12/2010
- [Manta] Re: information about the acceleration structures?, Thiago Ize, 04/13/2010
- [Manta] Re: Re: information about the acceleration structures?, David E DeMarle, 04/14/2010
- [Manta] Re: Re: Re: information about the acceleration structures?, Carson Brownlee, 04/14/2010
- [Manta] Re: Re: Re: Re: information about the acceleration structures?, David E DeMarle, 04/14/2010
- [Manta] Re: Re: Re: Re: information about the acceleration structures?, David E DeMarle, 04/14/2010
- [Manta] Re: Re: information about the acceleration structures?, Carson Brownlee, 04/14/2010
[Manta] RE: Re: Re: Re: Re: information about the acceleration structures?, Bo Huang, 04/12/2010
Archive powered by MHonArc 2.6.16.