Skip to content
This repository has been archived by the owner on Oct 26, 2024. It is now read-only.

Should we ditch tile splitting? #81

Closed
tbenthompson opened this issue Oct 10, 2022 · 1 comment · Fixed by #87
Closed

Should we ditch tile splitting? #81

tbenthompson opened this issue Oct 10, 2022 · 1 comment · Fixed by #87

Comments

@tbenthompson
Copy link
Member

tbenthompson commented Oct 10, 2022

Tile splitting adds a lot of complexity with, currently, little gain:

  • we have to compute tile vertices
  • we have to either:
    • deal with sparse tile vertex storage. This is extra complexity that is also fundamentally the reason the C++ grid code is slower than the current numpy grid code.
    • or store all the vertices. this is lots of memory that is the reason the numpy grid code uses too much memory, see Grid performance and memory usage. #32
  • we have to deal with all the splitting code
  • it's a bit harder to predict how a tile's bound will change with grid refinement. if we just used the radius of the tile, it would be a trivial calculation.
  • the computational benefits are almost zero with current bounds:
    • the furthest corner in the Holder-ODI is still just as far away unless we re-center the tile, which we are not currently doing. (if we keep splitting tiles, we probably should start re-centering the new tiles!)
    • the change in C_q in the Holder-ODI bound as a result of moving the corners is super tiny.
    • @JamesYang007 how do you think this changes with exponential holder?
  • See other comments here: Lei example #25 (comment)

On the other hand: I think we should be really careful about this decision because the computational benefits of splitting seem potentially large if we make some modifications:

  • tile re-centering (just compute a new tile center as the centroid after splitting). This is super easy.
  • anisotropic bounds (imagine a long skinny rectangular tile where the bound has low derivative in the long direction and high derivative in the skinny direction)
  • anistropic refinement (we only split in the "bad" direction)
@JamesYang007
Copy link
Member

Exponential Holder always assumes your tile is embedded in a rectangle (cartesian product of the projection of the tile onto each coordinate) and uses this rectangle to compute the bound. So removing corner calculation doesn't change anything. We can compute exponential Holder with just the theta_0 and radius information.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants