| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
[mlir] update remaining transform tests to main pass (#81279) Use the main transform interpreter pass instead of the test pass. The only tests that are not updated are specific to the operation of the test pass. | 2 年前 | |
[mlir][TD] update more tests to use the "main" interpreter pass (#76963) Update several tests under mlir/test/Dialect/Transform to use the "main" transform interpreter pass with named entry points rather than the test interpreter pass. This helped discover a logic error in the expensive checks mechanism that was exiting too early. | 2 年前 | |
| 1 年前 | ||
[mlir] introduce debug transform dialect extension (#77595) Introduce a new extension for simple print-debugging of the transform dialect scripts. The initial version of this extension consists of two ops that are printing the payload objects associated with transform dialect values. Similar ops were already available in the test extenion and several downstream projects, and were extensively used for testing. | 2 年前 | |
[mlir] make transform.foreach_match forward arguments (#89920) It may be useful to have access to additional handles or parameters when performing matches and actions in foreach_match, for example, to parameterize the matcher by rank or restrict it in a non-trivial way. Enable foreach_match to forward additional handles from operands to matcher symbols and from action symbols to results. | 2 年前 | |
[mlir] introduce debug transform dialect extension (#77595) Introduce a new extension for simple print-debugging of the transform dialect scripts. The initial version of this extension consists of two ops that are printing the payload objects associated with transform dialect values. Similar ops were already available in the test extenion and several downstream projects, and were extensively used for testing. | 2 年前 | |
[MLIR][Transform] Prefer entry points in current module (#151323) The transform interpreter previously looked for the entry point using a recursive walk in pre-order. This makes it so that any named_sequence operation with an arbitrary level of nested-ness will be used as the entry point for the transform interpreter as long as it is placed before another one. This change makes it so that code like the one reported in https://github.com/llvm/llvm-project/issues/119578 works as expected. Closes #119578 Some comments: alternatively, it would also be possible to solve this issue in a slightly more elegant manner. We could define a new walker iterator that iterates through the operations in a breadth first search. --------- Co-authored-by: Jakub Kuderski <kubakuderski@gmail.com> | 11 个月前 | |
[mlir][transform] Fix new interpreter and library preloading passes. (#69190) This PR fixes the two recently added passes from #68661, which were non-functional and untested. In particular: * The passes did not declare their dependent dialects, so they could not run at all in the most simple cases. * The mechanism of loading the library module in the initialization of the intepreter pass is broken by design (but, fortunately, also not necessary). This is because the initialization of all passes happens before the execution of any other pass, so the "preload library" pass has not run yet at the time the interpreter pass gets initialized. Instead, the library is now loaded every time the interpreter pass is run. This should not be exceedingly expensive, since it only consists of looking up the library in the dialect. Also, this removes the library module from the pass state, making it possible in the future to preload libraries in several passes. * The PR adds tests for the two passes, which were completely untested previously. | 2 年前 | |
[mlir][transform] Fix new interpreter and library preloading passes. (#69190) This PR fixes the two recently added passes from #68661, which were non-functional and untested. In particular: * The passes did not declare their dependent dialects, so they could not run at all in the most simple cases. * The mechanism of loading the library module in the initialization of the intepreter pass is broken by design (but, fortunately, also not necessary). This is because the initialization of all passes happens before the execution of any other pass, so the "preload library" pass has not run yet at the time the interpreter pass gets initialized. Instead, the library is now loaded every time the interpreter pass is run. This should not be exceedingly expensive, since it only consists of looking up the library in the dialect. Also, this removes the library module from the pass state, making it possible in the future to preload libraries in several passes. * The PR adds tests for the two passes, which were completely untested previously. | 2 年前 | |
[mlir][irdl] Introduce names in IRDL value lists (#123525) In order to meaningfully generate getters and setters from IRDL, it makes sense to embed the names of operands, results, etc. in the IR definition. This PR introduces this feature. Names are constrained similarly to TableGen names. | 1 年前 | |
[mlir] update remaining transform tests to main pass (#81279) Use the main transform interpreter pass instead of the test pass. The only tests that are not updated are specific to the operation of the test pass. | 2 年前 | |
[mlir] update remaining transform tests to main pass (#81279) Use the main transform interpreter pass instead of the test pass. The only tests that are not updated are specific to the operation of the test pass. | 2 年前 | |
[mlir] update remaining transform tests to main pass (#81279) Use the main transform interpreter pass instead of the test pass. The only tests that are not updated are specific to the operation of the test pass. | 2 年前 | |
[mlir] transform dialect: don't crash in verifiers (#161098) Fix crashes in the verifier of transform.with_named_sequence attribute attached to a symbol table operation caused by it constructing a call graph inside the symbol table. The call graph construction assumes calls and callables, such as functions or named sequences, have been verified, but it is not yet the case when the attribute verifier on the (parent) symbol table operation runs. Trigger such verification manually before constructing the call graph. This adds redundancy in verification, but there is currently no mechanism to change the order of verificaiton. In performance-critical scenarios, verification can be disabled altogether. Remove unnecessary verfificaton from transform::IncludeOp::getEffects. It was introduced along with the op definition as the op used to inspect the body of callee, which assumed the body existed, to identify handle consumption behavior. This was later evolved to having explicit argument attributes on the callee, which handles the absence of such attributes gracefully without the need for verification, but the verification was never removed. It would have been causing infinite recursion if kept in place. Fixes #159646. Fixes #159734. Fixes #159736. | 9 个月前 | |
[mlir][Transform] Extend transform.foreach to take multiple arguments (#93705) Changes transform.foreach's interface to take multiple arguments, e.g. transform.foreach %ops1, %ops2, %params : ... { ^bb0(%op1, %op2, %param): BODY } The semantics are that the payloads for these handles get iterated over as if the payloads have been zipped-up together - BODY gets executed once for each such tuple. The documentation explains that this implementation requires that the payloads have the same length. This change also enables the target argument(s) to be any op/value/param handle. The added test cases demonstrate some use cases for this change. | 2 年前 | |
[mlir][Transform] Fix crash with invalid ir for transform libraries (#75649) This patch fixes a crash caused when the transform library interpreter is given an IR that fails to parse. | 2 年前 | |
[mlir][transform] Handle multiple library preloading passes. (#69705) This is a new attempt at #69320. The transform dialect stores a "library module" that the preload pass can populate. Until now, each pass registered an additional module by simply pushing it to a vector; however, the interpreter only used the first of them. This commit turns the registration into "loading", i.e., each newly added module gets merged into the existing one. This allows the loading to be split into several passes, and using the library in the interpreter now takes all of them into account. While this design avoids repeated merging every time the library is accessed, it requires that the implementation of merging modules lives in the TransformDialect target (since it at the dialect depend on each other). This resolves https://github.com/llvm/llvm-project/issues/69111. | 2 年前 | |
[mlir][transform] Consistent linalg transform op syntax for dynamic index lists (#90897) This patch is a first pass at making consistent syntax across the LinalgTransformOps that use dynamic index lists for size parameters. Previously, there were two different forms: inline types in the list, or place them in the functional style tuple. This patch goes for the latter. In order to do this, the printPackedOrDynamicIndexList, printDynamicIndexList and their parse counterparts were modified so that the types can be optionally provided to the corresponding custom directives. All affected ops now use tablegen assemblyFormat, so custom parse/print functions have been removed. There are a couple ops that will likely add dynamic size support, and once that happens it should be made sure that the assembly remains consistent with the changes in this patch. The affected ops are as follows: pack, pack_greedily, tile_using_forall. The tile_using_for and vectorize ops already used this syntax, but their custom assembly was removed. --------- Co-authored-by: Oleksandr "Alex" Zinenko <ftynse@gmail.com> | 2 年前 | |
[mlir] don't hardcode PDL_Operation in TestTransformDialectExtensions Update operations in Transform dialect extensions used for testing to use the more generic TransformHandleTypeInterface type constraint instead of hardcoding PDL_Operation. See https://discourse.llvm.org/t/rfc-type-system-for-the-transform-dialect/65702 for motivation. This is particularly important as these tests are often used as source of best practices. Update tests to use !transform.any_op instead of !pdl.operation. Depends On D150785 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D150786 | 3 年前 | |
[mlir] update remaining transform tests to main pass (#81279) Use the main transform interpreter pass instead of the test pass. The only tests that are not updated are specific to the operation of the test pass. | 2 年前 | |
[mlir] update remaining transform tests to main pass (#81279) Use the main transform interpreter pass instead of the test pass. The only tests that are not updated are specific to the operation of the test pass. | 2 年前 | |
[mlir] update remaining transform tests to main pass (#81279) Use the main transform interpreter pass instead of the test pass. The only tests that are not updated are specific to the operation of the test pass. | 2 年前 | |
[mlir][TD] Allow op printing flags as transform.print attrs (#86846) Introduce 3 new optional attributes to the transform.print ops: * assume_verified * use_local_scope * skip_regions The primary motivation is to allow printing on large inputs that otherwise take forever to print and verify. For the full context, see this IREE issue: https://github.com/openxla/iree/issues/16901. Also add some tests and fix the op description. | 2 年前 | |
make transform.split_handle accept any handle kind (#118752) It can now split value and parameter handles in addition to operation handles. This is a generally useful functionality. | 1 年前 | |
[mlir] introduce debug transform dialect extension (#77595) Introduce a new extension for simple print-debugging of the transform dialect scripts. The initial version of this extension consists of two ops that are printing the payload objects associated with transform dialect values. Similar ops were already available in the test extenion and several downstream projects, and were extensively used for testing. | 2 年前 | |
[mlir][Pass] Fix crash when applying a pass to an optional interface (#169262) Interfaces can be optional: whether an op implements an interface or not can depend on the state of the operation. `` // An optional code block for adding additional "classof" logic. This can // be used to better enable "optional" interfaces, where an entity only // implements the interface if some dynamic characteristic holds. // $_attr/$_op/$_type may be used to refer to an instance of the // interface instance being checked. code extraClassOf = ""; ` The current Pass::canScheduleOn(RegisteredOperationName) is insufficient. This commit adds an additional overload to inspect Operation *. This commit fixes a crash when scheduling an InterfacePass` for an optional interface on an operation that does not actually implement the interface. This is a re-upload of #168499, which was reverted. | 8 个月前 | |
[mlir] transform.apply_patterns support more config options (#88484) Greedy rewrite driver has options to control the number of rewrites applies. Expose those via the corresponding transform op. | 2 年前 | |
[mlir] update remaining transform tests to main pass (#81279) Use the main transform interpreter pass instead of the test pass. The only tests that are not updated are specific to the operation of the test pass. | 2 年前 | |
[mlir][transform] Add PromoteTensorOp (#158318) Transform op to request a tensor value to live in a specific memory space after bufferization Co-authored-by: Nicolas Vasilache <Nico.Vasilache@amd.com> Co-authored-by: Alex Zinenko <ftynse@gmail.com> | 9 个月前 | |
[MLIR][Transform][SMT] Allow for declarative computations in schedules (#160895) By allowing transform.smt.constrain_params's region to yield SMT-vars, op instances can declare relationships, through constraints, on incoming params-as-SMT-vars and outgoing SMT-vars-as-params. This makes it possible to declare that computations on params should be performed. The semantics are that the yielded SMT-vars should be from any valid satisfying assignment/model of the constraints in the region. | 9 个月前 | |
[MLIR][Transform][SMT] Allow for declarative computations in schedules (#160895) By allowing transform.smt.constrain_params's region to yield SMT-vars, op instances can declare relationships, through constraints, on incoming params-as-SMT-vars and outgoing SMT-vars-as-params. This makes it possible to declare that computations on params should be performed. The semantics are that the yielded SMT-vars should be from any valid satisfying assignment/model of the constraints in the region. | 9 个月前 | |
[MLIR][Transform][Tune] Introduce transform.tune.alternatives op (#160724) This op enables expressing uncertainty regarding what should be happening at particular places in transform-dialect schedules. In particular, it enables representing a choice among alternative regions. This choice is resolved through providing a selected_region argument. When this argument is provided, the semantics are such that it is valid to rewrite the op through substituting in the selected region -- with the op's interpreted semantics corresponding to exactly this. This op represents another piece of the puzzle w.r.t. a toolkit for expressing autotuning problems with the transform dialect. Note that this goes beyond tuning knobs _on_ transforms, going further by making it tunable which (sequences of) transforms are to be applied. | 9 个月前 | |
[MLIR][Transform][Tune] Introduce transform.tune.alternatives op (#160724) This op enables expressing uncertainty regarding what should be happening at particular places in transform-dialect schedules. In particular, it enables representing a choice among alternative regions. This choice is resolved through providing a selected_region argument. When this argument is provided, the semantics are such that it is valid to rewrite the op through substituting in the selected region -- with the op's interpreted semantics corresponding to exactly this. This op represents another piece of the puzzle w.r.t. a toolkit for expressing autotuning problems with the transform dialect. Note that this goes beyond tuning knobs _on_ transforms, going further by making it tunable which (sequences of) transforms are to be applied. | 9 个月前 | |
[MLIR][Transform] Allow stateInitializer and stateExporter for applyTransforms (#101186) This is discussed in RFC: https://discourse.llvm.org/t/rfc-making-the-constructor-of-the-transformstate-class-protected/80377 | 1 年前 | |
[mlir] update remaining transform tests to main pass (#81279) Use the main transform interpreter pass instead of the test pass. The only tests that are not updated are specific to the operation of the test pass. | 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 11 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 2 年前 |