forked from apache/systemds
-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
graph
[DataOp: PRead X]
|
[TeeOp]
/ \
[ReorgOp: r(r')] [AggBinaryOp: ba(+*)]
| |
[Transpose t(X)] [Matrix Multiply t(X)*X]
Data Flow:
PRead X → TeeOp (splits stream)
TeeOp → ReorgOp (first output, for transpose)
TeeOp → AggBinaryOp (second output, for multiply)
program plan
[CP createvar pREADX] -- create file handle
[OOC rblk ...] -- read blocks
[OOC tee ...] -- split stream into two
[OOC r' ...] -- transpose on first stream
[OOC ba+* ...] -- matrix multiply (using transpose + second stream)
[CP write ...] -- write result
graph with variable names
[PRead X] --(_mVar0)--> [TeeOp]
| |
(_mVar2) (_mVar2_copy)
| |
[ReorgOp r(r')] [AggBinaryOp ba(+*)]
| |
(_mVar1) (_mVar3)
| |
[Result]
Hop Rewriting Works Correctly
=== BEFORE REWRITE ===
DataOp 9 has parents:
- r(r') (Hop 10) Children: [9:PRead X]
- ba(+*) (Hop 11) Children: [10:r(r'), 9:PRead X]
=== AFTER REWRITE ===
TeeOp 15 has parents:
- r(r') (Hop 10) Children: [15:tee] ✅ Now points to TeeOp
- ba(+*) (Hop 11) Children: [10:r(r'), 15:tee] ✅ Now points to TeeOp
The Hop graph is correctly rewritten - both consumers now reference the TeeOp instead of the original DataOp.
❌ But Execution Plan is Wrong
------OOC r' _mVar0.MATRIX.FP64 _mVar1.MATRIX.FP64 # ❌ Still using _mVar0
------OOC tee _mVar0.MATRIX.FP64 _mVar2.MATRIX.FP64 _mVar2_copy.MATRIX.FP64
------OOC ba+* _mVar1.MATRIX.FP64 _mVar2.MATRIX.FP64 _mVar3.MATRIX.FP64 # ❌ Should use _mVar2_copyThe problem is that the Lop→Instruction generation is not respecting the Hop graph changes.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels