MMatthias Springer[mlir][linalg] Expand test case for tile-and-fuse with transform dialect
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir] Remove special case parsing/printing of func operations This was leftover from when the standard dialect was destroyed, and when FuncOp moved to the func dialect. Now that these transitions have settled a bit we can drop these. Most updates were handled using a simple regex: replace ^( *)func with $1func.func Differential Revision: https://reviews.llvm.org/D124146 | 4 年前 | |
[mlir][bufferize] Bufferize after TensorCopyInsertion This change changes the bufferization so that it utilizes the new TensorCopyInsertion pass. One-Shot Bufferize no longer calls the One-Shot Analysis. Instead, it relies on the TensorCopyInsertion pass to make the entire IR fully inplacable. The bufferize implementations of all ops are simplified; they no longer have to account for out-of-place bufferization decisions. These were already materialized in the IR in the form of bufferization.alloc_tensor ops during the TensorCopyInsertion pass. Differential Revision: https://reviews.llvm.org/D127652 | 4 年前 | |
[mlir][Linalg] Extend Generic op dedup canonicalization to drop redundant result values. | 3 年前 | |
[mlir][linalg] Fix FoldTensorCastConsumerOp invalid folding CastOp can be in conditionally reachable region, in which case this folding will be invalid. Only conservatively fold ops in same block for now. Fixes https://github.com/llvm/llvm-project/issues/56557 Differential Revision: https://reviews.llvm.org/D130314 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][Linalg] Add a pattern to decompose linalg.generic ops. This patch adds a pattern to decompose a linalg.generic operations that - has only parallel iterator types - has more than 2 statements (including the yield) into multiple linalg.generic operation such that each operation has a single statement and a yield. The pattern added here just splits the matching linalg.generic into two linalg.generics, one containing the first statement, and the other containing the remaining. The same pattern can be applied repeatedly on the second op to ultimately fully decompose the generic op. Differential Revision: https://reviews.llvm.org/D129704 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][Linalg] Add DropUnitDims support for tensor::ParallelInsertSliceOp. ParallelInsertSlice behaves similarly to tensor::InsertSliceOp in its rank-reducing properties. This revision extends rank-reducing rewrite behavior and reuses most of the existing implementation. Differential Revision: https://reviews.llvm.org/D129091 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[FileCheck] Catch missspelled directives. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D125604 | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir] Remove special case parsing/printing of func operations This was leftover from when the standard dialect was destroyed, and when FuncOp moved to the func dialect. Now that these transitions have settled a bit we can drop these. Most updates were handled using a simple regex: replace ^( *)func with $1func.func Differential Revision: https://reviews.llvm.org/D124146 | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][Linalg] Deprecate legacy reshape + generic op folding patterns. These patterns have been superceded by the fusion by collapsing patterns. Differential Revision: https://reviews.llvm.org/D124145 | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][linalg] Add lowering of named ops on complex numbers This lets linalg.dot and friends lower to a complex muladd using ops from the complex dialect. Differential Revision: https://reviews.llvm.org/D125461 | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[MLIR Parser] Improve QoI for "expected token" errors A typical problem with missing a token is that the missing token is at the end of a line. The problem with this is that the error message gets reported on the start of the following line (which is where the next / invalid token is) which can be confusing. Handle this by noticing this case and backing up to the end of the previous line. Differential Revision: https://reviews.llvm.org/D125295 | 4 年前 | |
[mlir] Fix the names of exported functions The names of the functions that are supposed to be exported do not match the implementations. This is due in part to https://github.com/llvm/llvm-project/commit/cac7aabbd8236bef2909bfc0dbba17644f7aaade. This change makes the implementations and declarations match and adds a couple missing declarations. The new names follow the pattern of the existing verify functions where the prefix is maintained as _mlir_ciface_ but the suffix follows the new naming convention. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D124891 | 4 年前 | |
Fix linalg.dot over boolean tensors. dot is currently miscompiled for booleans (uses add instead of or). Reviewed By: bkramer Differential Revision: https://reviews.llvm.org/D129292 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
Adding a new variant of DepthwiseConv2D This is the same as the existing multiplier-1 variant of DepthwiseConv2D, but in PyTorch dim order. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D128575 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][linalg][NFC] Cleanup: Drop linalg.inplaceable attribute bufferization.writable is used in most cases instead. All remaining test cases are updated. Some code that is no longer needed is deleted. Differential Revision: https://reviews.llvm.org/D129739 | 3 年前 | |
[mlir][bufferization][NFC] Improve assembly format of AllocTensorOp No longer pass static dim sizes as an attribute. This was redundant and required extra checks in the verifier. This change also makes the op symmetrical to memref::AllocOp. Differential Revision: https://reviews.llvm.org/D126178 | 4 年前 | |
[mlir][bufferize][NFC] Decouple dropping of equivalent return values from bufferization This simplifies the bufferization itself and is in preparation of connecting with the sparse compiler. Differential Revision: https://reviews.llvm.org/D126814 | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][Linalg] Deprecate legacy reshape + generic op folding patterns. These patterns have been superceded by the fusion by collapsing patterns. Differential Revision: https://reviews.llvm.org/D124145 | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir] Remove the type keyword from type alias definitions This was carry over from LLVM IR where the alias definition can be ambiguous, but MLIR type aliases have no such problems. Having the type keyword is superfluous and doesn't add anything. This commit drops it, which also nicely aligns with the syntax for attribute aliases (which doesn't have a keyword). Differential Revision: https://reviews.llvm.org/D125501 | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][tensor] Add canonicalization for tensor.cast from extract_slice Propagate static size information into extract_slice producer if possible. Differential Revision: https://reviews.llvm.org/D125972 | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][linalg] Add tile_size option to structured.tile_to_foreach_thread_op This change modifies structured.tile_to_foreach_thread_op so that it accepts either tile_sizes or num_threads parameters. If tile_sizes are specified, then the number of threads required is derived the tile sizes rather than the other way around. In both cases, more aggressive folding of loop parameters is enabled during the transformation, allowing for the potential elimination of affine.min and affine.max operations in the static shape case when calculating the final adjusted tile size. Differential Revision: https://reviews.llvm.org/D130139 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in Linalg tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][linalg][transform] Add fuse_into_containing op This op fuses a given payload op into a given container op. Inside the container, all uses of the producer are replaced (fused) with the newly inserted op. If the producer is tileable and accessed via a tensor.extract_slice, the new op computes only the requested slice ("tile and fuse"). Otherwise, the entire tensor value is computed inside the container ("clone and fuse"). Differential Revision: https://reviews.llvm.org/D130244 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][linalg] Add attribute matcher to structured.match transform op This is useful for building small test cases and will be utilized in a subsequent commit that adds a fusion example. Differential Revision: https://reviews.llvm.org/D130344 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir] add interchange, pad and scalarize to structured transform dialect Add ops to the structured transform extension of the transform dialect that perform interchange, padding and scalarization on structured ops. Along with tiling that is already defined, this provides a minimal set of transformations necessary to build vectorizable code for a single structured op. Define two helper traits: one that implements TransformOpInterface by applying a function to each payload op independently and another that provides a simple "functional-style" producer/consumer list of memory effects for the transform ops. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D126374 | 4 年前 | |
[mlir] Allow Tile transform op to take dynamic sizes Extend the definition of the Tile structured transform op to enable it accepting handles to operations that produce tile sizes at runtime. This is useful by itself and prepares for more advanced tiling strategies. Note that the changes are relevant only to the transform dialect, the tiling transformation itself already supports dynamic sizes. Depends On D129216 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D129217 | 3 年前 | |
[mlir][Linalg] Retire LinalgPromotion pattern This revision removes the LinalgPromotion pattern and adds a transform.structured.promotion op. Since the LinalgPromotion transform allows the injection of arbitrary C++ via lambdas, the current transform op does not handle it. It is left for future work to decide what the right transform op control is for those cases. Note the underlying implementation remains unchanged and the mechanism is still controllable by lambdas from the API. During this refactoring it was also determined that the dynamicBuffers option does not actually connect to a change of behavior in the algorithm. This also exhibits that the related test is wrong (and dangerous). Both the option and the test are therefore removed. Lastly, a test that connects patterns using the filter-based mechanism is removed: all the independent pieces are already tested separately. Context: https://discourse.llvm.org/t/psa-retire-linalg-filter-based-patterns/63785 Differential Revision: https://reviews.llvm.org/D129649 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][linalg] Expand test case for tile-and-fuse with transform dialect Reverse the order of the payload ops. fuse_into_containing_op should still work. Differential Revision: https://reviews.llvm.org/D130355 | 3 年前 | |
[mlir][vector] Add accumulator operand to MultiDimReduce op This allows vectorizing linalg reductions without changing the operation order. Therefore this produce a valid vectorization even if operations are not associative. Differential Revision: https://reviews.llvm.org/D129535 | 3 年前 | |
[mlir][linalg] Relax convolution vectorization to support mixed types Support the case where convolution does float extension of the inputs. Differential Revision: https://reviews.llvm.org/D127925 | 4 年前 |