Package org.apache.sysds.hops.ipa

## Class InterProceduralAnalysis

- java.lang.Object
- - org.apache.sysds.hops.ipa.InterProceduralAnalysis

-     public class InterProceduralAnalysis
      extends Object

  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. This is done recursively for nested function invocations. 2) Intra-Procedural Analysis: propagate statistics across hop dags of subsequent statement blocks in order to allow chained function calls and reasoning about changing sparsity etc (that requires the rewritten hops dag as input). This also includes control-flow aware propagation of size and sparsity. Furthermore, it also serves as a second constant propagation pass. Additionally, IPA also covers the removal of unused functions, the decision on recompile once functions, the removal of unnecessary checkpoints, and the global removal of constant binary operations such as X * ones.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `InterProceduralAnalysis​(DMLProgram dmlp)` | Creates a handle for performing inter-procedural analysis for a given DML program and its associated HOP DAGs.
    `InterProceduralAnalysis​(StatementBlock sb)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `analyzeProgram()` | Main interface to perform IPA over a given DML program.
    `void` | `analyzeProgram​(int repetitions)` | Main interface to perform IPA over a given DML program.
    `Set<String>` | `analyzeSubProgram()` |

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### InterProceduralAnalysis

          public InterProceduralAnalysis​(DMLProgram dmlp)

      Creates a handle for performing inter-procedural analysis for a given DML program and its associated HOP DAGs. This call initializes various internal information such as the function call graph which can be reused across multiple IPA calls (e.g., for second chance analysis).
      Parameters:
        `dmlp` - The DML program to analyze

    - #### InterProceduralAnalysis

          public InterProceduralAnalysis​(StatementBlock sb)

  - ### Method Detail

    - #### analyzeProgram

          public void analyzeProgram()

      Main interface to perform IPA over a given DML program.

    - #### analyzeProgram

          public void analyzeProgram​(int repetitions)

      Main interface to perform IPA over a given DML program.
      Parameters:
        `repetitions` - number of IPA rounds

    - #### analyzeSubProgram

          public Set<String> analyzeSubProgram()