[Mlir-commits] [mlir] 1a91537 - [mlir][sparse] update doc for sparse_tensor.foreach operator.
Peiming Liu
llvmlistbot at llvm.org
Thu Oct 20 17:36:53 PDT 2022
Author: Peiming Liu
Date: 2022-10-21T00:36:47Z
New Revision: 1a91537d4ddd757a51c131ce6e8f25f2d1fbb3d3
URL: https://github.com/llvm/llvm-project/commit/1a91537d4ddd757a51c131ce6e8f25f2d1fbb3d3
DIFF: https://github.com/llvm/llvm-project/commit/1a91537d4ddd757a51c131ce6e8f25f2d1fbb3d3.diff
LOG: [mlir][sparse] update doc for sparse_tensor.foreach operator.
Clarify that sparse_tensor.foreach iterates sparse_tensor in stored dim order.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D136401
Added:
Modified:
mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td b/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td
index e8e5a3e9f6a8..de1ce485bebb 100644
--- a/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td
+++ b/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.td
@@ -846,6 +846,35 @@ def SparseTensor_ForeachOp : SparseTensor_Op<"foreach",
tensor's element type, representing the actual value loaded from the input
tensor at the given coordinates.
+ Note that foreach generated loop iterates over the stored elements in the storage
+ order. However, no matter what storage order is used, the indices passed to the block
+ always obey the original dimension order.
+
+ For example:
+ ```mlir
+ #COL_MAJOR = #sparse_tensor.encoding<{
+ dimLevelType = [ "compressed", "compressed" ],
+ dimOrdering = affine_map<(i,j) -> (j,i)>
+ }>
+
+ // foreach on a column-major sparse tensor
+ sparse_tensor.foreach in %0 : tensor<2x3xf64, #COL_MAJOR> do {
+ ^bb0(%row: index, %col: index, %arg3: f64):
+ // [%row, %col] -> [0, 0], [1, 0], [2, 0], [0, 1], [1, 1], [2, 1]
+ }
+
+ #ROW_MAJOR = #sparse_tensor.encoding<{
+ dimLevelType = [ "compressed", "compressed" ],
+ }>
+
+ // foreach on a row-major sparse tensor
+ sparse_tensor.foreach in %0 : tensor<2x3xf64, #ROW_MAJOR> do {
+ ^bb0(%row: index, %col: index, %arg3: f64):
+ // [%row, %col] -> [0, 0], [0, 1], [1, 0], [1, 1], [2, 0], [2, 1]
+ }
+
+ ```
+
Example:
```mlir
More information about the Mlir-commits
mailing list