Skip to content

Brainstorm: parallelization strategy for QuADMESH+ #38

@domattioli

Description

@domattioli

Ask

Background brainstorm (no implementation expected yet): where can QuADMESH+ exploit parallelism, and what is the cleanest decomposition? Deliverable is a short options memo, not code.

Why now (low priority)

Pure correctness work (faithful tri2quad sweep, PR #37) takes precedence. File this so the parallelization design space is captured while it is fresh; pick up when the queue thins.

Seed questions

  • Layer sweep is sequential by construction. faithful_sweep mutates the working Domain innermost→outward; edgeBisection splits iLayer-1 while still triangular, so layer k depends on layer k+1. Is that dependency fundamental, or only between adjacent layers (i.e. can non-adjacent layers run concurrently)?
  • Independent connected components / submeshes. A disconnected (or weakly-coupled) domain could tri2quad each component in parallel. Worth a component-split front-end?
  • Embarrassingly-parallel stages. Post-process smoothing (angle-based, FEM), elem_quality, per-element checks — which are already data-parallel and just need vectorization vs process/thread fan-out?
  • Within-layer matching. The tri-pair matcher (_match_tris_to_quads) over one layer — graph matching; is a parallel/blocked matcher worth it, or is per-layer work too small?
  • Batch axis. Many independent meshes (test fixtures, sweeps) → trivial multiprocessing at the driver level. Lowest-effort win?
  • Tooling. numpy vectorization vs multiprocessing vs numba/Cython vs leaving it to chilmesh. GIL implications. Determinism (we already have a run-to-run nondeterminism bug — parallelism must not worsen it).

Out of scope

Not asking for an implementation or a benchmark harness here — just the decomposition options + a recommended first target with rough effort/payoff.


Labeling note: no canonical scope: label covers core package/algorithm code (canon scopes are infra-flavored: automation/ci/docs/git/plugin/skill/sync/testing). Tagged by type + request + priority only. Candidate follow-up for git-issue-label-manager canon (e.g. a scope: core / scope: algorithm).

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: somedayBackground; pick when queue thins.request: researchRequest for an investigation; deliverable is a report.status: brainstormingDesign phase; not yet implementable. Agents do NOT open a PR while in this state.type: featNew capability or skill.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions