llvm/llvm-project

Implement non-unit stride dense vectorization (difficult starter)

Open

#51 660 ouverte le 26 oct. 2021

Voir sur GitHub
 (4 commentaires) (0 réactions) (1 assigné)C++ (10 782 forks)batch import
bugzillagood first issuemlir:llvmmlir:sparsetensor

Métriques du dépôt

Stars
 (26 378 stars)
Métriques de merge PR
 (Merge moyen 1j 2h) (1 000 PRs mergées en 30 j)

Description

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).

Guide contributeur