-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove unconnected boundary nodes from partition #3826
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should it be closed without merge? the original issue is already closed.
EDIT: 🤕 sorry, the second issue is still open
@oxidase ah sorry my bad, renamed the PR title. Going to squash the commits before merging, the reverts are just there for transparency. |
@TheMarex it is really hard to compare heuristics, because non-covered edge cases could give different results. I checked only two cases:
These numbers are really small (~10^-6 part of all nodes), so the difference is almost insignificant. I think it is better to use heuristic as simple as possible or even better avoid any kind by partitioning the edge-based graph, but don't know if it must be prioritized because of so minor win. |
@oxidase I will try your test datasets. This method should guarantee exactly zero unconnected boundary nodes, might be a bug. |
@oxidase fixed a bug in the code that breaks the partition, which was causing this weirdness. Did some investigation around the increased border nodes: Picking the minimum border edge My hypothesis is this is because this comes closest to a partitioning on the actual embedding. (forward node would be represented by the start of the edge and the backward node by the target) Result on Bayern and
Compared to
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Just checked on germany-latest
- no warnings during CellStorage
construction
[info] Loaded edge based graph for mapping partition ids: 51583110 edges, 13943644 nodes
[info] Fixed 1694 unconnected nodes
[info] Edge-based-graph annotation:
[info] level 1 #cells 70419 bit size 17
[info] level 2 #cells 5128 bit size 13
[info] level 3 #cells 315 bit size 9
[info] level 4 #cells 10 bit size 4
[info] MultiLevelPartition constructed in 12.3158 seconds
[info] CellStorage constructed in 2.4778 seconds
This commit removes all occurences of unconnected boundary nodes and switches to the simple heuristic of picking U for the forward and V for the backward node. This performs better than several fancy heuristics.
7393470
to
dfe4ae5
Compare
Issue
Addresses
#3780and #3818 and refactors assigning IDs from node-based edges to edge-based edges.We now chose the
BisectionID
of the side that would induce the least amount of boundary edges (since we are assigningBisectionID
s and notCellID
s this is only heuristic, since two differentBisectionID
s can later be contained in the same cell).We also remove all unconnected boundary nodes.
Tasklist