jsmeredith / EAVL

Extreme-scale Analysis and Visualization Library
http://ft.ornl.gov/eavl/
Other
19 stars 10 forks source link

change explicit grid connectivity to group by shapetype #5

Open jsmeredith opened 12 years ago

jsmeredith commented 12 years ago

This is good for fine-grain data parallelism, because if you're executing on a bunch of same-shape cells in a row, you minimize warp divergence.

However, it might simplify/speed up indexing. The simplest case is if your mesh is all one cell type. E.g. if you have a triangle mesh, you know that the connectivity for cell 100 starts at index 300 in the connectivity array. (Implicit in this statement: you don't need to say in the connectivity array that each of the cells in this section has three values.) So you don't need the reverse cell-to-connectivity index map at all.

Can this type of optimization be applied to multiple shape types? Yes, to some degree. For example, if you have 5 shapetype groups, you only need to know the starting index for each of the 5 groups, and you can just do the same multiplication for each. Actually implementing this optimization for multiple shape types is not trivial; it's possible you can't easily obtain the full benefit without some effort. Or maybe you need specific separate optimizations for 1-shape and 2-shape grids, for example.

ahernsean commented 12 years ago

What about the Silo method, allowing spans of same-shape groupings, but not requiring that all of a same shape be contiguous?

-Sean

Sean Ahern Oak Ridge National Laboratory 865-408-8463

On Sep 24, 2012, at 4:56 PM, "Jeremy Meredith" notifications@github.com<mailto:notifications@github.com> wrote:

This is good for fine-grain data parallelism, because if you're executing on a bunch of same-shape cells in a row, you minimize warp divergence.

However, it might simplify/speed up indexing. The simplest case is if your mesh is all one cell type. E.g. if you have a triangle mesh, you know that the connectivity for cell 100 starts at index 300 in the connectivity array. (Implicit in this statement: you don't need to say in the connectivity array that each of the cells in this section has three values.) So you don't need the reverse cell-to-connectivity index map at all.

Can this type of optimization be applied to multiple shape types? Yes, to some degree. For example, if you have 5 shapetype groups, you only need to know the starting index for each of the 5 groups, and you can just do the same multiplication for each. Actually implementing this optimization for multiple shape types is not trivial; it's possible you can't easily obtain the full benefit without some effort. Or maybe you need specific separate optimizations for 1-shape and 2-shape grids, for example.

— Reply to this email directly or view it on GitHubhttps://github.com/jsmeredith/EAVL/issues/5.