[all-commits] [llvm/llvm-project] f0311a: Revert "fix bug for F(mx1, rx1) and F(1xm, 1xr)"

Hsiangkai Wang via All-commits all-commits at lists.llvm.org
Mon Jul 1 05:49:22 PDT 2024


  Branch: refs/heads/users/hsiangkai/winograd-tiling
  Home:   https://github.com/llvm/llvm-project
  Commit: f0311ab642baa29224378c3465ee8c750b89159b
      https://github.com/llvm/llvm-project/commit/f0311ab642baa29224378c3465ee8c750b89159b
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-06-29 (Sat, 29 Jun 2024)

  Changed paths:
    M mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
    M mlir/test/Dialect/Linalg/transform-tile-and-winograd-rewrite.mlir

  Log Message:
  -----------
  Revert "fix bug for F(mx1, rx1) and F(1xm, 1xr)"

This reverts commit 04b31ec7b65244cd004fdfe767d70e059c2ffa2c.


  Commit: 435761ebe47d3d2e4e9f08a4d2e8ce28e64da534
      https://github.com/llvm/llvm-project/commit/435761ebe47d3d2e4e9f08a4d2e8ce28e64da534
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-06-29 (Sat, 29 Jun 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td
    M mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.td
    M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
    M mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
    M mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
    M mlir/lib/Dialect/Linalg/Transforms/WinogradConv2D.cpp
    R mlir/test/Dialect/Linalg/transform-tile-and-winograd-rewrite.mlir

  Log Message:
  -----------
  Revert "[mlir][linalg] Implement TilingInterface for winograd operators"

This reverts commit 73b524b7746839614655fd8082dbda297e93ba72.


  Commit: 398d00e755a80f85cfbe5b8c0dc5349c7b751297
      https://github.com/llvm/llvm-project/commit/398d00e755a80f85cfbe5b8c0dc5349c7b751297
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-06-29 (Sat, 29 Jun 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
    M mlir/lib/Dialect/Linalg/Transforms/WinogradConv2D.cpp
    R mlir/test/Dialect/Linalg/winograd-conv2d-rewrite.mlir
    M mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp

  Log Message:
  -----------
  Revert "[mlir][linalg] Decompose winograd operators"

This reverts commit 24c4f957ae673c2955fc0674f91e488813d59350.


  Commit: 8f5649c9b02fd7dff15c8d94df77092922d8b70a
      https://github.com/llvm/llvm-project/commit/8f5649c9b02fd7dff15c8d94df77092922d8b70a
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-06-29 (Sat, 29 Jun 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.td
    M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
    M mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
    M mlir/lib/Dialect/Linalg/Transforms/WinogradConv2D.cpp
    R mlir/test/Dialect/Linalg/transform-winograd-conv2d.mlir

  Log Message:
  -----------
  Revert "[mlir][linalg] Add transform operator for Winograd Conv2D algorithm"

This reverts commit 374b0d5b83ce080bea690199380e270a36ad1c52.


  Commit: 975f0a912a3cffb4e50b932b2f5b71d14bd6b657
      https://github.com/llvm/llvm-project/commit/975f0a912a3cffb4e50b932b2f5b71d14bd6b657
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-06-29 (Sat, 29 Jun 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td
    M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
    M mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
    M mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
    R mlir/lib/Dialect/Linalg/Transforms/WinogradConv2D.cpp
    R mlir/test/Dialect/Linalg/winograd-conv2d.mlir
    M mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp

  Log Message:
  -----------
  Revert "[mlir][linalg] Implement Conv2D using Winograd Conv2D algorithm"

This reverts commit 4240341b4f06f1b77f63b0f619cae3804d88eb68.


  Commit: 1fa83daf9044a79920495f8e4037fb0bd81e11b0
      https://github.com/llvm/llvm-project/commit/1fa83daf9044a79920495f8e4037fb0bd81e11b0
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-07-01 (Mon, 01 Jul 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td
    M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
    M mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
    M mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
    A mlir/lib/Dialect/Linalg/Transforms/WinogradConv2D.cpp
    A mlir/test/Dialect/Linalg/winograd-conv2d.mlir
    M mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp

  Log Message:
  -----------
  [mlir][linalg] Implement Conv2D using Winograd Conv2D algorithm

Define high level winograd operators and convert conv_2d_nhwc_fhwc into
winograd operators. According to Winograd Conv2D algorithm, we need
three transform operators for input, filter, and output transformation.

The formula of Winograd Conv2D algorithm is

Y = A^T x [(G x g x G^T) @ (B^T x d x B)] x A

filter transform: G x g x G^T
input transform: B^T x d x B
output transform: A^T x y x A

The implementation is based on the paper, Fast Algorithm for
Convolutional Neural Networks. (https://arxiv.org/abs/1509.09308)


  Commit: 8113ac491ef73be954241e674c681ca9b0338cab
      https://github.com/llvm/llvm-project/commit/8113ac491ef73be954241e674c681ca9b0338cab
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-07-01 (Mon, 01 Jul 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.td
    M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
    M mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
    M mlir/lib/Dialect/Linalg/Transforms/WinogradConv2D.cpp
    A mlir/test/Dialect/Linalg/transform-winograd-conv2d.mlir

  Log Message:
  -----------
  [mlir][linalg] Add transform operator for Winograd Conv2D algorithm

Add a transform operator structured.winograd_conv2d to convert
linalg.conv_2d_nhwc_fhwc to Linalg winograd operators.


  Commit: e7459ff18c15f93892f53fe2d5fe4faa6be760ae
      https://github.com/llvm/llvm-project/commit/e7459ff18c15f93892f53fe2d5fe4faa6be760ae
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-07-01 (Mon, 01 Jul 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
    M mlir/lib/Dialect/Linalg/Transforms/WinogradConv2D.cpp
    A mlir/test/Dialect/Linalg/winograd-conv2d-rewrite.mlir
    M mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp

  Log Message:
  -----------
  [mlir][linalg] Decompose winograd operators

Convert Linalg winograd_filter_transform, winograd_input_transform, and
winograd_output_transform into nested loops with matrix multiplication
with constant transform matrices.

Support several configurations of Winograd Conv2D, including F(2, 3),
F(4, 3) and F(2, 5). These configurations show that the implementation
can support different kernel size (3 and 5) and different output size
(2 and 4). Besides symetric kernel size 3x3 and 5x5, this patch also
supports 1x3, 3x1, 1x5, and 5x1 kernels.

The implementation is based on the paper, Fast Algorithm for
Convolutional Neural Networks. (https://arxiv.org/abs/1509.09308)


  Commit: fc3bf659b730c6e02211752646bd56f705581221
      https://github.com/llvm/llvm-project/commit/fc3bf659b730c6e02211752646bd56f705581221
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-07-01 (Mon, 01 Jul 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td
    M mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.td
    M mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
    M mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
    M mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
    M mlir/lib/Dialect/Linalg/Transforms/WinogradConv2D.cpp
    A mlir/test/Dialect/Linalg/transform-tile-and-winograd-rewrite.mlir

  Log Message:
  -----------
  [mlir][linalg] Implement TilingInterface for winograd operators

In order to support arbitrary size input data of conv2d, implement
TilingInterface for winograd operators. Before converting winograd
operators into nested loops with matrix multiply, tile the input of
conv2d into the supported size first.

Add a transform operator structured.decompose_winograd_op to decompose
winograd operators. Before applying the transform op, use tile_using_for
to tile the input data into supported size. The test case shows how to
tile and decompose winograd operators.


  Commit: 15961055b4051ea98bf2ac004fb55c1f565da539
      https://github.com/llvm/llvm-project/commit/15961055b4051ea98bf2ac004fb55c1f565da539
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-07-01 (Mon, 01 Jul 2024)

  Changed paths:
    M mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td
    M mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.td
    M mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
    M mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
    M mlir/test/Dialect/Linalg/transform-tile-and-winograd-rewrite.mlir

  Log Message:
  -----------
  Address comments


Compare: https://github.com/llvm/llvm-project/compare/04b31ec7b652...15961055b405

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list