[all-commits] [llvm/llvm-project] a3d188: [mlir][linalg] Implement Conv2D using Winograd Con...

Hsiangkai Wang via All-commits all-commits at lists.llvm.org
Thu Jun 20 04:51:12 PDT 2024


  Branch: refs/heads/users/hsiangkai/winograd-ops-transform
  Home:   https://github.com/llvm/llvm-project
  Commit: a3d188ed7d25df05ccd6bc227ddc361b0c66a2f4
      https://github.com/llvm/llvm-project/commit/a3d188ed7d25df05ccd6bc227ddc361b0c66a2f4
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-06-20 (Thu, 20 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
    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: ab54cf84ecd650f696acb76ba864721232dd2af2
      https://github.com/llvm/llvm-project/commit/ab54cf84ecd650f696acb76ba864721232dd2af2
  Author: Hsiangkai Wang <hsiangkai.wang at arm.com>
  Date:   2024-06-20 (Thu, 20 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
    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.


Compare: https://github.com/llvm/llvm-project/compare/a3d188ed7d25%5E...ab54cf84ecd6

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