MLIR  15.0.0git
Public Member Functions | Public Attributes | List of all members
mlir::linalg::LinalgTilingOptions Struct Reference

#include "mlir/Dialect/Linalg/Transforms/Transforms.h"

+ Collaboration diagram for mlir::linalg::LinalgTilingOptions:

Public Member Functions

LinalgTilingOptionssetTileSizeComputationFunction (TileSizeComputationFunction fun)
 
LinalgTilingOptionssetTileSizes (const SmallVector< Value, 4 > &ts)
 Set the tileSizeComputationFunction to return the values ts. More...
 
LinalgTilingOptionssetTileSizes (ArrayRef< int64_t > ts)
 Convenience function to set the tileSizeComputationFunction to a function that computes tile sizes at the point they are needed. More...
 
LinalgTilingOptionsscalarizeDynamicDims ()
 Tile all dynamic dimensions by 1. More...
 
LinalgTilingOptionssetInterchange (ArrayRef< unsigned > interchange)
 
LinalgTilingOptionssetLoopType (LinalgTilingLoopType lt)
 
LinalgTilingOptionssetDistributionOptions (LinalgLoopDistributionOptions distributionOptions)
 
LinalgTilingOptionssetDistributionTypes (ArrayRef< StringRef > types)
 
LinalgTilingOptionssetPeeledLoops (ArrayRef< int64_t > loops)
 

Public Attributes

TileSizeComputationFunction tileSizeComputationFunction = nullptr
 Computation function that returns the tile sizes for each operation. More...
 
SmallVector< unsigned, 4 > interchangeVector = {}
 The interchange vector to reorder the tiled loops. More...
 
LinalgTilingLoopType loopType = LinalgTilingLoopType::Loops
 The type of tile loops to generate. More...
 
Optional< LinalgLoopDistributionOptionsdistribution = None
 When specified, specifies distribution of generated tile loops to processors. More...
 
SmallVector< StringRef, 2 > distributionTypes = {}
 Specification markers of how to distribute the linalg.tiled_loop. More...
 
SmallVector< int64_t > peeledLoops
 Peel the specified loops. More...
 

Detailed Description

Definition at line 559 of file Transforms.h.

Member Function Documentation

◆ scalarizeDynamicDims()

LinalgTilingOptions & mlir::linalg::LinalgTilingOptions::scalarizeDynamicDims ( )

Tile all dynamic dimensions by 1.

I.e., scalarize those dimensions. Note: scalarizeDynamicDims and setTileSizes cannot be used together.

Definition at line 138 of file Transforms.cpp.

References mlir::applyMapToValues(), mlir::OpBuilder::create(), and mlir::getConstantIntValue().

◆ setDistributionOptions()

LinalgTilingOptions& mlir::linalg::LinalgTilingOptions::setDistributionOptions ( LinalgLoopDistributionOptions  distributionOptions)
inline

Definition at line 607 of file Transforms.h.

Referenced by mlir::linalg::TileLoopNest::tileRootOp().

◆ setDistributionTypes()

LinalgTilingOptions& mlir::linalg::LinalgTilingOptions::setDistributionTypes ( ArrayRef< StringRef >  types)
inline

Definition at line 615 of file Transforms.h.

◆ setInterchange()

LinalgTilingOptions& mlir::linalg::LinalgTilingOptions::setInterchange ( ArrayRef< unsigned interchange)
inline

Definition at line 589 of file Transforms.h.

Referenced by applyTilingToAll(), and mlir::linalg::TileLoopNest::tileRootOp().

◆ setLoopType()

LinalgTilingOptions& mlir::linalg::LinalgTilingOptions::setLoopType ( LinalgTilingLoopType  lt)
inline

◆ setPeeledLoops()

LinalgTilingOptions& mlir::linalg::LinalgTilingOptions::setPeeledLoops ( ArrayRef< int64_t >  loops)
inline

◆ setTileSizeComputationFunction()

LinalgTilingOptions& mlir::linalg::LinalgTilingOptions::setTileSizeComputationFunction ( TileSizeComputationFunction  fun)
inline

Definition at line 566 of file Transforms.h.

◆ setTileSizes() [1/2]

LinalgTilingOptions& mlir::linalg::LinalgTilingOptions::setTileSizes ( const SmallVector< Value, 4 > &  ts)
inline

Set the tileSizeComputationFunction to return the values ts.

The values must not fold away when tiling. Otherwise, use a more robust tileSizeComputationFunction.

Definition at line 573 of file Transforms.h.

Referenced by applyExtractSliceOfPadTensorSwapPattern(), applyTilingToAll(), mlir::linalg::LinalgBaseTileAndFusePattern::matchAndRewrite(), mlir::linalg::TileLoopNest::tileRootOp(), and tileRootOperation().

◆ setTileSizes() [2/2]

LinalgTilingOptions & mlir::linalg::LinalgTilingOptions::setTileSizes ( ArrayRef< int64_t >  ts)

Convenience function to set the tileSizeComputationFunction to a function that computes tile sizes at the point they are needed.

Allows proper interaction with folding.

Definition at line 123 of file Transforms.cpp.

References mlir::OpBuilder::create(), and mlir::OpBuilder::setInsertionPointToStart().

Member Data Documentation

◆ distribution

Optional<LinalgLoopDistributionOptions> mlir::linalg::LinalgTilingOptions::distribution = None

When specified, specifies distribution of generated tile loops to processors.

Definition at line 604 of file Transforms.h.

◆ distributionTypes

SmallVector<StringRef, 2> mlir::linalg::LinalgTilingOptions::distributionTypes = {}

Specification markers of how to distribute the linalg.tiled_loop.

Definition at line 613 of file Transforms.h.

◆ interchangeVector

SmallVector<unsigned, 4> mlir::linalg::LinalgTilingOptions::interchangeVector = {}

The interchange vector to reorder the tiled loops.

Definition at line 587 of file Transforms.h.

Referenced by tileAndFuseLinalgOpsImpl(), and tileLinalgOpImpl().

◆ loopType

LinalgTilingLoopType mlir::linalg::LinalgTilingOptions::loopType = LinalgTilingLoopType::Loops

The type of tile loops to generate.

Definition at line 595 of file Transforms.h.

Referenced by mlir::linalg::tileAndFuseLinalgOps(), and mlir::linalg::tileLinalgOp().

◆ peeledLoops

SmallVector<int64_t> mlir::linalg::LinalgTilingOptions::peeledLoops

Peel the specified loops.

Definition at line 621 of file Transforms.h.

◆ tileSizeComputationFunction

TileSizeComputationFunction mlir::linalg::LinalgTilingOptions::tileSizeComputationFunction = nullptr

Computation function that returns the tile sizes for each operation.

Delayed construction of constant tile sizes should occur to interoperate with folding.

Definition at line 563 of file Transforms.h.

Referenced by mlir::linalg::LinalgBaseTileAndFusePattern::matchAndRewrite(), tileAndFuseLinalgOpsImpl(), tileLinalgOpImpl(), and tilePadOp().


The documentation for this struct was generated from the following files: