MLIR  20.0.0git
Public Types | Public Member Functions | Public Attributes | List of all members
mlir::scf::SCFTilingOptions Struct Reference

Options to use to control tiling. More...

#include "mlir/Dialect/SCF/Transforms/TileUsingInterface.h"

Public Types

enum class  LoopType { ForOp , ForallOp }
 Specify which loop construct to use for tile and fuse. More...
 
enum class  ReductionTilingStrategy { FullReduction , PartialReductionOuterReduction , PartialReductionOuterParallel }
 Specify how reduction dimensions should be tiled. More...
 

Public Member Functions

SCFTilingOptionssetTileSizeComputationFunction (SCFTileSizeComputationFunction fun)
 
SCFTilingOptionssetTileSizes (ArrayRef< OpFoldResult > tileSizes)
 Convenience function to set the tileSizeComputationFunction to a function that computes tile sizes at the point they are needed. More...
 
SCFTilingOptionssetNumThreadsComputationFunction (SCFTileSizeComputationFunction fun)
 
SCFTilingOptionssetNumThreads (ArrayRef< OpFoldResult > numThreads)
 Convenience function to set the numThreadsComputationFunction to a function that computes num threads at the point they are needed. More...
 
SCFTilingOptionssetInterchange (ArrayRef< int64_t > interchange)
 
SCFTilingOptionssetLoopType (LoopType type)
 
SCFTilingOptionssetReductionTilingStrategy (ReductionTilingStrategy strategy)
 
SCFTilingOptionssetMapping (ArrayRef< Attribute > mapping)
 

Public Attributes

SCFTileSizeComputationFunction tileSizeComputationFunction = nullptr
 Computation function that returns the tile sizes to use for each loop. More...
 
SCFTileSizeComputationFunction numThreadsComputationFunction = nullptr
 Computation function that returns the number of threads to use for each loop. More...
 
SmallVector< int64_t > interchangeVector = {}
 The interchange vector to reorder the tiled loops. More...
 
LoopType loopType = LoopType::ForOp
 
ReductionTilingStrategy reductionStrategy
 
SmallVector< AttributemappingVector = {}
 Specify mapping of loops to devices. More...
 

Detailed Description

Options to use to control tiling.

Definition at line 35 of file TileUsingInterface.h.

Member Enumeration Documentation

◆ LoopType

Specify which loop construct to use for tile and fuse.

Enumerator
ForOp 
ForallOp 

Definition at line 81 of file TileUsingInterface.h.

◆ ReductionTilingStrategy

Specify how reduction dimensions should be tiled.

Tiling can be thought of as splitting a dimension into 2 and materializing the outer dimension as a loop:

op[original] -> op[original / x, x] -> loop[original] { op[x] }

For parallel dimensions, the split can only happen in one way, with both dimensions being parallel. For reduction dimensions however, there is a choice in how we split the reduction dimension. This enum exposes this choice.

Enumerator
FullReduction 
PartialReductionOuterReduction 
PartialReductionOuterParallel 

Definition at line 99 of file TileUsingInterface.h.

Member Function Documentation

◆ setInterchange()

SCFTilingOptions& mlir::scf::SCFTilingOptions::setInterchange ( ArrayRef< int64_t >  interchange)
inline

Definition at line 75 of file TileUsingInterface.h.

References interchangeVector.

◆ setLoopType()

SCFTilingOptions& mlir::scf::SCFTilingOptions::setLoopType ( LoopType  type)
inline

Definition at line 83 of file TileUsingInterface.h.

References loopType.

◆ setMapping()

SCFTilingOptions& mlir::scf::SCFTilingOptions::setMapping ( ArrayRef< Attribute mapping)
inline

Definition at line 123 of file TileUsingInterface.h.

References mappingVector.

◆ setNumThreads()

scf::SCFTilingOptions & scf::SCFTilingOptions::setNumThreads ( ArrayRef< OpFoldResult numThreads)

Convenience function to set the numThreadsComputationFunction to a function that computes num threads at the point they are needed.

Definition at line 50 of file TileUsingInterface.cpp.

◆ setNumThreadsComputationFunction()

SCFTilingOptions& mlir::scf::SCFTilingOptions::setNumThreadsComputationFunction ( SCFTileSizeComputationFunction  fun)
inline

Definition at line 65 of file TileUsingInterface.h.

References numThreadsComputationFunction.

◆ setReductionTilingStrategy()

SCFTilingOptions& mlir::scf::SCFTilingOptions::setReductionTilingStrategy ( ReductionTilingStrategy  strategy)
inline

Definition at line 113 of file TileUsingInterface.h.

References reductionStrategy.

◆ setTileSizeComputationFunction()

SCFTilingOptions& mlir::scf::SCFTilingOptions::setTileSizeComputationFunction ( SCFTileSizeComputationFunction  fun)
inline

Definition at line 44 of file TileUsingInterface.h.

References tileSizeComputationFunction.

◆ setTileSizes()

scf::SCFTilingOptions & scf::SCFTilingOptions::setTileSizes ( ArrayRef< OpFoldResult tileSizes)

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 40 of file TileUsingInterface.cpp.

References tileSizeComputationFunction.

Member Data Documentation

◆ interchangeVector

SmallVector<int64_t> mlir::scf::SCFTilingOptions::interchangeVector = {}

The interchange vector to reorder the tiled loops.

Definition at line 74 of file TileUsingInterface.h.

Referenced by setInterchange().

◆ loopType

LoopType mlir::scf::SCFTilingOptions::loopType = LoopType::ForOp

Definition at line 82 of file TileUsingInterface.h.

Referenced by setLoopType().

◆ mappingVector

SmallVector<Attribute> mlir::scf::SCFTilingOptions::mappingVector = {}

Specify mapping of loops to devices.

This is only respected when the loop constructs support such a mapping (like scf.forall). Will be ignored when using loop constructs that dont support such a mapping (like scf.for)

Definition at line 122 of file TileUsingInterface.h.

Referenced by setMapping().

◆ numThreadsComputationFunction

SCFTileSizeComputationFunction mlir::scf::SCFTilingOptions::numThreadsComputationFunction = nullptr

Computation function that returns the number of threads to use for each loop.

Returning a num threads of zero implies no tiling for that loop. If the size of the returned vector is smaller than the number of loops, the inner loops are not tiled. If the size of the returned vector is larger, then the vector is truncated to number of loops. Note: This option is only supported with loopType set to LoopType::ForallOp. If the tile size function is not specified while the num threads computation is, then the tile size is determined automatically to map at most one tile per thread.

Definition at line 62 of file TileUsingInterface.h.

Referenced by setNumThreadsComputationFunction().

◆ reductionStrategy

ReductionTilingStrategy mlir::scf::SCFTilingOptions::reductionStrategy

◆ tileSizeComputationFunction

SCFTileSizeComputationFunction mlir::scf::SCFTilingOptions::tileSizeComputationFunction = nullptr

Computation function that returns the tile sizes to use for each loop.

Returning a tile size of zero implies no tiling for that loop. If the size of the returned vector is smaller than the number of loops, the inner loops are not tiled. If the size of the returned vector is larger, then the vector is truncated to number of loops.

Definition at line 41 of file TileUsingInterface.h.

Referenced by setTileSizeComputationFunction(), and setTileSizes().


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