Skip to content
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

[TK] Subgraph Tracing to support control flow #350

Merged
merged 10 commits into from
Jan 20, 2024

Conversation

Groverkss
Copy link
Contributor

@Groverkss Groverkss commented Jan 15, 2024

This PR supports tracing a function within a separate tracer as a "subgraph". This allows us to trace loop bodies instead of unrolling them.

Along with subgraph tracing, this patch adds several features to enable tracing a gemm kernel:

  • Instead of doing slicing, add explicit tkl.load/tkl.store ops. Personally, I feel slicing may not be the way to go forward as we always have a constant sized output from the slice. If we go with slicing, we have to analyze if it's constant sized which is not worth it.
  • Add support for tkl.constant, tkl.dot, tkl.for_loop.
  • Add a new "Vector" class, which is a tensor like class supporting computations over it. I'm not a fan of using pytorch ops directly since I don't get control over the op signature.

I did not add support for eager executing these operations, only compile mode. All of these newly added ops can be eagerly executed, just haven't added the support in this patch.

@Groverkss Groverkss changed the title [TK] Subgraph Tracing to support control flow [TK] Subgraph Tracing to support control flow and GEMM Jan 19, 2024
@Groverkss Groverkss changed the title [TK] Subgraph Tracing to support control flow and GEMM [TK] Subgraph Tracing to support control flow Jan 19, 2024
Copy link
Contributor

@stellaraccident stellaraccident left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great! Let's land this and sync up/iterate first thing next week.

@stellaraccident stellaraccident merged commit 86653a4 into main Jan 20, 2024
4 checks passed
@stellaraccident stellaraccident deleted the wip-subgraph-tracing branch January 20, 2024 01:31
IanNod pushed a commit that referenced this pull request Jan 24, 2024
This PR supports tracing a function within a separate tracer as a
"subgraph". This allows us to trace loop bodies instead of unrolling
them.

Along with subgraph tracing, this patch adds several features to enable
tracing a gemm kernel:

- Instead of doing slicing, add explicit tkl.load/tkl.store ops.
Personally, I feel slicing may not be the way to go forward as we always
have a constant sized output from the slice. If we go with slicing, we
have to analyze if it's constant sized which is not worth it.
- Add support for tkl.constant, tkl.dot, tkl.for_loop.
- Add a new "Vector" class, which is a tensor like class supporting
computations over it. I'm not a fan of using pytorch ops directly since
I don't get control over the op signature.

I did not add support for eager executing these operations, only compile
mode. All of these newly added ops can be eagerly executed, just haven't
added the support in this patch.

---------

Co-authored-by: Stella Laurenzo <[email protected]>
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.

2 participants