Skip to content

Conversation

@Truth-Ke
Copy link
Collaborator

This commit introduces a robust framework for software pipelining on NPU targets by implementing stage-based loop partitioning and unrolling.

  1. StageDependencyAnalyzer:

    • Partitions scf.for loops into stages via sync primitives.
    • Builds dependency DAGs using SSA and AliasAnalysis for safe reordering.
  2. DimAnalyzer & DimensionDisjointSet:

    • Uses DSU to track dimension equivalence across operations.
    • Propagates Parallel/Reduction properties to guide tiling heuristics.
  3. NPUUnrollPipeline:

    • Executes Stage-Major unrolling with automated Hivm flag management.
    • Handles complex iter_arg propagation across unrolled iterations.

@CLAassistant
Copy link

CLAassistant commented Jan 20, 2026

CLA assistant check
All committers have signed the CLA.

@Truth-Ke Truth-Ke force-pushed the kzx/dev branch 3 times, most recently from ca3880b to efc96a8 Compare January 20, 2026 09:39
This commit introduces a robust framework for software pipelining on NPU targets by implementing stage-based loop partitioning and unrolling.

1. StageDependencyAnalyzer:
   - Partitions scf.for loops into stages via sync primitives.
   - Builds dependency DAGs using SSA and AliasAnalysis for safe reordering.

2. DimAnalyzer & DimensionDisjointSet:
   - Uses DSU to track dimension equivalence across operations.
   - Propagates Parallel/Reduction properties to guide tiling heuristics.

3. NPUUnrollPipeline:
   - Executes Stage-Major unrolling with automated Hivm flag management.
   - Handles complex iter_arg propagation across unrolled iterations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants