Skip to content
  1. Jan 22, 2021
  2. Jan 20, 2021
  3. Jan 19, 2021
  4. Jan 16, 2021
  5. Jan 15, 2021
  6. Jan 13, 2021
    • Aart Bik's avatar
      [mlir][sparse] add vectorization strategies to sparse compiler · f4f158b2
      Aart Bik authored
      Similar to the parallelization strategies, the vectorization strategies
      provide control on what loops should be vectorize. Unlike the parallel
      strategies, only innermost loops are considered, but including reductions,
      with the control of vectorizing dense loops only or dense and sparse loops.
      
      The vectorized loops are always controlled by a vector mask to avoid
      overrunning the iterations, but subsequent vector operation folding removes
      redundant masks and replaces the operations with more efficient counterparts.
      Similarly, we will rely on subsequent loop optimizations to further optimize
      masking, e.g. using an unconditional full vector loop and scalar cleanup loop.
      
      The current strategy already demonstrates a nice interaction between the
      sparse compiler and all prior optimizations that went into the vector dialect.
      
      Ongoing discussion at:
      https://llvm.discourse.group/t/mlir-support-for-sparse-tensors/2020/10
      
      Reviewed By: penpornk
      
      Differential Revision: https://reviews.llvm.org/D94551
      f4f158b2
    • David Blaikie's avatar
  7. Jan 12, 2021
  8. Jan 11, 2021
  9. Jan 08, 2021
  10. Jan 07, 2021
  11. Jan 06, 2021
  12. Dec 29, 2020
  13. Dec 21, 2020
  14. Dec 18, 2020
    • Aart Bik's avatar
      [mlir][sparse] scalarize reductions in for-loops during sparse codegen · 14da25b4
      Aart Bik authored
      Reductions in innermost loops become harder for the backend to disambiguate
      after bufferization into memrefs, resulting in less efficient load-update-store
      cycles. By scalarizing innermost reductions, the backend is more likely to assign
      a register to perform the reduction (also prepares vectorization). Even though
      we could scalarize reductions for more outer loops and while-loops as well,
      currently scalarization is only done for chains of innermost for-loops, where
      it matters most, to avoid complicating codegen unnecessary (viz. adding lots
      of yield instructions).
      
      This CL also refactors condition simplification into the merger class,
      where it belongs, so that conditions are simplified only once per loop
      nest and not repeatedly as was currently done. This CL also fixes a few
      minor bugs, some layout issues, and comments.
      
      Reviewed By: penpornk
      
      Differential Revision: https://reviews.llvm.org/D93143
      14da25b4
    • Sean Silva's avatar
      [mlir] Move `std.tensor_cast` -> `tensor.cast`. · 129d6e55
      Sean Silva authored
      This is almost entirely mechanical.
      
      Differential Revision: https://reviews.llvm.org/D93357
      129d6e55
  15. Dec 17, 2020
  16. Dec 15, 2020
  17. Dec 14, 2020
  18. Dec 13, 2020
  19. Dec 09, 2020
  20. Dec 07, 2020
    • Aart Bik's avatar
      [mlir][sparse] hoist loop invariant tensor loads in sparse compiler · 74cd9e58
      Aart Bik authored
      After bufferization, the backend has much more trouble hoisting loop invariant
      loads from the loops generated by the sparse compiler. Therefore, this is done
      during sparse code generation. Note that we don't bother hoisting derived
      invariant expressions on SSA values, since the backend does that very well.
      
      Still TBD: scalarize reductions to avoid load-add-store cycles
      
      Reviewed By: penpornk
      
      Differential Revision: https://reviews.llvm.org/D92534
      74cd9e58
  21. Dec 04, 2020
  22. Dec 02, 2020
  23. Nov 26, 2020
Loading