MLIR 22.0.0git
mlir::sparse_tensor::SparsificationAndBufferizationPass Class Reference

A pass that lowers tensor ops to memref ops, regardless of whether they are dense or sparse. More...

Inheritance diagram for mlir::sparse_tensor::SparsificationAndBufferizationPass:

Public Member Functions

 SparsificationAndBufferizationPass (const bufferization::OneShotBufferizationOptions &bufferizationOptions, const SparsificationOptions &sparsificationOptions, bool createSparseDeallocs, bool enableRuntimeLibrary, bool enableBufferInitialization)
 SparsificationAndBufferizationPass (const bufferization::OneShotBufferizationOptions &bufferizationOptions, const SparsificationOptions &sparsificationOptions, bool createSparseDeallocs, bool enableRuntimeLibrary, bool enableBufferInitialization, unsigned vl, bool vla, bool index32, bool gpu, SparseEmitStrategy emitStrategy, SparseParallelizationStrategy parallelizationStrategy)
LogicalResult runDenseBufferization ()
 Bufferize all dense ops.
void runOnOperation () override

Detailed Description

A pass that lowers tensor ops to memref ops, regardless of whether they are dense or sparse.

One-Shot Analysis is used to detect RaW conflicts and to insert buffer copies of the tensor level (insertTensorCopies). Afterwards, the lowering of tensor ops to memref ops follows a different code path depending on whether the op is sparse or dense:

  • Sparse tensor ops are lowered through Sparsification and follow-up pass that lowers sparse_tensor dialect ops.
  • Dense tensor ops are lowered through BufferizableOpInterface implementations.

Definition at line 58 of file SparsificationAndBufferizationPass.cpp.

Constructor & Destructor Documentation

◆ SparsificationAndBufferizationPass() [1/2]

mlir::sparse_tensor::SparsificationAndBufferizationPass::SparsificationAndBufferizationPass ( const bufferization::OneShotBufferizationOptions & bufferizationOptions,
const SparsificationOptions & sparsificationOptions,
bool createSparseDeallocs,
bool enableRuntimeLibrary,
bool enableBufferInitialization )
inline

Definition at line 63 of file SparsificationAndBufferizationPass.cpp.

◆ SparsificationAndBufferizationPass() [2/2]

mlir::sparse_tensor::SparsificationAndBufferizationPass::SparsificationAndBufferizationPass ( const bufferization::OneShotBufferizationOptions & bufferizationOptions,
const SparsificationOptions & sparsificationOptions,
bool createSparseDeallocs,
bool enableRuntimeLibrary,
bool enableBufferInitialization,
unsigned vl,
bool vla,
bool index32,
bool gpu,
SparseEmitStrategy emitStrategy,
SparseParallelizationStrategy parallelizationStrategy )
inline

Definition at line 74 of file SparsificationAndBufferizationPass.cpp.

Member Function Documentation

◆ runDenseBufferization()

LogicalResult mlir::sparse_tensor::SparsificationAndBufferizationPass::runDenseBufferization ( )
inline

Bufferize all dense ops.

This assumes that no further analysis is needed and that all required buffer copies were already inserted by insertTensorCopies in the form of bufferization.alloc_tensor ops.

Definition at line 98 of file SparsificationAndBufferizationPass.cpp.

References mlir::bufferization::bufferizeModuleOp(), mlir::sparse_tensor::containsSparseTensor(), mlir::Operation::getOperands(), mlir::Operation::getResults(), mlir::bufferization::removeBufferizationAttributesInModule(), success(), and TypeRange.

Referenced by runOnOperation().

◆ runOnOperation()


The documentation for this class was generated from the following file: