|
Enzyme main
|
#include "MLIR/Interfaces/EnzymeLogic.h"

Classes | |
| struct | MForwardCacheKey |
| struct | MReverseCacheKey |
Public Member Functions | |
| FunctionOpInterface | CreateForwardDiff (FunctionOpInterface fn, std::vector< DIFFE_TYPE > retType, std::vector< DIFFE_TYPE > constants, MTypeAnalysis &TA, std::vector< bool > returnPrimals, DerivativeMode mode, bool freeMemory, size_t width, mlir::Type addedType, MFnTypeInfo type_args, std::vector< bool > volatile_args, void *augmented, bool omp, llvm::StringRef postpasses, bool verifyPostPasses, bool strongZero) |
| FunctionOpInterface | CreateReverseDiff (FunctionOpInterface fn, std::vector< DIFFE_TYPE > retType, std::vector< DIFFE_TYPE > constants, MTypeAnalysis &TA, std::vector< bool > returnPrimals, std::vector< bool > returnShadows, DerivativeMode mode, bool freeMemory, size_t width, mlir::Type addedType, MFnTypeInfo type_args, std::vector< bool > volatile_args, void *augmented, bool omp, llvm::StringRef postpasses, bool verifyPostPasses, bool strongZero) |
| void | initializeShadowValues (SmallVector< mlir::Block * > &dominatorToposortBlocks, MGradientUtilsReverse *gutils) |
| void | handlePredecessors (Block *oBB, Block *newBB, Block *reverseBB, MGradientUtilsReverse *gutils, llvm::function_ref< buildReturnFunction > buildReturnOp) |
| LogicalResult | visitChildren (Block *oBB, Block *reverseBB, MGradientUtilsReverse *gutils) |
| LogicalResult | visitChild (Operation *op, OpBuilder &builder, MGradientUtilsReverse *gutils) |
| void | mapInvertArguments (Block *oBB, Block *reverseBB, MGradientUtilsReverse *gutils) |
| LogicalResult | differentiate (MGradientUtilsReverse *gutils, Region &oldRegion, Region &newRegion, llvm::function_ref< buildReturnFunction > buildFuncRetrunOp, std::function< std::pair< Value, Value >(Type)> cacheCreator) |
Public Attributes | |
| std::map< MForwardCacheKey, FunctionOpInterface > | ForwardCachedFunctions |
| std::map< MReverseCacheKey, FunctionOpInterface > | ReverseCachedFunctions |
Definition at line 46 of file EnzymeLogic.h.
| FunctionOpInterface mlir::enzyme::MEnzymeLogic::CreateForwardDiff | ( | FunctionOpInterface | fn, |
| std::vector< DIFFE_TYPE > | retType, | ||
| std::vector< DIFFE_TYPE > | constants, | ||
| MTypeAnalysis & | TA, | ||
| std::vector< bool > | returnPrimals, | ||
| DerivativeMode | mode, | ||
| bool | freeMemory, | ||
| size_t | width, | ||
| mlir::Type | addedType, | ||
| MFnTypeInfo | type_args, | ||
| std::vector< bool > | volatile_args, | ||
| void * | augmented, | ||
| bool | omp, | ||
| llvm::StringRef | postpasses, | ||
| bool | verifyPostPasses, | ||
| bool | strongZero ) |
Definition at line 78 of file EnzymeLogic.cpp.
References ForwardCachedFunctions.
Referenced by AutoDiffCallFwd::createForwardModeTangent().
| FunctionOpInterface MEnzymeLogic::CreateReverseDiff | ( | FunctionOpInterface | fn, |
| std::vector< DIFFE_TYPE > | retType, | ||
| std::vector< DIFFE_TYPE > | constants, | ||
| MTypeAnalysis & | TA, | ||
| std::vector< bool > | returnPrimals, | ||
| std::vector< bool > | returnShadows, | ||
| DerivativeMode | mode, | ||
| bool | freeMemory, | ||
| size_t | width, | ||
| mlir::Type | addedType, | ||
| MFnTypeInfo | type_args, | ||
| std::vector< bool > | volatile_args, | ||
| void * | augmented, | ||
| bool | omp, | ||
| llvm::StringRef | postpasses, | ||
| bool | verifyPostPasses, | ||
| bool | strongZero ) |
Definition at line 192 of file EnzymeLogicReverse.cpp.
References mlir::enzyme::MGradientUtilsReverse::CreateFromClone(), mlir::enzyme::MDiffeGradientUtils::diffe(), differentiate(), mlir::enzyme::MGradientUtils::forceAugmentedReturns(), mlir::enzyme::MGradientUtils::getNewFromOriginal(), mlir::enzyme::MGradientUtils::newFunc, mlir::enzyme::MGradientUtils::oldFunc, OUT_DIFF, and ReverseCachedFunctions.
Referenced by AutoDiffCallRev::createReverseModeAdjoint().
| LogicalResult MEnzymeLogic::differentiate | ( | MGradientUtilsReverse * | gutils, |
| Region & | oldRegion, | ||
| Region & | newRegion, | ||
| llvm::function_ref< buildReturnFunction > | buildFuncRetrunOp, | ||
| std::function< std::pair< Value, Value >(Type)> | cacheCreator ) |
Definition at line 171 of file EnzymeLogicReverse.cpp.
References mlir::enzyme::MGradientUtilsReverse::createReverseModeBlocks(), mlir::enzyme::MGradientUtilsReverse::deregisterCacheCreatorHook(), mlir::enzyme::MGradientUtils::getNewFromOriginal(), handlePredecessors(), handleReturns(), mlir::enzyme::MGradientUtilsReverse::mapReverseModeBlocks, mlir::enzyme::MGradientUtilsReverse::registerCacheCreatorHook(), and visitChildren().
Referenced by CreateReverseDiff().
| void MEnzymeLogic::handlePredecessors | ( | Block * | oBB, |
| Block * | newBB, | ||
| Block * | reverseBB, | ||
| MGradientUtilsReverse * | gutils, | ||
| llvm::function_ref< buildReturnFunction > | buildReturnOp ) |
Definition at line 83 of file EnzymeLogicReverse.cpp.
References mlir::enzyme::MGradientUtilsReverse::addToDiffe(), mlir::enzyme::MDiffeGradientUtils::diffe(), mlir::enzyme::MGradientUtilsReverse::getIndexCacheType(), mlir::enzyme::MGradientUtilsReverse::getIndexType(), mlir::enzyme::MGradientUtils::getNewFromOriginal(), mlir::enzyme::MGradientUtilsReverse::insertInit(), mlir::enzyme::MGradientUtils::isConstantValue(), mlir::enzyme::MGradientUtilsReverse::mapReverseModeBlocks, and mlir::enzyme::MDiffeGradientUtils::zeroDiffe().
Referenced by differentiate().
| void mlir::enzyme::MEnzymeLogic::initializeShadowValues | ( | SmallVector< mlir::Block * > & | dominatorToposortBlocks, |
| MGradientUtilsReverse * | gutils ) |
| void mlir::enzyme::MEnzymeLogic::mapInvertArguments | ( | Block * | oBB, |
| Block * | reverseBB, | ||
| MGradientUtilsReverse * | gutils ) |
| LogicalResult MEnzymeLogic::visitChild | ( | Operation * | op, |
| OpBuilder & | builder, | ||
| MGradientUtilsReverse * | gutils ) |
Definition at line 53 of file EnzymeLogicReverse.cpp.
References mlir::enzyme::MGradientUtils::getNewFromOriginal(), and isFullyInactive().
Referenced by visitChildren().
| LogicalResult MEnzymeLogic::visitChildren | ( | Block * | oBB, |
| Block * | reverseBB, | ||
| MGradientUtilsReverse * | gutils ) |
Definition at line 68 of file EnzymeLogicReverse.cpp.
References visitChild().
Referenced by differentiate().
| std::map<MForwardCacheKey, FunctionOpInterface> mlir::enzyme::MEnzymeLogic::ForwardCachedFunctions |
Definition at line 215 of file EnzymeLogic.h.
Referenced by CreateForwardDiff().
| std::map<MReverseCacheKey, FunctionOpInterface> mlir::enzyme::MEnzymeLogic::ReverseCachedFunctions |
Definition at line 216 of file EnzymeLogic.h.
Referenced by CreateReverseDiff().