Added to IndexTreeIndicesOp (Index Tree Dialect) a new attribute iterator_type to tell if the iteration can be parallelized. It is analogous to iterator_types in the linalg.generic op (https://mlir.llvm.org/docs/Dialects/Linalg/#linalggeneric-linalggenericop). Candidate options: parallel, reduction, window, serial, default. This change influences many other code where builder.createindexTree::IndexTreeIndicesOp is called as follows. Some places may need further change to make the logic correct.
Added a helper class IteratorType as the handle to the new attribute iterator_type and a member in the class TreeNode (include/comet/Dialect/IndexTree/IR/IndexTree.h).
Added a member iteratorTypes in the class Index_Tree to store the iterator type of each iterative index.
IndexTreeIndicesOp
(Index Tree Dialect) a new attributeiterator_type
to tell if the iteration can be parallelized. It is analogous toiterator_types
in thelinalg.generic
op (https://mlir.llvm.org/docs/Dialects/Linalg/#linalggeneric-linalggenericop). Candidate options: parallel, reduction, window, serial, default. This change influences many other code wherebuilder.createindexTree::IndexTreeIndicesOp
is called as follows. Some places may need further change to make the logic correct.lib/Conversion/TensorAlgebraToSCF/LowerPCToLoops.cpp
lib/Conversion/TensorAlgebraToIndexTree/TensorAlgebraToIndexTree.cpp
lib/Dialect/IndexTree/Transforms/Fusion.cpp
lib/Dialect/IndexTree/Transforms/WorkspaceTransforms.cpp
IteratorType
as the handle to the new attributeiterator_type
and a member in the classTreeNode
(include/comet/Dialect/IndexTree/IR/IndexTree.h
).iteratorTypes
in the classIndex_Tree
to store the iterator type of each iterative index.