[mlir][linalg] Downscale 2D convolution with unit dimensions to 1D convolution
authorDevajith Valaparambil Sreeramaswamy <devajith.sreeramaswamy@huawei.com>
Wed, 8 Mar 2023 22:30:16 +0000 (14:30 -0800)
committerHanhan Wang <hanchung@google.com>
Wed, 8 Mar 2023 22:31:54 +0000 (14:31 -0800)
commit991945f4410af9df33f0889bf3c0695fd45a28b1
treebe4936a29e814f9035ff8438b18296f6fb7aaf83
parentac4c0ea73b11869898db2a007e3b3da2e352ecbc
[mlir][linalg] Downscale 2D convolution with unit dimensions to 1D convolution

Decompose conv_2d -> conv_1d.

This MR follows a similar approach to https://reviews.llvm.org/D112928.

This patch adds support to convert conv_2D operation with either unit height or unit width to conv_1D operation.

This is useful when 2D convolution is tiled to have a single dimension for either height or width and then can be vectorized once it is decomposed into 1D convolution.

This patch https://reviews.llvm.org/D145160 adds vector support for linalg.conv_1d operation and thereby allowing us to vectorize linalg.conv_2d operation after proper tiling.

This missing feature is reported here: https://discourse.llvm.org/t/vectorization-of-convolution-op/60458.

Reviewed By: hanchung

Differential Revision: https://reviews.llvm.org/D145162
mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
mlir/test/Dialect/Linalg/transform-op-decompose.mlir