Sign in to follow this  
mahendragr

kd-tree in volume rendering

Recommended Posts

Hi all,

I have a weird situation with kd-trees. I have implemented a kd-tree for volume rendering, which is also used for load balancing in a cluster-like environment. For example if there are two machines, each machine gets a part of the tree starting from the root and renders its portion. However, when i detect a load imbalance, i move the subdivision plane in the kdtree so that the machine which is slower gets less number of leaves(which contain the data), the problem now is, when i move the sub-division plane, i have two new bboxes, which are inturn divided again(which i dont want to happen as i save the old leaves based in its bbox and reuse them to prevent data reloading). My question is, how should i stop my tree from being subdivided again into smaller chunks, which are less than the leaf size :(

Share this post


Link to post
Share on other sites
[quote name='mahendragr' timestamp='1312466563' post='4844486']
Hi all,

I have a weird situation with kd-trees. I have implemented a kd-tree for volume rendering, which is also used for load balancing in a cluster-like environment. For example if there are two machines, each machine gets a part of the tree starting from the root and renders its portion. However, when i detect a load imbalance, i move the subdivision plane in the kdtree so that the machine which is slower gets less number of leaves(which contain the data), the problem now is, when i move the sub-division plane, i have two new bboxes, which are inturn divided again(which i dont want to happen as i save the old leaves based in its bbox and reuse them to prevent data reloading). My question is, how should i stop my tree from being subdivided again into smaller chunks, which are less than the leaf size :(
[/quote]

Well, there is nothing weird here; you see exactly what you should see, "moving subdivision plane" at some level you consequently ruin/invalidate the correspondent sub-trees. It is apparently possible to try "re-utilize" some sub-trees but it requires some trimming/expansion of all effected sub-divisions what clearly must cause the domino effect and at the end you just rebuild the effected sub-trees. No offence, but such "balancing" approach is silly (from my point of view), as soon as each cluster node may satisfy a single client with interactive high fidelity volume rendering it makes no sense to distribute workload of single client across cluster farm, in such case the load distribution should be balanced among clients. Dual X5650 node is totally up to provide an interactive high fidelity volume rendering for 2K cube and may scale up logarithmically so modern 4 socket Xeon (40-cores) may render interactively 4K cube at super-sampling x16 with 1.5....2MP view ports.

--sb

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this