This is a first step towards fully implementing the new dimension
level types and properties, illustrating with a fully functional
sorted COO of any dimension. Note that the sparsification part is
pretty complete. The required parts in the runtime support library
have been kept to a minimum, to avoid huge conflicts with Wren's
ongoing refactoring. The missing parts will be filled in later.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 188184 Build 284369: arc lint + arc unit
Event Timeline
mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp | ||
---|---|---|
1390–1391 | How about having a merger.isSparseLevel utils? |
mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp | ||
---|---|---|
1327–1328 | What if you have lo = 0, hi = 1 here for singleton? (to allow the loop unroll opt kicking in later?) | |
1369 | And you do not overwrite the value here. (the pidxs for singleton will become loop invariant, but it is okay because there is no loop actually). |
mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp | ||
---|---|---|
1327–1328 | Yeah that would be a good way to get the current loop unroller working. But I also feel we would break the regularity of codegen in sparsification just for the sake of working around a limitation in unrolling. Besides, I have put one of my best people on the task of improving unrolling ;-) | |
1369 | Note that the "loop" could co-iterates with another, and then it remains. I have a CHECK example for that ready in the next revision. | |
1390–1391 | Yeah, good idea, I can also use that for the scan one. |
mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp | ||
---|---|---|
1221 | I am wondering which one of the followings should we use? (d0) -> (d0 + 1) |
mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp | ||
---|---|---|
1221 | Waiting to see what feedback you get on https://reviews.llvm.org/D134204 |
mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp | ||
---|---|---|
1390–1391 | No, not really. |
Holding off landing this revision until Wren's chain of refactoring lands, and I will rebase this then before submitting.
mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp | ||
---|---|---|
1221 | Note that I reverted this again to addi over affine apply |
rebased with main
(note that all changes in support lib for singleton
disappeared since Wren already prefetched them into
the refactored support lib revisions)
I am wondering which one of the followings should we use?
(d0) -> (d0 + 1)
or
()[s0]->(s0 + 1)