blob: ec361e1d19541fb46f0e0c36f68e653d2898bcc7 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_252) on Thu Jun 18 13:32:45 CEST 2020 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>InterProceduralAnalysis (SystemDS 2.0.0-SNAPSHOT API)</title>
<meta name="date" content="2020-06-18">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="InterProceduralAnalysis (SystemDS 2.0.0-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/InterProceduralAnalysis.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/sysds/hops/ipa/FunctionCallSizeInfo.html" title="class in org.apache.sysds.hops.ipa"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/sysds/hops/ipa/IPAPass.html" title="class in org.apache.sysds.hops.ipa"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/sysds/hops/ipa/InterProceduralAnalysis.html" target="_top">Frames</a></li>
<li><a href="InterProceduralAnalysis.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.sysds.hops.ipa</div>
<h2 title="Class InterProceduralAnalysis" class="title">Class InterProceduralAnalysis</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.sysds.hops.ipa.InterProceduralAnalysis</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">InterProceduralAnalysis</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">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.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#ALLOW_MULTIPLE_FUNCTION_CALLS">ALLOW_MULTIPLE_FUNCTION_CALLS</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#APPLY_DYNAMIC_REWRITES">APPLY_DYNAMIC_REWRITES</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#APPLY_STATIC_REWRITES">APPLY_STATIC_REWRITES</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#ELIMINATE_DEAD_CODE">ELIMINATE_DEAD_CODE</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#FLAG_FUNCTION_RECOMPILE_ONCE">FLAG_FUNCTION_RECOMPILE_ONCE</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#FLAG_NONDETERMINISM">FLAG_NONDETERMINISM</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#FORWARD_SIMPLE_FUN_CALLS">FORWARD_SIMPLE_FUN_CALLS</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#INLINING_MAX_NUM_OPS">INLINING_MAX_NUM_OPS</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#INTRA_PROCEDURAL_ANALYSIS">INTRA_PROCEDURAL_ANALYSIS</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#PROPAGATE_KNOWN_UDF_STATISTICS">PROPAGATE_KNOWN_UDF_STATISTICS</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#PROPAGATE_SCALAR_LITERALS">PROPAGATE_SCALAR_LITERALS</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#PROPAGATE_SCALAR_VARS_INTO_FUN">PROPAGATE_SCALAR_VARS_INTO_FUN</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#REMOVE_CONSTANT_BINARY_OPS">REMOVE_CONSTANT_BINARY_OPS</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#REMOVE_UNNECESSARY_CHECKPOINTS">REMOVE_UNNECESSARY_CHECKPOINTS</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#REMOVE_UNUSED_FUNCTIONS">REMOVE_UNUSED_FUNCTIONS</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#InterProceduralAnalysis-org.apache.sysds.parser.DMLProgram-">InterProceduralAnalysis</a></span>(<a href="../../../../../org/apache/sysds/parser/DMLProgram.html" title="class in org.apache.sysds.parser">DMLProgram</a>&nbsp;dmlp)</code>
<div class="block">Creates a handle for performing inter-procedural analysis
for a given DML program and its associated HOP DAGs.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#InterProceduralAnalysis-org.apache.sysds.parser.StatementBlock-">InterProceduralAnalysis</a></span>(<a href="../../../../../org/apache/sysds/parser/StatementBlock.html" title="class in org.apache.sysds.parser">StatementBlock</a>&nbsp;sb)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#analyzeProgram--">analyzeProgram</a></span>()</code>
<div class="block">Main interface to perform IPA over a given DML program.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#analyzeProgram-int-">analyzeProgram</a></span>(int&nbsp;repetitions)</code>
<div class="block">Main interface to perform IPA over a given DML program.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/sysds/hops/ipa/InterProceduralAnalysis.html#analyzeSubProgram--">analyzeSubProgram</a></span>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="INTRA_PROCEDURAL_ANALYSIS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INTRA_PROCEDURAL_ANALYSIS</h4>
<pre>protected static final&nbsp;boolean INTRA_PROCEDURAL_ANALYSIS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.INTRA_PROCEDURAL_ANALYSIS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="PROPAGATE_KNOWN_UDF_STATISTICS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PROPAGATE_KNOWN_UDF_STATISTICS</h4>
<pre>protected static final&nbsp;boolean PROPAGATE_KNOWN_UDF_STATISTICS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.PROPAGATE_KNOWN_UDF_STATISTICS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="ALLOW_MULTIPLE_FUNCTION_CALLS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ALLOW_MULTIPLE_FUNCTION_CALLS</h4>
<pre>protected static final&nbsp;boolean ALLOW_MULTIPLE_FUNCTION_CALLS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.ALLOW_MULTIPLE_FUNCTION_CALLS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="REMOVE_UNUSED_FUNCTIONS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>REMOVE_UNUSED_FUNCTIONS</h4>
<pre>protected static final&nbsp;boolean REMOVE_UNUSED_FUNCTIONS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.REMOVE_UNUSED_FUNCTIONS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="FLAG_FUNCTION_RECOMPILE_ONCE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FLAG_FUNCTION_RECOMPILE_ONCE</h4>
<pre>protected static final&nbsp;boolean FLAG_FUNCTION_RECOMPILE_ONCE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.FLAG_FUNCTION_RECOMPILE_ONCE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="REMOVE_UNNECESSARY_CHECKPOINTS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>REMOVE_UNNECESSARY_CHECKPOINTS</h4>
<pre>protected static final&nbsp;boolean REMOVE_UNNECESSARY_CHECKPOINTS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.REMOVE_UNNECESSARY_CHECKPOINTS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="REMOVE_CONSTANT_BINARY_OPS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>REMOVE_CONSTANT_BINARY_OPS</h4>
<pre>protected static final&nbsp;boolean REMOVE_CONSTANT_BINARY_OPS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.REMOVE_CONSTANT_BINARY_OPS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="PROPAGATE_SCALAR_VARS_INTO_FUN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PROPAGATE_SCALAR_VARS_INTO_FUN</h4>
<pre>protected static final&nbsp;boolean PROPAGATE_SCALAR_VARS_INTO_FUN</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.PROPAGATE_SCALAR_VARS_INTO_FUN">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="PROPAGATE_SCALAR_LITERALS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PROPAGATE_SCALAR_LITERALS</h4>
<pre>protected static final&nbsp;boolean PROPAGATE_SCALAR_LITERALS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.PROPAGATE_SCALAR_LITERALS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="APPLY_STATIC_REWRITES">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>APPLY_STATIC_REWRITES</h4>
<pre>protected static final&nbsp;boolean APPLY_STATIC_REWRITES</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.APPLY_STATIC_REWRITES">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="APPLY_DYNAMIC_REWRITES">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>APPLY_DYNAMIC_REWRITES</h4>
<pre>protected static final&nbsp;boolean APPLY_DYNAMIC_REWRITES</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.APPLY_DYNAMIC_REWRITES">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INLINING_MAX_NUM_OPS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INLINING_MAX_NUM_OPS</h4>
<pre>protected static final&nbsp;int INLINING_MAX_NUM_OPS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.INLINING_MAX_NUM_OPS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="ELIMINATE_DEAD_CODE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ELIMINATE_DEAD_CODE</h4>
<pre>protected static final&nbsp;boolean ELIMINATE_DEAD_CODE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.ELIMINATE_DEAD_CODE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="FORWARD_SIMPLE_FUN_CALLS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FORWARD_SIMPLE_FUN_CALLS</h4>
<pre>protected static final&nbsp;boolean FORWARD_SIMPLE_FUN_CALLS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.FORWARD_SIMPLE_FUN_CALLS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="FLAG_NONDETERMINISM">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>FLAG_NONDETERMINISM</h4>
<pre>protected static final&nbsp;boolean FLAG_NONDETERMINISM</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.sysds.hops.ipa.InterProceduralAnalysis.FLAG_NONDETERMINISM">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="InterProceduralAnalysis-org.apache.sysds.parser.DMLProgram-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>InterProceduralAnalysis</h4>
<pre>public&nbsp;InterProceduralAnalysis(<a href="../../../../../org/apache/sysds/parser/DMLProgram.html" title="class in org.apache.sysds.parser">DMLProgram</a>&nbsp;dmlp)</pre>
<div class="block">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).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dmlp</code> - The DML program to analyze</dd>
</dl>
</li>
</ul>
<a name="InterProceduralAnalysis-org.apache.sysds.parser.StatementBlock-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>InterProceduralAnalysis</h4>
<pre>public&nbsp;InterProceduralAnalysis(<a href="../../../../../org/apache/sysds/parser/StatementBlock.html" title="class in org.apache.sysds.parser">StatementBlock</a>&nbsp;sb)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="analyzeProgram--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>analyzeProgram</h4>
<pre>public&nbsp;void&nbsp;analyzeProgram()</pre>
<div class="block">Main interface to perform IPA over a given DML program.</div>
</li>
</ul>
<a name="analyzeProgram-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>analyzeProgram</h4>
<pre>public&nbsp;void&nbsp;analyzeProgram(int&nbsp;repetitions)</pre>
<div class="block">Main interface to perform IPA over a given DML program.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>repetitions</code> - number of IPA rounds</dd>
</dl>
</li>
</ul>
<a name="analyzeSubProgram--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>analyzeSubProgram</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;analyzeSubProgram()</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/InterProceduralAnalysis.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/sysds/hops/ipa/FunctionCallSizeInfo.html" title="class in org.apache.sysds.hops.ipa"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/sysds/hops/ipa/IPAPass.html" title="class in org.apache.sysds.hops.ipa"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/sysds/hops/ipa/InterProceduralAnalysis.html" target="_top">Frames</a></li>
<li><a href="InterProceduralAnalysis.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>