See the previous published edition
Welcome to the forty-fourth issue of the MLIR (bi)Weekly, a newsletter covering developments in MLIR, and related projects in the ecosystem. MLIR (bi)Weekly is brought to you by a collective effort of contributors, we welcome your contributions!
Highlights
- A new Arithmetic dialect was added and many ops from Standard dialect moved there.
MLIR Core
Infrastructure
- The declarative assembly format now better supports operations with InferTypeOpInterface (the results for these operations no longer need to be specified).
- Handling for default-valued string attributes in ODS has changed, and usages should be updated to use DefaultValuedStrAttr.
- ODS generated accessors will change to have a
get
prefix (update your APIs!)
Python API
- A user-level documentation exists now.
- Variadic regions are now supported.
- One can now pass an
Operation
or anOpView
where aValue
or list thereof is expected in op construction. - We no longer need to specify inferrable result types to construct operations in Python, similarly to C++.
Codegen
- Various improvements to Linalg ComprehensiveBufferize
- OpDSL supports the new min / max operations as well as unsigned arithmetic
- The C++ versions ConvOp/PoolingOps have been replaced by its OpDSL counterparts.
- Improved control over packing and padding.
- Improved control over generalization and interchange.
- Sparse compiler progress:
- Added sparse_tensor.release for better memory management control
- The sparse_tensor.convert operations has been generalized to accept static/dynamic changes in the shape dimension sizes
- Continued work on adding general sparse tensor outputs
- Outreachy internship proposal has been approved: Sparse Tensor Compiler Support in MLIR
SPIR-V
- SPIR-V to LLVM conversion now propagates location information from spv.GlobalVariable to llvm.mlir.global and handles entry points with the same name but different execution modes.
- Standard to SPIR-V conversion now supports min/max ops.
- SPIR-V atomic ops now verifies memory semantics.
TOSA
- Improvements for reshape/transpose canonicalizers to constant propagate
- Conv2D, Fully Connected, Matmul, and Transpose dynamic case lowered to linalg
- Updated for arithmetic ops refactor, specifically some issues introduced due to casting changes.
In the Ecosystem
Flang, the LLVM Fortran Compiler
IREE : An Experimental MLIR Execution Environment
- Couple of blogs up on the IREE website
- CUDA backend
- Working on optimizing hugging_face model
- Improvements to reduction performance after fixing bugs in vectorization
- Improvements in workgroup size heuristic to increase occupancy
- End to end support for TFLite via TOSA demonstrated in iree-samples repo
- Expanded to include 25 models including mobilebert, mobilenetv1/2/3, and quantization support
TensorFlow / MLIR-HLO
- Refactored MLIR-generated kernels registration that reduced the overall binary size of OSS TF by 1.4 MB.
- Improvements for TFLite to TOSA
- Quantization improvements for average pool2d, rescale,
- Dynamic shape support added for split, strided slice, gather, and resize
- Negative axis support added for split and squeeze
Recent Talks
MLIR Open Meeting 2021-10-14: Discussion on Visualization projects