llvm-project/mlir/lib/Bindings/Python
Alex Zinenko ff6e5508d6 [mlir] Structured transforms: introduce op splitting
Introduce a new transformation on structured ops that splits the iteration
space into two parts along the specified dimension. The index at which the
splitting happens may be static or dynamic. This transformation can be seen as
a rudimentary form of index-set splitting that only supports the splitting
along hyperplanes parallel to the iteration space hyperplanes, and is therefore
decomposable into per-dimension application.

It is a key low-level transformation that enables independent scheduling for
different parts of the iteration space of the same op, which hasn't been
possible previously. It may be used to implement, e.g., multi-sized tiling. In
future, peeling can be implemented as a combination of split-off amount
computation and splitting.

The transformation is conceptually close to tiling in its separation of the
iteration and data spaces, but cannot be currently implemented on top of
TilingInterface as the latter does not properly support `linalg.index`
offsetting.

Note that the transformation intentionally bypasses folding of
`tensor.extract_slice` operations when creating them as this folding was found
to prevent repeated splitting of the same operation because due to internal
assumptions about extract/insert_slice combination in dialect utilities.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D129090
2022-07-07 13:19:44 +02:00
..
Conversions [mlir] Remove unused namespace alias. 2021-09-30 13:50:31 +02:00
Transforms Fix clang-tidy issues in mlir/ (NFC) 2021-12-20 20:25:01 +00:00
AllPassesRegistration.cpp [mlir][python] Provide "all passes" registration module in Python 2021-05-26 15:14:57 -07:00
AsyncPasses.cpp [mlir][python] Add python support for async dialect and passes. 2021-04-28 14:52:27 +00:00
DialectLinalg.cpp [mlir] Split out Python bindings for dialects into separate libs 2022-01-06 10:31:14 +01:00
DialectPDL.cpp [mlir] Introduce Python bindings for the PDL dialect 2022-01-19 11:19:56 +01:00
DialectQuant.cpp Ensure newlines at the end of files (NFC) 2022-01-06 23:44:02 -08:00
DialectSparseTensor.cpp [mlir] Split out Python bindings for dialects into separate libs 2022-01-06 10:31:14 +01:00
ExecutionEngineModule.cpp [mlir] Fix python bindings build on Windows in Debug 2022-05-09 19:46:47 -07:00
GPUPasses.cpp [mlir][python] Add basic python support for GPU dialect and passes 2021-04-28 14:52:28 +00:00
Globals.h
IRAffine.cpp Apply clang-tidy fixes for performance-move-const-arg to MLIR (NFC) 2022-01-02 22:36:56 +00:00
IRAttributes.cpp [MLIR][python binding] Add OpaqueAttribute to python binding. 2022-03-11 10:56:21 +01:00
IRCore.cpp [mlir][python] Actually set UseLocalScope printing flag 2022-06-15 22:01:34 -07:00
IRInterfaces.cpp [windows] Remove unused pybind exception params 2022-05-31 12:36:57 -07:00
IRModule.cpp Remove misused RAII gil_scoped_release/gil_scoped_acquire: without name they don't have any effect 2022-01-03 06:17:04 +00:00
IRModule.h [MLIR] [Python] Add a method to clear live operations map 2022-04-19 15:14:09 -07:00
IRTypes.cpp [mlir] Structured transforms: introduce op splitting 2022-07-07 13:19:44 +02:00
LinalgPasses.cpp [mlir] Register Linalg passes in C API and Python Bindings 2021-03-27 09:57:56 +01:00
MainModule.cpp [mlir] Split out Python bindings for dialects into separate libs 2022-01-06 10:31:14 +01:00
Pass.cpp [mlir] Prefix pass manager options with `mlir-` 2022-04-12 09:32:44 +00:00
Pass.h Ensure newlines at the end of files (NFC) 2021-10-23 08:45:29 -07:00
PybindUtils.cpp Fix clang-tidy issues in mlir/ (NFC) 2021-12-20 20:25:01 +00:00
PybindUtils.h [mlir][python] Directly implement sequence protocol on Sliceable. 2022-02-14 09:45:17 -08:00
SparseTensorPasses.cpp [mlir][sparse][capi][python] add sparse tensor passes 2021-05-12 16:40:50 -07:00