tqchen opened a new pull request, #20062:
URL: https://github.com/apache/tvm/pull/20062

   This refactors TIRx buffers into ordinary `ir.Var` identities carrying an
   immutable `BufferType`.
   
   ## Rationale
   
   The old representation kept a standalone Buffer object, its logical metadata,
   and a separate pointer-typed data Var.  Generic Var substitution and
   buffer-specific rebuilding could therefore let identity, metadata, and 
pointer
   type drift apart.  In this change, `BufferType` is the single source of the
   logical contract and `buffer_data(buffer)` is the explicit physical-pointer
   projection; `DeclBuffer` records a view's binding.
   
   ## Simplification
   
   - Generic Var scoping, substitution, undefined-variable analysis, and 
identity
     maps now apply directly to buffers.
   - The pointer type is derived from `BufferType`, so the physical pointer and
     buffer metadata cannot disagree.
   - The common IR path no longer needs a second Buffer object, duplicate
     constructor state, or a parallel buffer-only substitution mechanism.
   - Metadata-changing transforms create a fresh typed Var and bind it 
explicitly
     at the replacing `AllocBuffer` or `DeclBuffer`.
   
   Physical-root tracking remains deliberately local to the passes whose
   correctness depends on allocation ownership:
   
   1. Storage liveness/reuse attributes alias accesses to the owning allocation.
   2. Pointer vector-type inference and rewriting aggregate evidence at that 
root.
   3. LowerTIRx cleanup projects aliases to the remapped physical allocation.
   4. Thread-allreduce's deferred remapper replaces/removes the owning 
allocation.
   
   Each is a plain pass-local `Map<Var, Var>` flattened when a `DeclBuffer` is
   visited.  Parameters, `buffer_map`, and `AllocBuffer` seed roots; an alias 
to an
   unseen typed source is rejected rather than silently treated as a new root.
   Simpler passes decode the one-step `buffer_data` projection locally.
   
   ## Migration guide
   
   ### C++
   
   - Treat `BufferVar` as a checked view over an ordinary `Var`.
   - Read logical metadata through `buffer->...`; use `buffer.var()` for 
identity.
   - Use `buffer.data()` or `builtin::buffer_data()` only when a physical 
pointer
     expression is required.
   - To change metadata, rebuild `BufferType`, create a fresh Var, and bind it 
at
     the replacement definition site.
   - A transformed `DeclBuffer` replaces its superseded declaration 
consistently;
     it must not leave a stale declaration beside the new binding.
   
   ### Python
   
   - Buffer constructors return `tvm.ir.Var`; `.ty` contains `BufferType`.
   - Use `tvm.tirx.is_buffer_var(value)` for runtime discrimination.
   - `tvm.tirx.Buffer` remains an import/annotation compatibility alias for
     `tvm.ir.Var`, so `isinstance(value, Buffer)` matches every Var.
   - Importing `tvm.tirx` installs the legacy metadata properties on Var.
     Non-buffer Vars raise `AttributeError`; buffer `.dtype` keeps its 
historical
     `DataType` result.
   
   ## Behavior-preserving follow-up
   
   The second commit restores the original LowerTIRx, FlattenBuffer, and BF16
   outputs; restores the alias-lifetime regression; replaces superseded
   declarations; keeps ownership logic pass-local; and fixes tagged 
shared-memory
   children after their parent allocation is rebuilt.
   
   ## Validation
   
   - C++ build (`USE_LLVM=OFF`): passed.
   - Focused matrix: **239 passed, 3 skipped**.
   - Complete unfiltered TIRx/S-TIR Python run:
     **62 failed, 2248 passed, 1668 skipped, 11 xfailed, 1 xpassed,
     1 warning, 10 collection errors** in 290.09s.
   - The broad run exposed 12 genuine Python dtype-compatibility failures; those
     were fixed and rerun green.  The remaining failures and collection errors
     require LLVM/target globals, CUDA, NKI, Torch, or 
target-feature/target-build
     support unavailable on this node.
   - `git diff --check`: passed.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to