Modeling Algorithms - Parallelize RemoveFeatures across disjoint solids - #1454
Open
bwross wants to merge 1 commit into
Open
Modeling Algorithms - Parallelize RemoveFeatures across disjoint solids#1454bwross wants to merge 1 commit into
bwross wants to merge 1 commit into
Conversation
Features whose affected solids don't overlap with any other feature's are grouped via Union-Find and processed independently (each with its own private local shape/history), enabling BOPTools_Parallel to run disjoint groups concurrently while features sharing a solid stay sequential within their group. Fixes poor multi-core utilization on shapes with many independent features. Adds DRAW test boolean/removefeatures/G5: two disjoint solids, each with its own feature, removed together in one call, covering the new multi-group path. Matches analytical volume/area exactly across repeated runs, and confirmed end-to-end through FreeCAD's Part.Shape.defeaturing() on a compound of disjoint holed solids.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Features whose affected solids don't overlap with any other features
are grouped via Union-Find and processed independently (each with its
own private local shape/history), enabling BOPTools_Parallel to run
disjoint groups concurrently while features sharing a solid stay
sequential within their group. Fixes poor multi-core utilization on
shapes with many independent features.
Adds DRAW test boolean/removefeatures/G5: two disjoint solids, each
with its own feature, removed together in one call, covering the new
multi-group path.
Benchmarked on a 16-core machine with a synthetic stress shape (N
disjoint solids, one drilled-hole feature each, all removed in a
single call):
Serial and parallel runs produce identical area, volume, and full
shape-type counts (vertex/edge/wire/face/shell/solid), both reporting
as valid shapes. Also verified end-to-end through FreeCAD's
Part.Shape.defeaturing() on a compound of disjoint holed solids, and
confirmed with Valgrind memcheck (0 errors) on the parallel path.