Skip to content

Conversation

@ShangkunLi
Copy link
Collaborator

In this pr,

  1. re-define the computation of taskflow.task: we ensure there are only data dependencies (e.g., producer-consumer, RAW, WAR, WAW) between different tasks
  2. introduce taskflow.counter op: convert all the loop control into counter tree/graph, each counter represents a loop control
  3. introduce taskflow.hyperblock: wrap the rest code into hyperblock

This design enables us to perform three-level optimizations:

  1. Pre-task optimization: before transforming to taskflow, we can perform high-level optimizations to explore the parallelism
  2. Resource-agnostic optimization: perform task fission/fusion to minimize the data dependencies between different tasks
  3. Resource-aware optimization: task legalization & resource binding (e.g., one task on multiple CGRAs, fuse multiple task to maximize resource utilization)

TODO:
Hyperblock fusion to generate the DFG/integrate to the neura.kernel op.

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.

1 participant