|
Enzyme main
|
Namespaces | |
| namespace | batchutils |
| namespace | detail |
| namespace | oputils |
| namespace | transforms |
Typedefs | |
| using | ValueOriginSet = SetLattice<OriginAttr> |
| using | AliasClassSet = SetLattice<DistinctAttr> |
| A set of alias class identifiers to be treated as a single union. | |
| typedef void | buildReturnFunction(OpBuilder &, mlir::Block *) |
Enumerations | |
| enum class | LoopCacheType { TENSOR , MEMREF } |
Functions | |
| void | runActivityAnnotations (FunctionOpInterface callee, ArrayRef< enzyme::Activity > argActivities={}, const ActivityPrinterConfig &config=ActivityPrinterConfig()) |
| void | runDataFlowActivityAnalysis (FunctionOpInterface callee, ArrayRef< enzyme::Activity > argumentActivity, bool print=false, bool verbose=false, bool annotate=false) |
| bool | sortAttributes (Attribute a, Attribute b) |
| Used when serializing to ensure a consistent order. | |
| bool | sortArraysLexicographic (ArrayAttr a, ArrayAttr b) |
| template<typename OpTy > | |
| void | registerAutoDiffUsingControlFlowInterface (MLIRContext &context) |
| template<typename OpTy > | |
| void | registerAutoDiffUsingBranchInterface (MLIRContext &context) |
| template<typename OpTy > | |
| void | registerAutoDiffUsingRegionTerminatorInterface (MLIRContext &context) |
| template<typename OpTy > | |
| void | registerAutoDiffUsingReturnInterface (MLIRContext &context) |
| template<typename OpTy , int... storedvals> | |
| void | registerAutoDiffUsingMemoryIdentityInterface (MLIRContext &context) |
| template<typename OpTy > | |
| void | registerAutoDiffUsingAllocationInterface (MLIRContext &context) |
| void | registerAffineDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerArithDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerBuiltinDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerLLVMDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerLLVMExtDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerNVVMDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerMemRefDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerComplexDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerSCFDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerCFDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerLinalgDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerMathDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerFuncDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerTensorDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerEnzymeDialectAutoDiffInterface (DialectRegistry ®istry) |
| void | registerCoreDialectAutodiffInterfaces (DialectRegistry ®istry) |
| mlir::TypedAttr | getConstantAttr (mlir::Type type, llvm::StringRef value) |
| bool | inlineAutodiffOp (enzyme::AutoDiffOp &op, RewriterBase &rewriter, SymbolTableCollection &symbolTable) |
| void | minCutCache (Block *forward, Block *reverse, SmallVector< CacheInfo > &caches, PatternRewriter &rewriter, const IRMapping &fwdrevmap, Operation *lastFwd=nullptr) |
| static LoopCacheType | getCacheType (Operation *op) |
| static bool | hasMinCut (Operation *op) |
| static bool | hasLICM (Operation *op) |
| void | localizeGradients (OpBuilder &builder, MGradientUtilsReverse *gutils, Block *fwd) |
| void | removalBlockExplore (Block *block, IRMapping &mapping, PatternRewriter &rewriter, llvm::SetVector< Value > &gradients, llvm::MapVector< Value, CacheInfo > &caches) |
| bool | blockCmp (mlir::Block *a, mlir::Block *b) |
| bool | opCmp (mlir::Operation *a, mlir::Operation *b) |
| bool | regionCmp (mlir::Region *a, mlir::Region *b) |
| bool | valueCmp (mlir::Value a, mlir::Value b) |
| Type | getConcatType (Value val, int64_t width) |
| Value | getConcatValue (OpBuilder &builder, Location loc, ArrayRef< Value > argList) |
| Value | getExtractValue (OpBuilder &builder, Location loc, Type argTy, Value val, int64_t index) |
| void | computeAffineIndices (OpBuilder &builder, Location loc, AffineMap map, ValueRange operands, SmallVectorImpl< Value > &indices) |
Variables | |
| constexpr llvm::StringLiteral | undefinedSetString = "<undefined>" |
| constexpr llvm::StringLiteral | unknownSetString = "<unknown>" |
| static constexpr llvm::StringLiteral | kPreserveCacheAttrName = "preserve_cache" |
| using mlir::enzyme::AliasClassSet = SetLattice<DistinctAttr> |
A set of alias class identifiers to be treated as a single union.
May be marked as "unknown", which is a conservative pessimistic state, or as "undefined", which is a "not-yet-analyzed" initial state. Undefined state is different from an empty alias set.
Definition at line 47 of file DataFlowAliasAnalysis.h.
| typedef void mlir::enzyme::buildReturnFunction(OpBuilder &, mlir::Block *) |
Definition at line 13 of file EnzymeLogic.h.
| using mlir::enzyme::ValueOriginSet = SetLattice<OriginAttr> |
Definition at line 17 of file ActivityAnnotations.h.
|
strong |
| Enumerator | |
|---|---|
| TENSOR | |
| MEMREF | |
Definition at line 72 of file RemovalUtils.h.
| bool mlir::enzyme::blockCmp | ( | mlir::Block * | a, |
| mlir::Block * | b ) |
Referenced by valueCmp().
| void mlir::enzyme::computeAffineIndices | ( | OpBuilder & | builder, |
| Location | loc, | ||
| AffineMap | map, | ||
| ValueRange | operands, | ||
| SmallVectorImpl< Value > & | indices ) |
|
static |
Definition at line 74 of file RemovalUtils.h.
References MEMREF, and TENSOR.
Referenced by mlir::enzyme::MGradientUtilsReverse::getIndexCacheType(), and mlir::enzyme::ForLikeEnzymeOpsRemover< FinalClass, OpName >::removeEnzymeOps().
| Type mlir::enzyme::getConcatType | ( | Value | val, |
| int64_t | width ) |
Definition at line 133 of file Utils.cpp.
Referenced by getConcatValue().
| Value mlir::enzyme::getConcatValue | ( | OpBuilder & | builder, |
| Location | loc, | ||
| ArrayRef< Value > | argList ) |
Definition at line 155 of file Utils.cpp.
References getConcatType().
Referenced by mlir::enzyme::detail::memoryIdentityForwardHandler().
| mlir::TypedAttr mlir::enzyme::getConstantAttr | ( | mlir::Type | type, |
| llvm::StringRef | value ) |
Definition at line 26 of file CoreDialectsAutoDiffImplementations.cpp.
| Value mlir::enzyme::getExtractValue | ( | OpBuilder & | builder, |
| Location | loc, | ||
| Type | argTy, | ||
| Value | val, | ||
| int64_t | index ) |
Definition at line 163 of file Utils.cpp.
Referenced by mlir::enzyme::detail::memoryIdentityForwardHandler().
|
static |
Definition at line 86 of file RemovalUtils.h.
Referenced by mlir::enzyme::ForLikeEnzymeOpsRemover< FinalClass, OpName >::removeEnzymeOps().
|
static |
Definition at line 82 of file RemovalUtils.h.
Referenced by mlir::enzyme::ForLikeEnzymeOpsRemover< FinalClass, OpName >::removeEnzymeOps().
| bool mlir::enzyme::inlineAutodiffOp | ( | enzyme::AutoDiffOp & | op, |
| RewriterBase & | rewriter, | ||
| SymbolTableCollection & | symbolTable ) |
Definition at line 380 of file InlineEnzymeRegions.cpp.
| void mlir::enzyme::localizeGradients | ( | OpBuilder & | builder, |
| MGradientUtilsReverse * | gutils, | ||
| Block * | fwd ) |
Definition at line 32 of file RemovalUtils.cpp.
References mlir::enzyme::MDiffeGradientUtils::getDifferential(), and mlir::enzyme::MGradientUtils::isConstantValue().
| void mlir::enzyme::minCutCache | ( | Block * | forward, |
| Block * | reverse, | ||
| SmallVector< CacheInfo > & | caches, | ||
| PatternRewriter & | rewriter, | ||
| const IRMapping & | fwdrevmap, | ||
| Operation * | lastFwd = nullptr ) |
Definition at line 427 of file RemovalUtils.cpp.
References annotate_ops(), bfs(), computeRankOfType(), computeSizeOfType(), DebugGraphviz(), dump(), filterGraph(), findCommonAncestor(), mlir::enzyme::CacheInfo::initOp, isMovable(), mlir::enzyme::CacheInfo::popOp, and mlir::enzyme::CacheInfo::pushOp.
Referenced by mlir::enzyme::ForLikeEnzymeOpsRemover< FinalClass, OpName >::removeEnzymeOps().
| bool mlir::enzyme::opCmp | ( | mlir::Operation * | a, |
| mlir::Operation * | b ) |
Referenced by valueCmp().
| bool mlir::enzyme::regionCmp | ( | mlir::Region * | a, |
| mlir::Region * | b ) |
| void mlir::enzyme::registerAffineDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 777 of file AffineAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerArithDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 108 of file ArithAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerAutoDiffUsingAllocationInterface | ( | MLIRContext & | context | ) |
Definition at line 243 of file CoreDialectsAutoDiffImplementations.h.
| void mlir::enzyme::registerAutoDiffUsingBranchInterface | ( | MLIRContext & | context | ) |
Definition at line 214 of file CoreDialectsAutoDiffImplementations.h.
| void mlir::enzyme::registerAutoDiffUsingControlFlowInterface | ( | MLIRContext & | context | ) |
Definition at line 208 of file CoreDialectsAutoDiffImplementations.h.
| void mlir::enzyme::registerAutoDiffUsingMemoryIdentityInterface | ( | MLIRContext & | context | ) |
Definition at line 237 of file CoreDialectsAutoDiffImplementations.h.
| void mlir::enzyme::registerAutoDiffUsingRegionTerminatorInterface | ( | MLIRContext & | context | ) |
Definition at line 221 of file CoreDialectsAutoDiffImplementations.h.
| void mlir::enzyme::registerAutoDiffUsingReturnInterface | ( | MLIRContext & | context | ) |
Definition at line 229 of file CoreDialectsAutoDiffImplementations.h.
| void mlir::enzyme::registerBuiltinDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 336 of file BuiltinAutoDiffTypeInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerCFDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 36 of file CFAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerComplexDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 78 of file ComplexAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerCoreDialectAutodiffInterfaces | ( | DialectRegistry & | registry | ) |
Definition at line 466 of file CoreDialectsAutoDiffImplementations.cpp.
References registerAffineDialectAutoDiffInterface(), registerArithDialectAutoDiffInterface(), registerBuiltinDialectAutoDiffInterface(), registerCFDialectAutoDiffInterface(), registerComplexDialectAutoDiffInterface(), registerEnzymeDialectAutoDiffInterface(), registerFuncDialectAutoDiffInterface(), registerLinalgDialectAutoDiffInterface(), registerLLVMDialectAutoDiffInterface(), registerLLVMExtDialectAutoDiffInterface(), registerMathDialectAutoDiffInterface(), registerMemRefDialectAutoDiffInterface(), registerNVVMDialectAutoDiffInterface(), registerSCFDialectAutoDiffInterface(), and registerTensorDialectAutoDiffInterface().
Referenced by main().
| void mlir::enzyme::registerEnzymeDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 32 of file EnzymeAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerFuncDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 257 of file FuncAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerLinalgDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 412 of file LinalgAutoDiffOpInterfaceImpl.cpp.
References attachAllInterfaces().
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerLLVMDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 365 of file LLVMAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerLLVMExtDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 31 of file LLVMExtAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerMathDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 34 of file MathAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerMemRefDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 292 of file MemRefAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerNVVMDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 29 of file NVVMAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerSCFDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 1264 of file SCFAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::registerTensorDialectAutoDiffInterface | ( | DialectRegistry & | registry | ) |
Definition at line 118 of file ArithAutoDiffOpInterfaceImpl.cpp.
Referenced by registerCoreDialectAutodiffInterfaces().
| void mlir::enzyme::removalBlockExplore | ( | Block * | block, |
| IRMapping & | mapping, | ||
| PatternRewriter & | rewriter, | ||
| llvm::SetVector< Value > & | gradients, | ||
| llvm::MapVector< Value, CacheInfo > & | caches ) |
Definition at line 81 of file RemovalUtils.cpp.
References getOp, mlir::enzyme::CacheInfo::merge(), mlir::enzyme::CacheInfo::popOp, and mlir::enzyme::CacheInfo::pushedValue().
Referenced by mlir::enzyme::IfLikeEnzymeOpsRemover< FinalClass, OpName >::removeEnzymeOps().
| void mlir::enzyme::runActivityAnnotations | ( | FunctionOpInterface | callee, |
| ArrayRef< enzyme::Activity > | argActivities = {}, | ||
| const ActivityPrinterConfig & | config = ActivityPrinterConfig() ) |
Definition at line 991 of file ActivityAnnotations.cpp.
References mlir::enzyme::ActivityPrinterConfig::annotate, mlir::enzyme::ForwardOriginsMap::getOrigins(), mlir::enzyme::MapOfSetsLattice< KeyT, ElementT >::join(), mlir::enzyme::BackwardOriginsLattice::meet(), mlir::enzyme::MapOfSetsLattice< KeyT, ElementT >::serialize(), traversePointsToSets(), and mlir::enzyme::ActivityPrinterConfig::verbose.
| void mlir::enzyme::runDataFlowActivityAnalysis | ( | FunctionOpInterface | callee, |
| ArrayRef< enzyme::Activity > | argumentActivity, | ||
| bool | print = false, | ||
| bool | verbose = false, | ||
| bool | annotate = false ) |
Definition at line 1071 of file DataFlowActivityAnalysis.cpp.
References ValueActivity::getActiveVal(), and printActivityAnalysisResults().
| bool mlir::enzyme::sortArraysLexicographic | ( | ArrayAttr | a, |
| ArrayAttr | b ) |
Definition at line 43 of file DataFlowLattice.cpp.
References sortAttributes().
| bool mlir::enzyme::sortAttributes | ( | Attribute | a, |
| Attribute | b ) |
Used when serializing to ensure a consistent order.
Definition at line 35 of file DataFlowLattice.cpp.
Referenced by sortArraysLexicographic().
| bool mlir::enzyme::valueCmp | ( | mlir::Value | a, |
| mlir::Value | b ) |
Definition at line 104 of file Utils.cpp.
References blockCmp(), and opCmp().
|
staticconstexpr |
Definition at line 28 of file RemovalUtils.h.
Referenced by mlir::enzyme::IfLikeEnzymeOpsRemover< FinalClass, OpName >::removeEnzymeOps().
|
constexpr |
Definition at line 38 of file DataFlowLattice.h.
Referenced by deserializeAliasSummary(), deserializePointsTo(), mlir::enzyme::PointsToSets::print(), and mlir::enzyme::SetLattice< ValueT >::print().
|
constexpr |
Definition at line 39 of file DataFlowLattice.h.
Referenced by deserializeAliasSummary(), deserializePointsTo(), mlir::enzyme::PointsToSets::print(), and mlir::enzyme::SetLattice< ValueT >::print().