improve isosurface
The current 3D isosurface algorithm uses an explicit edge array. This turns out to be pretty fast for a structured grid, but it's expensive in terms of memory usage and it's too expensive for unstructured grids in both the memory and computational sense. So changing to something more implicit (i.e. that uses edge node id pairs) is probably necessary long term.
Also, efficient CPU implementations (see VisIt) use scalar trees to downselect the number of cells necessary to evaluate. I expect that same concept would work here, though may not be necessary with other improvements.
Finally, it would be be more efficient to compute multiple isolevels at once.
(Oh, and we only have a 3D isosurface right now; we need the 2D and 1D versions as well.)
So what’s the appropriate method to calculate and access a scalar tree using our functor paradigm? True, that it might not be needed with fine-grained parallelism, but it would be instructive to explore from a memory access point of view.
-Sean
Sean Ahern Oak Ridge National Laboratory 865-408-8463
On Sep 12, 2012, at 2:11 PM, Jeremy Meredith wrote:
The current 3D isosurface algorithm uses an explicit edge array. This turns out to be pretty fast for a structured grid, but it's expensive in terms of memory usage and it's too expensive for unstructured grids in both the memory and computational sense. So changing to something more implicit (i.e. that uses edge node id pairs) is probably necessary long term.
Also, efficient CPU implementations (see VisIt) use scalar trees to downselect the number of cells necessary to evaluate. I expect that same concept would work here, though may not be necessary with other improvements.
Finally, it would be be more efficient to compute multiple isolevels at once.
(Oh, and we only have a 3D isosurface right now; we need the 2D and 1D versions as well.)
— Reply to this email directly or view it on GitHubhttps://github.com/jsmeredith/EAVL/issues/2.