[all-commits] [llvm/llvm-project] 5c352e: Providing buffer assignment for MLIR

Ehsan Toosi via All-commits all-commits at lists.llvm.org
Tue Apr 28 01:19:04 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 5c352e69e76a26e4eda075e20aa6a9bb7686042c
      https://github.com/llvm/llvm-project/commit/5c352e69e76a26e4eda075e20aa6a9bb7686042c
  Author: Ehsan Toosi <ehsan.nadjaran_toosi at dfki.de>
  Date:   2020-04-28 (Tue, 28 Apr 2020)

  Changed paths:
    A mlir/include/mlir/Transforms/BufferPlacement.h
    M mlir/include/mlir/Transforms/Passes.h
    M mlir/include/mlir/Transforms/Passes.td
    A mlir/lib/Transforms/BufferPlacement.cpp
    M mlir/lib/Transforms/CMakeLists.txt
    A mlir/test/Transforms/buffer-placement-prepration.mlir
    A mlir/test/Transforms/buffer-placement.mlir
    M mlir/test/lib/Transforms/CMakeLists.txt
    A mlir/test/lib/Transforms/TestBufferPlacement.cpp
    M mlir/tools/mlir-opt/mlir-opt.cpp

  Log Message:
  -----------
  Providing buffer assignment for MLIR

We have provided a generic buffer assignment transformation ported from
TensorFlow. This generic transformation pass automatically analyzes the values
and their aliases (also in other blocks) and returns the valid positions for
Alloc and Dealloc operations. To find these positions, the algorithm uses the
block Dominator and Post-Dominator analyses. In our proposed algorithm, we have
considered aliasing, liveness, nested regions, branches, conditional branches,
critical edges, and independency to custom block terminators. This
implementation doesn't support block loops. However, we have considered this in
our design. For this purpose, it is only required to have a loop analysis to
insert Alloc and Dealloc operations outside of these loops in some special
cases.

Differential Revision: https://reviews.llvm.org/D78484




More information about the All-commits mailing list