llvm/llvm-project

Implement non-unit stride dense vectorization (difficult starter)

Open

#51,660 建立於 2021年10月26日

在 GitHub 查看
 (4 留言) (0 反應) (1 負責人)C++ (10,782 fork)batch import
bugzillagood first issuemlir:llvmmlir:sparsetensor

倉庫指標

Star
 (26,378 star)
PR 合併指標
 (平均合併 1天 2小時) (30 天內合併 1,000 個 PR)

描述

Bugzilla Link 52318
Version unspecified
OS Linux
CC @joker-eph

Extended Description

Implement strided load/stores on dense arrays, so that vectorization does not need to be disabled when the access pattern is non-contiguous for the dense data structures.

Start by looking at denseUnitStrides() in https://github.com/llvm/llvm-project/blob/main/mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp

This will require tensor loads and stores that have become non-unit stride to compute the proper strides and use this during vectorization.

This is a non-trivial starter, and requires adding vector dialect support first (for the non-unit stride load and stores) and then very careful engineering within the sparse compiler codegen).

貢獻者指南