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


Public Member Functions | |
| SmallVector< mlir::Value, 1 > | getNewFromOriginal (ValueRange originst) const |
| mlir::Value | getNewFromOriginal (const mlir::Value originst) const |
| mlir::Block * | getNewFromOriginal (mlir::Block *originst) const |
| Operation * | getNewFromOriginal (Operation *originst) const |
| MGradientUtils (MEnzymeLogic &Logic, FunctionOpInterface newFunc_, FunctionOpInterface oldFunc_, MTypeAnalysis &TA_, MTypeResults TR_, IRMapping &invertedPointers_, const llvm::ArrayRef< bool > returnPrimals, const llvm::ArrayRef< bool > returnShadows, const SmallPtrSetImpl< mlir::Value > &constantvalues_, const SmallPtrSetImpl< mlir::Value > &activevals_, ArrayRef< DIFFE_TYPE > ReturnActivities, ArrayRef< DIFFE_TYPE > ArgDiffeTypes_, IRMapping &originalToNewFn_, std::map< Operation *, Operation * > &originalToNewFnOps_, DerivativeMode mode, unsigned width, bool omp, llvm::StringRef postpasses, bool verifyPostPasses, bool strongZero) | |
| void | erase (Operation *op) |
| void | replaceOrigOpWith (Operation *op, ValueRange vals) |
| void | eraseIfUnused (Operation *op, bool erase=true, bool check=true) |
| bool | isConstantInstruction (mlir::Operation *v) const |
| bool | isConstantValue (mlir::Value v) const |
| mlir::Value | invertPointerM (mlir::Value v, OpBuilder &Builder2) |
| void | forceAugmentedReturns () |
| Operation * | cloneWithNewOperands (OpBuilder &B, Operation *op) |
| LogicalResult | visitChild (Operation *op) |
| void | setDiffe (mlir::Value origv, mlir::Value newv, mlir::OpBuilder &builder) |
| void | setInvertedPointer (mlir::Value origv, mlir::Value newv) |
| mlir::Type | getShadowType (mlir::Type T) |
Static Public Member Functions | |
| static llvm::SmallVector< mlir::Value, 1 > | reindex_arguments (llvm::ArrayRef< mlir::Value > vals, mlir::OperandRange range) |
Public Attributes | |
| FunctionOpInterface | newFunc |
| MEnzymeLogic & | Logic |
| bool | AtomicAdd |
| DerivativeMode | mode |
| FunctionOpInterface | oldFunc |
| IRMapping | invertedPointers |
| IRMapping | originalToNewFn |
| std::map< Operation *, Operation * > | originalToNewFnOps |
| SmallPtrSet< Block *, 4 > | blocksNotForAnalysis |
| DenseMap< Operation *, bool > | readOnlyCache |
| std::unique_ptr< enzyme::ActivityAnalyzer > | activityAnalyzer |
| MTypeAnalysis & | TA |
| MTypeResults | TR |
| bool | omp |
| bool | verifyPostPasses |
| llvm::StringRef | postpasses |
| bool | strongZero |
| const llvm::ArrayRef< bool > | returnPrimals |
| const llvm::ArrayRef< bool > | returnShadows |
| unsigned | width |
| ArrayRef< DIFFE_TYPE > | ArgDiffeTypes |
| ArrayRef< DIFFE_TYPE > | RetDiffeTypes |
Definition at line 20 of file GradientUtils.h.
| mlir::enzyme::MGradientUtils::MGradientUtils | ( | MEnzymeLogic & | Logic, |
| FunctionOpInterface | newFunc_, | ||
| FunctionOpInterface | oldFunc_, | ||
| MTypeAnalysis & | TA_, | ||
| MTypeResults | TR_, | ||
| IRMapping & | invertedPointers_, | ||
| const llvm::ArrayRef< bool > | returnPrimals, | ||
| const llvm::ArrayRef< bool > | returnShadows, | ||
| const SmallPtrSetImpl< mlir::Value > & | constantvalues_, | ||
| const SmallPtrSetImpl< mlir::Value > & | activevals_, | ||
| ArrayRef< DIFFE_TYPE > | ReturnActivities, | ||
| ArrayRef< DIFFE_TYPE > | ArgDiffeTypes_, | ||
| IRMapping & | originalToNewFn_, | ||
| std::map< Operation *, Operation * > & | originalToNewFnOps_, | ||
| DerivativeMode | mode, | ||
| unsigned | width, | ||
| bool | omp, | ||
| llvm::StringRef | postpasses, | ||
| bool | verifyPostPasses, | ||
| bool | strongZero ) |
Definition at line 30 of file GradientUtils.cpp.
| Operation * mlir::enzyme::MGradientUtils::cloneWithNewOperands | ( | OpBuilder & | B, |
| Operation * | op ) |
Definition at line 102 of file GradientUtils.cpp.
|
inline |
Definition at line 69 of file GradientUtils.h.
Referenced by mlir::enzyme::detail::branchingForwardHandler(), mlir::enzyme::detail::controlFlowForwardHandler(), AutoDiffCallFwd::createForwardModeTangent(), createTerminator(), and handleReturns().
|
inline |
Definition at line 78 of file GradientUtils.h.
Referenced by mlir::enzyme::detail::allocationForwardHandler().
| void mlir::enzyme::MGradientUtils::forceAugmentedReturns | ( | ) |
Definition at line 251 of file GradientUtils.cpp.
Referenced by mlir::enzyme::MEnzymeLogic::CreateReverseDiff().
| mlir::Value mlir::enzyme::MGradientUtils::getNewFromOriginal | ( | const mlir::Value | originst | ) | const |
Definition at line 54 of file GradientUtils.cpp.
| Block * mlir::enzyme::MGradientUtils::getNewFromOriginal | ( | mlir::Block * | originst | ) | const |
Definition at line 75 of file GradientUtils.cpp.
| Operation * mlir::enzyme::MGradientUtils::getNewFromOriginal | ( | Operation * | originst | ) | const |
Definition at line 86 of file GradientUtils.cpp.
| SmallVector< mlir::Value, 1 > mlir::enzyme::MGradientUtils::getNewFromOriginal | ( | ValueRange | originst | ) | const |
Definition at line 66 of file GradientUtils.cpp.
Referenced by mlir::enzyme::detail::allocationForwardHandler(), mlir::enzyme::detail::branchingForwardHandler(), AutoDiffCallRev::cacheValues(), mlir::enzyme::detail::controlFlowForwardHandler(), AutoDiffCallFwd::createForwardModeTangent(), mlir::enzyme::MEnzymeLogic::CreateReverseDiff(), createTerminator(), mlir::enzyme::MEnzymeLogic::differentiate(), mlir::enzyme::MEnzymeLogic::handlePredecessors(), mlir::enzyme::detail::memoryIdentityForwardHandler(), mlir::enzyme::detail::regionTerminatorForwardHandler(), replaceOrigOpWith(), mlir::enzyme::MEnzymeLogic::visitChild(), and visitChild().
|
inline |
Definition at line 93 of file GradientUtils.h.
Referenced by GradientUtils::GradientUtils().
| mlir::Value mlir::enzyme::MGradientUtils::invertPointerM | ( | mlir::Value | v, |
| OpBuilder & | Builder2 ) |
Definition at line 117 of file GradientUtils.cpp.
Referenced by mlir::enzyme::detail::branchingForwardHandler(), mlir::enzyme::detail::controlFlowForwardHandler(), AutoDiffCallFwd::createForwardModeTangent(), AutoDiffCallRev::createReverseModeAdjoint(), createTerminator(), mlir::enzyme::detail::memoryIdentityForwardHandler(), and mlir::enzyme::detail::regionTerminatorForwardHandler().
| bool mlir::enzyme::MGradientUtils::isConstantInstruction | ( | mlir::Operation * | v | ) | const |
Definition at line 110 of file GradientUtils.cpp.
Referenced by isFullyInactive().
| bool mlir::enzyme::MGradientUtils::isConstantValue | ( | mlir::Value | v | ) | const |
Definition at line 113 of file GradientUtils.cpp.
Referenced by mlir::enzyme::detail::branchingForwardHandler(), mlir::enzyme::detail::controlFlowForwardHandler(), mlir::enzyme::detail::controlFlowForwardHandler(), AutoDiffCallFwd::createForwardModeTangent(), AutoDiffCallRev::createReverseModeAdjoint(), createTerminator(), mlir::enzyme::MEnzymeLogic::handlePredecessors(), mlir::enzyme::localizeGradients(), mlir::enzyme::detail::memoryIdentityForwardHandler(), mlir::enzyme::detail::regionTerminatorForwardHandler(), and mlir::enzyme::detail::returnReverseHandler().
|
inlinestatic |
Definition at line 99 of file GradientUtils.h.
|
inline |
Definition at line 70 of file GradientUtils.h.
References getNewFromOriginal(), originalToNewFn, and originalToNewFnOps.
Referenced by mlir::enzyme::detail::controlFlowForwardHandler(), and AutoDiffCallFwd::createForwardModeTangent().
| void mlir::enzyme::MGradientUtils::setDiffe | ( | mlir::Value | origv, |
| mlir::Value | newv, | ||
| mlir::OpBuilder & | builder ) |
Definition at line 212 of file GradientUtils.cpp.
References ForwardMode, and ForwardModeSplit.
Referenced by mlir::enzyme::detail::allocationForwardHandler(), AutoDiffCallFwd::createForwardModeTangent(), mlir::enzyme::detail::memoryIdentityForwardHandler(), and mlir::enzyme::MDiffeGradientUtils::setDiffe().
| void mlir::enzyme::MGradientUtils::setInvertedPointer | ( | mlir::Value | origv, |
| mlir::Value | newv ) |
Definition at line 241 of file GradientUtils.cpp.
References getShadowType().
| LogicalResult MGradientUtils::visitChild | ( | Operation * | op | ) |
Definition at line 306 of file GradientUtils.cpp.
References activityAnalyzer, ForwardMode, getNewFromOriginal(), mode, and TR.
Referenced by mlir::enzyme::detail::controlFlowForwardHandler().
| std::unique_ptr<enzyme::ActivityAnalyzer> mlir::enzyme::MGradientUtils::activityAnalyzer |
Definition at line 35 of file GradientUtils.h.
Referenced by visitChild().
| ArrayRef<DIFFE_TYPE> mlir::enzyme::MGradientUtils::ArgDiffeTypes |
Definition at line 47 of file GradientUtils.h.
| bool mlir::enzyme::MGradientUtils::AtomicAdd |
Definition at line 26 of file GradientUtils.h.
| SmallPtrSet<Block *, 4> mlir::enzyme::MGradientUtils::blocksNotForAnalysis |
Definition at line 33 of file GradientUtils.h.
| IRMapping mlir::enzyme::MGradientUtils::invertedPointers |
Definition at line 29 of file GradientUtils.h.
Referenced by mlir::enzyme::detail::controlFlowForwardHandler(), and mlir::enzyme::MGradientUtilsReverse::CreateFromClone().
| MEnzymeLogic& mlir::enzyme::MGradientUtils::Logic |
Definition at line 25 of file GradientUtils.h.
Referenced by AutoDiffCallFwd::createForwardModeTangent(), mlir::enzyme::MGradientUtilsReverse::CreateFromClone(), and AutoDiffCallRev::createReverseModeAdjoint().
| DerivativeMode mlir::enzyme::MGradientUtils::mode |
Definition at line 27 of file GradientUtils.h.
Referenced by visitChild().
| FunctionOpInterface mlir::enzyme::MGradientUtils::newFunc |
| FunctionOpInterface mlir::enzyme::MGradientUtils::oldFunc |
Definition at line 28 of file GradientUtils.h.
Referenced by mlir::enzyme::MEnzymeLogic::CreateReverseDiff(), and mlir::enzyme::MGradientUtilsReverse::createReverseModeBlocks().
| bool mlir::enzyme::MGradientUtils::omp |
Definition at line 39 of file GradientUtils.h.
Referenced by AutoDiffCallFwd::createForwardModeTangent(), mlir::enzyme::MGradientUtilsReverse::CreateFromClone(), and AutoDiffCallRev::createReverseModeAdjoint().
| IRMapping mlir::enzyme::MGradientUtils::originalToNewFn |
Definition at line 30 of file GradientUtils.h.
Referenced by replaceOrigOpWith().
| std::map<Operation *, Operation *> mlir::enzyme::MGradientUtils::originalToNewFnOps |
Definition at line 31 of file GradientUtils.h.
Referenced by mlir::enzyme::detail::controlFlowForwardHandler(), handleReturns(), and replaceOrigOpWith().
| llvm::StringRef mlir::enzyme::MGradientUtils::postpasses |
Definition at line 41 of file GradientUtils.h.
Referenced by AutoDiffCallFwd::createForwardModeTangent(), mlir::enzyme::MGradientUtilsReverse::CreateFromClone(), and AutoDiffCallRev::createReverseModeAdjoint().
| DenseMap<Operation *, bool> mlir::enzyme::MGradientUtils::readOnlyCache |
Definition at line 34 of file GradientUtils.h.
| ArrayRef<DIFFE_TYPE> mlir::enzyme::MGradientUtils::RetDiffeTypes |
Definition at line 48 of file GradientUtils.h.
Referenced by mlir::enzyme::detail::returnReverseHandler().
| const llvm::ArrayRef<bool> mlir::enzyme::MGradientUtils::returnPrimals |
Definition at line 43 of file GradientUtils.h.
Referenced by mlir::enzyme::MGradientUtilsReverse::CreateFromClone().
| const llvm::ArrayRef<bool> mlir::enzyme::MGradientUtils::returnShadows |
Definition at line 44 of file GradientUtils.h.
Referenced by mlir::enzyme::MGradientUtilsReverse::CreateFromClone().
| bool mlir::enzyme::MGradientUtils::strongZero |
Definition at line 42 of file GradientUtils.h.
Referenced by AutoDiffCallFwd::createForwardModeTangent(), mlir::enzyme::MGradientUtilsReverse::CreateFromClone(), and AutoDiffCallRev::createReverseModeAdjoint().
| MTypeAnalysis& mlir::enzyme::MGradientUtils::TA |
Definition at line 37 of file GradientUtils.h.
Referenced by AutoDiffCallFwd::createForwardModeTangent(), mlir::enzyme::MGradientUtilsReverse::CreateFromClone(), and AutoDiffCallRev::createReverseModeAdjoint().
| MTypeResults mlir::enzyme::MGradientUtils::TR |
Definition at line 38 of file GradientUtils.h.
Referenced by visitChild().
| bool mlir::enzyme::MGradientUtils::verifyPostPasses |
Definition at line 40 of file GradientUtils.h.
Referenced by AutoDiffCallFwd::createForwardModeTangent(), mlir::enzyme::MGradientUtilsReverse::CreateFromClone(), and AutoDiffCallRev::createReverseModeAdjoint().
| unsigned mlir::enzyme::MGradientUtils::width |
Definition at line 46 of file GradientUtils.h.
Referenced by mlir::enzyme::detail::branchingForwardHandler(), mlir::enzyme::detail::controlFlowForwardHandler(), AutoDiffCallFwd::createForwardModeTangent(), mlir::enzyme::MGradientUtilsReverse::CreateFromClone(), AutoDiffCallRev::createReverseModeAdjoint(), and mlir::enzyme::detail::memoryIdentityForwardHandler().