# Package org.apache.sysds.hops.ipa

Class Summary
FunctionCallGraph
FunctionCallSizeInfo: Auxiliary data structure to hold function call summaries in terms of information about number of function calls, consistent dimensions, consistent sparsity, and dimension-preserving functions.
InterProceduralAnalysis: This Inter Procedural Analysis (IPA) serves two major purposes: 1) Inter-Procedure Analysis: propagate statistics from calling program into functions and back into main program.
IPAPass: Base class for all IPA passes.
IPAPassApplyStaticAndDynamicHopRewrites: This rewrite applies static hop dag and statement block rewrites such as constant folding and branch removal in order to simplify statistic propagation.
IPAPassCompressionWorkloadAnalysis: This rewrite obtains workload summaries for all hops candidates amenable for compression as a basis for workload-aware compression planning.
IPAPassEliminateDeadCode: This rewrite eliminates unnecessary sub-DAGs that produce transient write outputs which are never consumed subsequently.
IPAPassFlagFunctionsRecompileOnce: This rewrite marks functions with loops as recompile once in order to reduce recompilation overhead.
IPAPassFlagNonDeterminism
IPAPassForwardFunctionCalls: This rewrite forwards a function call to a function with a simple function call that only consumes function parameters and literals into the original call location.
IPAPassInlineFunctions: This rewrite inlines single statement block functions, which have fewer operations than an internal threshold.
IPAPassPropagateReplaceLiterals: This rewrite propagates and replaces literals into functions in order to enable subsequent rewrites such as branch removal.
IPAPassRemoveConstantBinaryOps: This rewrite identifies binary operations with constant matrices such as X * ones, where ones might be created as a vector of ones before a loop.
IPAPassRemoveUnnecessaryCheckpoints: This rewrite identifies and removes unnecessary checkpoints, i.e., persisting of Spark RDDs into a given storage level.
IPAPassRemoveUnusedFunctions: This rewrite identifies and removes unused functions in order to reduce compilation overhead and other overheads such as parfor worker creation, where we construct function copies.
IPAPassReplaceEvalFunctionCalls: This rewrite applies static hop dag and statement block rewrites such as constant folding and branch removal in order to simplify statistic propagation.
IPAPassRewriteFederatedPlan: This rewrite generates a federated execution plan by estimating and setting costs and the FederatedOutput values of all relevant hops in the DML program.