-
Notifications
You must be signed in to change notification settings - Fork 183
Runtime TXN generation #3002
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
Draft
jgmelber
wants to merge
41
commits into
main
Choose a base branch
from
dynamic-runtime-sequences
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Runtime TXN generation #3002
Changes from all commits
Commits
Show all changes
41 commits
Select commit
Hold shift + click to select a range
4e1d883
Add dynamic runtime sequence operations to AIEX dialect
jgmelber 58e3d15
Add standalone TXN encoding library and EmitC-based C++ code generation
jgmelber ec123b2
Merge dynamic and static TXN paths to remove duplication
jgmelber a48a3ed
Add dynamic-size runtime TXN demo: compile once, run at any size
jgmelber 1bb1992
clang-format
jgmelber 73d54a9
Unify static and dynamic AIEX ops, eliminate Dyn op duplication
jgmelber f017bcf
Add IRON-level dynamic runtime support: RuntimeScalar, write_rtp, dyn…
jgmelber 88de190
Move dynamic GEMM designs to single_core_dynamic/, add placed variant…
jgmelber 3f8bcd3
Extract RTP address from static instructions instead of hardcoding
jgmelber 6c28cc9
clang-format and black formatting
jgmelber 0155ebd
Add dynamic TXN generation for runtime-configurable GEMM
jgmelber 544aec0
Fix dynamic TXN generation after rebase on main
jgmelber 39fed19
Address code review: fix correctness bugs and clean up
jgmelber 0066a60
Reset cmake/modulesXilinx submodule to match main
jgmelber 93acc43
Fix linker error: add AIETransforms dependency to AIETargets
jgmelber c97ce07
Remove IsolatedFromAbove from RuntimeSequenceOp, fix CI test failures
jgmelber 5286ec4
Fix Python formatting for CI (black)
jgmelber 934d90b
Reset cmake/modulesXilinx submodule to match main
jgmelber 84a7704
Format Python files to match CI black version
jgmelber 1fa8774
Clean branch for PR: remove hand-written TXN, stage all changes
jgmelber 93c6450
Merge remote-tracking branch 'origin/main' into dynamic-runtime-seque…
jgmelber ba6319d
Fix critical and blocker issues from PR review
jgmelber 0e9e2fe
Address remaining PR review findings: performance, code quality, docs
jgmelber 90ab0cd
Fix remaining PR review items: docs, validation, code quality
jgmelber 2b63765
Add FileCheck test coverage for EmitC TXN C++ generation (M7)
jgmelber fe0ba91
Fix passthrough dynamic Makefile: use aiecc instead of aie-translate
jgmelber 2943c94
Format C++ and Python files for CI (clang-format, black)
jgmelber 8da783e
Scope SCF-to-CF conversion to aie.core ops only (M3)
jgmelber 240b7b3
Fix CI format check: clang-format and black
jgmelber 88c66ee
Fix remaining clang-format issues
jgmelber bdf4d07
Fix Python formatting for CI (black 26.3.1)
jgmelber 1c58970
Reformat test files with black 26.3.1 to match CI
jgmelber f6e8a06
Fix buffer_resolution.py FileCheck: update rtp_write assembly format
jgmelber b8cafe9
Add lit test for dynamic GEMM TXN generation
jgmelber 606ca9f
Add NPU1 (Phoenix) support and lit tests for dynamic TXN examples
jgmelber e508bb5
Support SSA i32 in npu.dma_memcpy_nd and lower floordivsi to EmitC
jgmelber 1531551
Refactor single_core_dynamic.py as minimal delta over single_core.py
jgmelber e0d55eb
[WIP] testing and using blockwrites
jgmelber 119053c
Collapse dynamic BD into a single blockwrite call
jgmelber 5b59027
Keep dma_memcpy_nd at i64 + add static-vs-dynamic TXN equivalence test
jgmelber 758ab3d
Apply clang-format to prior changes
jgmelber File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| //===- AIEXToEmitC.h - AIEX to EmitC conversion -----------------*- C++ -*-===// | ||
| // | ||
| // This file is licensed under the Apache License v2.0 with LLVM Exceptions. | ||
| // See https://llvm.org/LICENSE.txt for license information. | ||
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| // | ||
| // (c) Copyright 2025-2026 Advanced Micro Devices, Inc. | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #ifndef AIE_CONVERSION_AIEXTOEMITC_AIEXTOEMITC_H | ||
| #define AIE_CONVERSION_AIEXTOEMITC_AIEXTOEMITC_H | ||
|
|
||
| #include "mlir/IR/BuiltinOps.h" | ||
| #include "mlir/Pass/Pass.h" | ||
| #include <memory> | ||
|
|
||
| namespace xilinx { | ||
|
|
||
| std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>> | ||
| createConvertAIEXToEmitCPass(); | ||
|
|
||
| } // namespace xilinx | ||
|
|
||
| #endif // AIE_CONVERSION_AIEXTOEMITC_AIEXTOEMITC_H |
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm a little worried about code bloat with having every parameter for these ops duplicated, once as an attribute and once as an SSA value, along with the added custom verifier and assembly format for each op.
Could we consider removing the attributes altogether and instead use SSA values, with
arith.constantfor the static case? All existing lowerings can get the value fromarith.constantand throw an error if it's not a constant, this emitC pass can use the actual SSA values. This approach would of course touch a lot of code (all examples etc. that use these ops with attributes would have to be rewritten to usearith.constant), but I think AI could handle it. I think it would be cleaner and might remove the need for customAssemblyFormat and hasVerifier for every op (haven't gotten to those yet but assume they're there because of this).