Package org.apache.sysds.hops.ipa

## Class FunctionCallSizeInfo

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

    public class FunctionCallSizeInfo
    extends Object

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.

### Constructor Summary

Constructors
`FunctionCallSizeInfo​(FunctionCallGraph fgraph)` Constructs the function call summary for all functions reachable from the main program.
`FunctionCallSizeInfo​(FunctionCallGraph fgraph, boolean init)` Constructs the function call summary for all functions reachable from the main program.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addDimsPreservingFunction​(String fkey)` Adds a function to the set of dimension-preserving functions.
`boolean` `equals​(Object o)`
`Set<String>` `getDimsPreservingFunctions()` Gets the set of dimension-preserving functions, i.e., functions with one matrix input and output of equal dimension sizes.
`int` `getFunctionCallCount​(String fkey)` Gets the number of function calls to a given function.
`Set<String>` `getInvalidFunctions()` Gets the set of functions that are invalid for statistics propagation.
`Set<String>` `getValidFunctions()` Gets the set of functions that are valid for statistics propagation.
`int` `hashCode()`
`boolean` `hasSafeLiterals​(String fkey)` Indicates if the given function has at least one input that allows for safe literal propagation and replacement, i.e., all function calls have consistent literal inputs.
`boolean` `isDimsPreservingFunction​(String fkey)` Indicates if the given function belongs to the set of dimension-preserving functions.
`boolean` `isSafeLiteral​(String fkey, int pos)` Indicates if the given function input allows for safe literal propagation and replacement, i.e., all function calls have consistent literal inputs.
`boolean` `isSafeNnz​(String fkey, int pos)` Indicates if the given function input allows for safe nnz propagation, i.e., all function calls have a consistent number of non-zeros.
`boolean` `isValidFunction​(String fkey)` Indicates if the given function is valid for statistics propagation.
`String` `toString()`

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

`getClass, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### FunctionCallSizeInfo

    public FunctionCallSizeInfo​(FunctionCallGraph fgraph)

Constructs the function call summary for all functions reachable from the main program.

Parameters:
  `fgraph` - function call graph

#### FunctionCallSizeInfo

    public FunctionCallSizeInfo​(FunctionCallGraph fgraph,
                                boolean init)

Constructs the function call summary for all functions reachable from the main program.

Parameters:
  `fgraph` - function call graph
  `init` - initialize function candidates

### Method Detail

#### getFunctionCallCount

    public int getFunctionCallCount​(String fkey)

Gets the number of function calls to a given function.

Parameters:
  `fkey` - function key
Returns:
  number of function calls

#### isValidFunction

    public boolean isValidFunction​(String fkey)

Indicates if the given function is valid for statistics propagation.

Parameters:
  `fkey` - function key
Returns:
  true if valid

#### getValidFunctions

    public Set<String> getValidFunctions()

Gets the set of functions that are valid for statistics propagation.

Returns:
  set of function keys

#### getInvalidFunctions

    public Set<String> getInvalidFunctions()

Gets the set of functions that are invalid for statistics propagation. This is literally the set of reachable functions minus the set of valid functions.

Returns:
  set of function keys.

#### addDimsPreservingFunction

    public void addDimsPreservingFunction​(String fkey)

Adds a function to the set of dimension-preserving functions.

Parameters:
  `fkey` - function key

#### getDimsPreservingFunctions

    public Set<String> getDimsPreservingFunctions()

Gets the set of dimension-preserving functions, i.e., functions with one matrix input and output of equal dimension sizes.

Returns:
  set of function keys

#### isDimsPreservingFunction

    public boolean isDimsPreservingFunction​(String fkey)

Indicates if the given function belongs to the set of dimension-preserving functions.

Parameters:
  `fkey` - function key
Returns:
  true if the function is dimension-preserving

#### isSafeNnz

    public boolean isSafeNnz​(String fkey,
                             int pos)

Indicates if the given function input allows for safe nnz propagation, i.e., all function calls have a consistent number of non-zeros.

Parameters:
  `fkey` - function key
  `pos` - function input position
Returns:
  true if nnz can safely be propagated

#### hasSafeLiterals

    public boolean hasSafeLiterals​(String fkey)

Indicates if the given function has at least one input that allows for safe literal propagation and replacement, i.e., all function calls have consistent literal inputs.

Parameters:
  `fkey` - function key
Returns:
  true if a literal can be safely propagated

#### isSafeLiteral

    public boolean isSafeLiteral​(String fkey,
                                 int pos)

Indicates if the given function input allows for safe literal propagation and replacement, i.e., all function calls have consistent literal inputs.

Parameters:
  `fkey` - function key
  `pos` - function input position
Returns:
  true if literal that can be safely propagated

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### equals

    public boolean equals​(Object o)

Overrides:
  `equals` in class `Object`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`