Skip to content
  1. Feb 08, 2021
  2. Feb 05, 2021
  3. Feb 04, 2021
    • Diego Caballero's avatar
      [mlir] Silence GCC warnings · f9f6b4f3
      Diego Caballero authored
      Reviewed By: mehdi_amini, rriddle
      
      Differential Revision: https://reviews.llvm.org/D95906
      f9f6b4f3
    • Mehdi Amini's avatar
    • Nicolas Vasilache's avatar
      [mlir][Linalg] Introduce a ContractionOpInterface · e4a503a2
      Nicolas Vasilache authored
      This revision takes advantage of recent extensions to vectorization to refactor contraction detection into a bona fide Linalg interface.
      The mlit-linalg-ods-gen parser is extended to support adding such interfaces.
      The detection that was originally enabling vectorization is refactored to serve as both a test on a generic LinalgOp as well as to verify ops that declare to conform to that interface.
      
      This is plugged through Linalg transforms and strategies but it quickly becomes evident that the complexity and rigidity of the C++ class based templating does not pay for itself.
      Therefore, this revision changes the API for vectorization patterns to get rid of templates as much as possible.
      Variadic templates are relegated to the internals of LinalgTransformationFilter as much as possible and away from the user-facing APIs.
      
      It is expected other patterns / transformations will follow the same path and drop as much C++ templating as possible from the class definition.
      
      Differential revision: https://reviews.llvm.org/D95973
      e4a503a2
    • Alexander Belyaev's avatar
      09c18a66
    • Nicolas Vasilache's avatar
      [mlir][Linalg] Drop SliceOp · f4ac9f03
      Nicolas Vasilache authored
      This op is subsumed by rank-reducing SubViewOp and has become useless.
      
      Differential revision: https://reviews.llvm.org/D95317
      f4ac9f03
    • Alex Zinenko's avatar
      [mlir] make vector to llvm conversion truly partial · ba87f991
      Alex Zinenko authored
      Historically, the Vector to LLVM dialect conversion subsumed the Standard to
      LLVM dialect conversion patterns. This was necessary because the conversion
      infrastructure did not have sufficient support for reconciling type
      conversions. This support is now available. Only keep the patterns related to
      the Vector dialect in the Vector to LLVM conversion and require type casts
      operations to be inserted if necessary. These casts will be removed by
      following conversions if possible. Update integration tests to also run the
      Standard to LLVM conversion.
      
      There is a significant amount of test churn, which is due to (a) unnecessarily
      strict tests in VectorToLLVM and (b) many patterns actually targeting Standard
      dialect ops instead of LLVM dialect ops leading to tests actually exercising a
      Vector->Standard->LLVM conversion. This churn is a good illustration of the
      reason to make the conversion partial: now the tests only check the code in the
      Vector to LLVM conversion and will not be randomly broken by changes in
      Standard to LLVM conversion.
      
      Arguably, it may be possible to extract Vector to Standard patterns into a
      separate pass, but given the ongoing splitting of the Standard dialect, such
      pass will be short-lived and will require further refactoring.
      
      Depends On D95626
      
      Reviewed By: nicolasvasilache, aartbik
      
      Differential Revision: https://reviews.llvm.org/D95685
      ba87f991
    • Nicolas Vasilache's avatar
      [mlir][Linalg] Generalize the definition of a Linalg contraction. · f245b7ad
      Nicolas Vasilache authored
      This revision defines a Linalg contraction in general terms:
      
        1. Has 2 input and 1 output shapes.
        2. Has at least one reduction dimension.
        3. Has only projected permutation indexing maps.
        4. its body computes `u5(u1(c) + u2(u3(a) * u4(b)))` on some field
          (AddOpType, MulOpType), where u1, u2, u3, u4 and u5 represent scalar unary
          operations that may change the type (e.g. for mixed-precision).
      
      As a consequence, when vectorization of such an op occurs, the only special
      behavior is that the (unique) MulOpType is vectorized into a
      `vector.contract`. All other ops are handled in a generic fashion.
      
       In the future, we may wish to allow more input arguments and elementwise and
       constant operations that do not involve the reduction dimension(s).
      
      A test is added to demonstrate the proper vectorization of matmul_i8_i8_i32.
      
      Differential revision: https://reviews.llvm.org/D95939
      f245b7ad
    • Nicolas Vasilache's avatar
      [mlir][Linalg] NFC - Extract a standalone LinalgInterfaces · 1029c82c
      Nicolas Vasilache authored
      This separation improves the layering and paves the way for more interfaces coming up in the future.
      
      Differential revision: https://reviews.llvm.org/D95941
      1029c82c
  4. Feb 03, 2021
  5. Feb 02, 2021
  6. Feb 01, 2021
    • Hanhan Wang's avatar
      [mlir][Linalg] Replace SimplePad with PadTensor in hoist-padding · b3f611bf
      Hanhan Wang authored
      This is the last revision to migrate using SimplePadOp to PadTensorOp, and the
      SimplePadOp is removed in the patch. Update a bit in SliceAnalysis because the
      PadTensorOp takes a region different from SimplePadOp. This is not covered by
      LinalgOp because it is not a structured op.
      
      Also, remove a duplicated comment from cpp file, which is already described in a
      header file. And update the pseudo-mlir in the comment.
      
      This is as same as D95615 but fixing one dep in CMakeLists.txt
      
      Different from D95671, the fix was applied to run target.
      
      Reviewed By: mravishankar
      
      Differential Revision: https://reviews.llvm.org/D95785
      b3f611bf
    • Tres Popp's avatar
      Revert "[mlir][Linalg] Replace SimplePad with PadTensor in hoist-padding" · 2790cbed
      Tres Popp authored
      This reverts commit d9b953d8.
      
      This commit resulted in build bot failures and the author is away from a
      computer, so I am reverting on their behalf until they have a chance to
      look into this.
      2790cbed
    • Hanhan Wang's avatar
      [mlir][Linalg] Replace SimplePad with PadTensor in hoist-padding · d9b953d8
      Hanhan Wang authored
      This is the last revision to migrate using SimplePadOp to PadTensorOp, and the
      SimplePadOp is removed in the patch. Update a bit in SliceAnalysis because the
      PadTensorOp takes a region different from SimplePadOp. This is not covered by
      LinalgOp because it is not a structured op.
      
      Also, remove a duplicated comment from cpp file, which is already described in a
      header file. And update the pseudo-mlir in the comment.
      
      Reviewed By: nicolasvasilache
      
      Differential Revision: https://reviews.llvm.org/D95671
      d9b953d8
  7. Jan 29, 2021
  8. Jan 28, 2021
  9. Jan 27, 2021
Loading