# Package org.apache.sysds.hops.ipa

- Class Summary
  Class | Description
  --- | ---
  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.