.. java:import:: fr.inria.tapenade.analysis ADActivityAnalyzer .. java:import:: fr.inria.tapenade.analysis ActivityPattern .. java:import:: fr.inria.tapenade.analysis ReqExplicit .. java:import:: fr.inria.tapenade.analysis DataFlowAnalyzer .. java:import:: fr.inria.tapenade.representation AlignmentBoundary .. java:import:: fr.inria.tapenade.representation ArrayDim .. java:import:: fr.inria.tapenade.representation BasicBlock .. java:import:: fr.inria.tapenade.representation Block .. java:import:: fr.inria.tapenade.representation CallArrow .. java:import:: fr.inria.tapenade.representation CallGraph .. java:import:: fr.inria.tapenade.representation Directive .. java:import:: fr.inria.tapenade.representation EntryBlock .. java:import:: fr.inria.tapenade.representation ExitBlock .. java:import:: fr.inria.tapenade.representation FGArrow .. java:import:: fr.inria.tapenade.representation FGConstants .. java:import:: fr.inria.tapenade.representation FunctionDecl .. java:import:: fr.inria.tapenade.representation FunctionTypeSpec .. java:import:: fr.inria.tapenade.representation ILUtils .. java:import:: fr.inria.tapenade.representation Instruction .. java:import:: fr.inria.tapenade.representation InterfaceDecl .. java:import:: fr.inria.tapenade.representation MPIcallInfo .. java:import:: fr.inria.tapenade.representation NewSymbolHolder .. java:import:: fr.inria.tapenade.representation PointerTypeSpec .. java:import:: fr.inria.tapenade.representation PrimitiveTypeSpec .. java:import:: fr.inria.tapenade.representation SymbolDecl .. java:import:: fr.inria.tapenade.representation SymbolTable .. java:import:: fr.inria.tapenade.representation SymbolTableConstants .. java:import:: fr.inria.tapenade.representation TapEnv .. java:import:: fr.inria.tapenade.representation TapList .. java:import:: fr.inria.tapenade.representation TypeDecl .. java:import:: fr.inria.tapenade.representation TypeSpec .. java:import:: fr.inria.tapenade.representation Unit .. java:import:: fr.inria.tapenade.representation UnitStorage .. java:import:: fr.inria.tapenade.representation VariableDecl .. java:import:: fr.inria.tapenade.representation VoidTypeSpec .. java:import:: fr.inria.tapenade.representation WrapperTypeSpec .. java:import:: fr.inria.tapenade.representation ZoneInfo .. java:import:: fr.inria.tapenade.representation MixedLanguageInfos .. java:import:: fr.inria.tapenade.representation MemoryMaps .. java:import:: fr.inria.tapenade.representation MemMap .. java:import:: fr.inria.tapenade.utils BoolVector .. java:import:: fr.inria.tapenade.utils Chrono .. java:import:: fr.inria.tapenade.utils ILLang .. java:import:: fr.inria.tapenade.utils Int2ZoneInfo .. java:import:: fr.inria.tapenade.utils TapIntList .. java:import:: fr.inria.tapenade.utils TapPair .. java:import:: fr.inria.tapenade.utils Tree CallGraphDifferentiator ======================= .. java:package:: fr.inria.tapenade.differentiation :noindex: .. java:type:: public class CallGraphDifferentiator The top level of Differentiation at the Call-Graph level. Fields ------ unitDiffTimer ^^^^^^^^^^^^^ .. java:field:: protected final Chrono unitDiffTimer :outertype: CallGraphDifferentiator Timer for differentiation of each individual Unit. unitsHaveDiff ^^^^^^^^^^^^^ .. java:field:: protected UnitStorage unitsHaveDiff :outertype: CallGraphDifferentiator Stores decision to generate a differentiated version of a Unit. unitsHavePrimal ^^^^^^^^^^^^^^^ .. java:field:: protected UnitStorage unitsHavePrimal :outertype: CallGraphDifferentiator Stores decision to (re)generate a primal version of a Unit. Constructors ------------ CallGraphDifferentiator ^^^^^^^^^^^^^^^^^^^^^^^ .. java:constructor:: protected CallGraphDifferentiator(DifferentiationEnv adEnv) :outertype: CallGraphDifferentiator Methods ------- collectDiffSubUnits ^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void collectDiffSubUnits(Unit srcSubUnit, int differentiationMode, TapList toDiffSubUnitsFwd, TapList toDiffSubUnitsBwd) :outertype: CallGraphDifferentiator declareDiffSymbolTableIfNew ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected static void declareDiffSymbolTableIfNew(Unit diffUnit, SymbolTable diffSymbolTable) :outertype: CallGraphDifferentiator diffCallNeeded ^^^^^^^^^^^^^^ .. java:method:: public boolean diffCallNeeded(Tree callTree, ActivityPattern callingActivity, Unit calledUnit, ActivityPattern calledActivity, BoolVector beforeAvlX, BoolVector afterReqX, TapList resultPointerActivity, Block block, Instruction instr) :outertype: CallGraphDifferentiator getUnitDiffInfo ^^^^^^^^^^^^^^^ .. java:method:: protected UnitDiffInfo getUnitDiffInfo(Unit unit) :outertype: CallGraphDifferentiator getUnitFormalArgsActivityS ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public boolean[] getUnitFormalArgsActivityS(ActivityPattern activityPattern) :outertype: CallGraphDifferentiator :return: the precomputed formalArgsActivity info of the Unit of the given "activityPattern", for this particular "activityPattern" given. patternCreatesDiffCode ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: public boolean patternCreatesDiffCode(ActivityPattern activityPattern, Unit srcUnit) :outertype: CallGraphDifferentiator run ^^^ .. java:method:: public static CallGraph run(CallGraph origCallGraph, TapList rootUnits, String[][] suffixes) :outertype: CallGraphDifferentiator Main entry point: Given a source CallGraph and a list of rootUnits to differentiate, creates the differentiated CallGraph, equipped in field "backAssociations" with the correspondence from source Units to differentiated Units. solveNewSymbolHoldersOfUnit ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected static void solveNewSymbolHoldersOfUnit(Unit unit, boolean emptyCopiedUnitSuffix) :outertype: CallGraphDifferentiator updateAllUsagesDiffFuncResultName ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void updateAllUsagesDiffFuncResultName(Unit unit, String oldUnitName, Unit diffUnit, Tree diffFuncResultName) :outertype: CallGraphDifferentiator Inside diffUnit, replace all occurrences of "oldUnitName" with (a copy of) the given "diffFuncResultName", which is the name of the diff function and therefore (Fortran style) the name of the variable holding the return value.