blob: b55cef67589c0a854970506f7b61ecd19ea6ee48 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mxnet: mxnet::Engine Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">mxnet
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacemxnet.html">mxnet</a></li><li class="navelem"><a class="el" href="classmxnet_1_1Engine.html">Engine</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classmxnet_1_1Engine-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">mxnet::Engine Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>Dependency engine that schedules operations.
<a href="classmxnet_1_1Engine.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="engine_8h_source.html">engine.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for mxnet::Engine:</div>
<div class="dyncontent">
<div class="center"><img src="classmxnet_1_1Engine__coll__graph.png" border="0" usemap="#mxnet_1_1Engine_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a86c85108347be2bfbb61696b9937316b"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classmxnet_1_1engine_1_1CallbackOnStart.html">engine::CallbackOnStart</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a86c85108347be2bfbb61696b9937316b">CallbackOnStart</a></td></tr>
<tr class="memdesc:a86c85108347be2bfbb61696b9937316b"><td class="mdescLeft">&#160;</td><td class="mdescRight">on start <a href="classmxnet_1_1Engine.html#a86c85108347be2bfbb61696b9937316b">More...</a><br /></td></tr>
<tr class="separator:a86c85108347be2bfbb61696b9937316b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16b757432556f835d27f1b5e1dbe1b06"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classmxnet_1_1engine_1_1CallbackOnComplete.html">engine::CallbackOnComplete</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a16b757432556f835d27f1b5e1dbe1b06">CallbackOnComplete</a></td></tr>
<tr class="memdesc:a16b757432556f835d27f1b5e1dbe1b06"><td class="mdescLeft">&#160;</td><td class="mdescRight">callback on complete <a href="classmxnet_1_1Engine.html#a16b757432556f835d27f1b5e1dbe1b06">More...</a><br /></td></tr>
<tr class="separator:a16b757432556f835d27f1b5e1dbe1b06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07f30ab85fca436e1bbcc72cd4d8bb35"><td class="memItemLeft" align="right" valign="top">typedef std::function&lt; void(<a class="el" href="structmxnet_1_1RunContext.html">RunContext</a>)&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a07f30ab85fca436e1bbcc72cd4d8bb35">SyncFn</a></td></tr>
<tr class="memdesc:a07f30ab85fca436e1bbcc72cd4d8bb35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Synchronous operation to pass to engine. <a href="classmxnet_1_1Engine.html#a07f30ab85fca436e1bbcc72cd4d8bb35">More...</a><br /></td></tr>
<tr class="separator:a07f30ab85fca436e1bbcc72cd4d8bb35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3c96ff8fb3f7e86ff0d79ff1d930001"><td class="memItemLeft" align="right" valign="top">typedef std::function&lt; void(<a class="el" href="structmxnet_1_1RunContext.html">RunContext</a>, <a class="el" href="classmxnet_1_1Engine.html#a86c85108347be2bfbb61696b9937316b">CallbackOnStart</a>, <a class="el" href="classmxnet_1_1Engine.html#a16b757432556f835d27f1b5e1dbe1b06">CallbackOnComplete</a>)&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#af3c96ff8fb3f7e86ff0d79ff1d930001">AsyncFn</a></td></tr>
<tr class="memdesc:af3c96ff8fb3f7e86ff0d79ff1d930001"><td class="mdescLeft">&#160;</td><td class="mdescRight">Asynchronous operation to pass to engine. <a href="classmxnet_1_1Engine.html#af3c96ff8fb3f7e86ff0d79ff1d930001">More...</a><br /></td></tr>
<tr class="separator:af3c96ff8fb3f7e86ff0d79ff1d930001"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac31510c793a12944c33f9cac6150491"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespacemxnet_1_1engine.html#a9d36c4f33eae8531586dc2edf83ae7cf">engine::VarHandle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a></td></tr>
<tr class="memdesc:aac31510c793a12944c33f9cac6150491"><td class="mdescLeft">&#160;</td><td class="mdescRight">Variable pointer. <a href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">More...</a><br /></td></tr>
<tr class="separator:aac31510c793a12944c33f9cac6150491"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a832436e413a075291aa1a631942c3f01"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespacemxnet_1_1engine.html#a2d9b14b658e3f3c4e03ca49cd38ace94">engine::OprHandle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a832436e413a075291aa1a631942c3f01">OprHandle</a></td></tr>
<tr class="memdesc:a832436e413a075291aa1a631942c3f01"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classmxnet_1_1Operator.html" title="Operator interface. Operator defines basic operation unit of optimized computation graph in mxnet....">Operator</a> pointer. <a href="classmxnet_1_1Engine.html#a832436e413a075291aa1a631942c3f01">More...</a><br /></td></tr>
<tr class="separator:a832436e413a075291aa1a631942c3f01"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3c0e2989538b5369c1592eddbcf0181c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a3c0e2989538b5369c1592eddbcf0181c">NotifyShutdown</a> ()=0</td></tr>
<tr class="memdesc:a3c0e2989538b5369c1592eddbcf0181c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Notify the engine about a shutdown, This can help engine to print less messages into display. <a href="classmxnet_1_1Engine.html#a3c0e2989538b5369c1592eddbcf0181c">More...</a><br /></td></tr>
<tr class="separator:a3c0e2989538b5369c1592eddbcf0181c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30f8947a7a1ad86b4c2cdb5b15b6d1e1"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a30f8947a7a1ad86b4c2cdb5b15b6d1e1">Stop</a> ()</td></tr>
<tr class="memdesc:a30f8947a7a1ad86b4c2cdb5b15b6d1e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop all workers in the engine. <a href="classmxnet_1_1Engine.html#a30f8947a7a1ad86b4c2cdb5b15b6d1e1">More...</a><br /></td></tr>
<tr class="separator:a30f8947a7a1ad86b4c2cdb5b15b6d1e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a136a1d60db77a0846faa8462d0fb6237"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a136a1d60db77a0846faa8462d0fb6237">Start</a> ()</td></tr>
<tr class="memdesc:a136a1d60db77a0846faa8462d0fb6237"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restart all workers in the engine. <a href="classmxnet_1_1Engine.html#a136a1d60db77a0846faa8462d0fb6237">More...</a><br /></td></tr>
<tr class="separator:a136a1d60db77a0846faa8462d0fb6237"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e141b188f018d5d933ab99868631d5e"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">NewVariable</a> ()=0</td></tr>
<tr class="memdesc:a6e141b188f018d5d933ab99868631d5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a new variable, the variable can then be used to schedule the operation concurrently via dependency patterns. <a href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">More...</a><br /></td></tr>
<tr class="separator:a6e141b188f018d5d933ab99868631d5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aa6dcadfbca86d215366c380310dd57"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classmxnet_1_1Engine.html#a832436e413a075291aa1a631942c3f01">OprHandle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a1aa6dcadfbca86d215366c380310dd57">NewOperator</a> (<a class="el" href="classmxnet_1_1Engine.html#af3c96ff8fb3f7e86ff0d79ff1d930001">AsyncFn</a> fn, std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;const_vars, std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;mutable_vars, <a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3b">FnProperty</a> prop=<a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3ba07fa7a19aa722c635a15e94cb7f50416">FnProperty::kNormal</a>, const char *opr_name=nullptr, bool wait=false)=0</td></tr>
<tr class="memdesc:a1aa6dcadfbca86d215366c380310dd57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new operator. The returned operator could be saved externally so that it could be resued for scheduling. <a href="classmxnet_1_1Engine.html#a1aa6dcadfbca86d215366c380310dd57">More...</a><br /></td></tr>
<tr class="separator:a1aa6dcadfbca86d215366c380310dd57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fd7c8b35a2f52805506cc242bf82ca7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a3fd7c8b35a2f52805506cc242bf82ca7">DeleteOperator</a> (<a class="el" href="classmxnet_1_1Engine.html#a832436e413a075291aa1a631942c3f01">OprHandle</a> op)=0</td></tr>
<tr class="memdesc:a3fd7c8b35a2f52805506cc242bf82ca7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the given operator. <a href="classmxnet_1_1Engine.html#a3fd7c8b35a2f52805506cc242bf82ca7">More...</a><br /></td></tr>
<tr class="separator:a3fd7c8b35a2f52805506cc242bf82ca7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad213d6b1a7c1e0d4d41275b9efe5f097"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#ad213d6b1a7c1e0d4d41275b9efe5f097">Push</a> (<a class="el" href="classmxnet_1_1Engine.html#a832436e413a075291aa1a631942c3f01">OprHandle</a> op, <a class="el" href="structmxnet_1_1Context.html">Context</a> exec_ctx, int priority=0, bool profiling=false)=0</td></tr>
<tr class="memdesc:ad213d6b1a7c1e0d4d41275b9efe5f097"><td class="mdescLeft">&#160;</td><td class="mdescRight">Push an operator to the engine. <a href="classmxnet_1_1Engine.html#ad213d6b1a7c1e0d4d41275b9efe5f097">More...</a><br /></td></tr>
<tr class="separator:ad213d6b1a7c1e0d4d41275b9efe5f097"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbdd4887c046e05aabe9272d0a0953a7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#afbdd4887c046e05aabe9272d0a0953a7">PushAsync</a> (<a class="el" href="classmxnet_1_1Engine.html#af3c96ff8fb3f7e86ff0d79ff1d930001">AsyncFn</a> exec_fun, <a class="el" href="structmxnet_1_1Context.html">Context</a> exec_ctx, std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;const_vars, std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;mutable_vars, <a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3b">FnProperty</a> prop=<a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3ba07fa7a19aa722c635a15e94cb7f50416">FnProperty::kNormal</a>, int priority=0, const char *opr_name=nullptr, bool wait=false)=0</td></tr>
<tr class="memdesc:afbdd4887c046e05aabe9272d0a0953a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Push an asynchronous operation to the engine. <a href="classmxnet_1_1Engine.html#afbdd4887c046e05aabe9272d0a0953a7">More...</a><br /></td></tr>
<tr class="separator:afbdd4887c046e05aabe9272d0a0953a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a738e5192dab345ab0ec9888b095903cf"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a738e5192dab345ab0ec9888b095903cf">DeleteVariable</a> (<a class="el" href="classmxnet_1_1Engine.html#a07f30ab85fca436e1bbcc72cd4d8bb35">SyncFn</a> delete_fn, <a class="el" href="structmxnet_1_1Context.html">Context</a> exec_ctx, <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> var)=0</td></tr>
<tr class="memdesc:a738e5192dab345ab0ec9888b095903cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Schedule the deletion of a variable. <a href="classmxnet_1_1Engine.html#a738e5192dab345ab0ec9888b095903cf">More...</a><br /></td></tr>
<tr class="separator:a738e5192dab345ab0ec9888b095903cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed51bd7f294d9f2b569764a0c151d883"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#aed51bd7f294d9f2b569764a0c151d883">WaitForVar</a> (<a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> var)=0</td></tr>
<tr class="memdesc:aed51bd7f294d9f2b569764a0c151d883"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for a variable. <a href="classmxnet_1_1Engine.html#aed51bd7f294d9f2b569764a0c151d883">More...</a><br /></td></tr>
<tr class="separator:aed51bd7f294d9f2b569764a0c151d883"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64483aecce780e96056be89d6289e782"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a64483aecce780e96056be89d6289e782">WaitForAll</a> ()=0</td></tr>
<tr class="memdesc:a64483aecce780e96056be89d6289e782"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait until all the activity of engine finishes. <a href="classmxnet_1_1Engine.html#a64483aecce780e96056be89d6289e782">More...</a><br /></td></tr>
<tr class="separator:a64483aecce780e96056be89d6289e782"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80ce63b0c9d088e528b8220f292b5fd6"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a80ce63b0c9d088e528b8220f292b5fd6">Throw</a> (<a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> var)=0</td></tr>
<tr class="memdesc:a80ce63b0c9d088e528b8220f292b5fd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Throw if threre are associated exception with var. <a href="classmxnet_1_1Engine.html#a80ce63b0c9d088e528b8220f292b5fd6">More...</a><br /></td></tr>
<tr class="separator:a80ce63b0c9d088e528b8220f292b5fd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff025321827e15096c02342225f2395b"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#aff025321827e15096c02342225f2395b">~Engine</a> () noexcept(false)</td></tr>
<tr class="memdesc:aff025321827e15096c02342225f2395b"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual destructor <a href="classmxnet_1_1Engine.html#aff025321827e15096c02342225f2395b">More...</a><br /></td></tr>
<tr class="separator:aff025321827e15096c02342225f2395b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4c1d74e906699cf074a34dfdc968d8c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#ac4c1d74e906699cf074a34dfdc968d8c">PushSync</a> (<a class="el" href="classmxnet_1_1Engine.html#a07f30ab85fca436e1bbcc72cd4d8bb35">SyncFn</a> exec_fn, <a class="el" href="structmxnet_1_1Context.html">Context</a> exec_ctx, std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;const_vars, std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;mutable_vars, <a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3b">FnProperty</a> prop=<a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3ba07fa7a19aa722c635a15e94cb7f50416">FnProperty::kNormal</a>, int priority=0, const char *opr_name=nullptr)</td></tr>
<tr class="memdesc:ac4c1d74e906699cf074a34dfdc968d8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Push an synchronous operation to the engine. <a href="classmxnet_1_1Engine.html#ac4c1d74e906699cf074a34dfdc968d8c">More...</a><br /></td></tr>
<tr class="separator:ac4c1d74e906699cf074a34dfdc968d8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1064effa398035423931135e6607c5a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmxnet_1_1Engine.html#a86c85108347be2bfbb61696b9937316b">CallbackOnStart</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#ad1064effa398035423931135e6607c5a">CreateOnStart</a> (void(*callback)(<a class="el" href="classmxnet_1_1Engine.html">Engine</a> *, void *, const dmlc::Error *), void *param)</td></tr>
<tr class="memdesc:ad1064effa398035423931135e6607c5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">factory function to create OnStart callback. <a href="classmxnet_1_1Engine.html#ad1064effa398035423931135e6607c5a">More...</a><br /></td></tr>
<tr class="separator:ad1064effa398035423931135e6607c5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53659c833b8cac3cbcd15a152275a809"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmxnet_1_1Engine.html#a16b757432556f835d27f1b5e1dbe1b06">CallbackOnComplete</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a53659c833b8cac3cbcd15a152275a809">CreateCallback</a> (void(*callback)(<a class="el" href="classmxnet_1_1Engine.html">Engine</a> *, void *, const dmlc::Error *), void *param)</td></tr>
<tr class="memdesc:a53659c833b8cac3cbcd15a152275a809"><td class="mdescLeft">&#160;</td><td class="mdescRight">factory function to create OnComplete callback. <a href="classmxnet_1_1Engine.html#a53659c833b8cac3cbcd15a152275a809">More...</a><br /></td></tr>
<tr class="separator:a53659c833b8cac3cbcd15a152275a809"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d8ac1987a6844dba9b0463030fb3430"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#a9d8ac1987a6844dba9b0463030fb3430">DeduplicateVarHandle</a> (std::vector&lt; <a class="el" href="namespacemxnet_1_1engine.html#a9d36c4f33eae8531586dc2edf83ae7cf">engine::VarHandle</a> &gt; *read_vars, std::vector&lt; <a class="el" href="namespacemxnet_1_1engine.html#a9d36c4f33eae8531586dc2edf83ae7cf">engine::VarHandle</a> &gt; *write_vars)</td></tr>
<tr class="separator:a9d8ac1987a6844dba9b0463030fb3430"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3cc0ead60033689efdc28dba2d3a372"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#aa3cc0ead60033689efdc28dba2d3a372">bulk_size</a> () const</td></tr>
<tr class="memdesc:aa3cc0ead60033689efdc28dba2d3a372"><td class="mdescLeft">&#160;</td><td class="mdescRight">query current limit for bulk size <a href="classmxnet_1_1Engine.html#aa3cc0ead60033689efdc28dba2d3a372">More...</a><br /></td></tr>
<tr class="separator:aa3cc0ead60033689efdc28dba2d3a372"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac33a02d6827b43c27c04371d8ef04ef4"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#ac33a02d6827b43c27c04371d8ef04ef4">set_bulk_size</a> (int)</td></tr>
<tr class="memdesc:ac33a02d6827b43c27c04371d8ef04ef4"><td class="mdescLeft">&#160;</td><td class="mdescRight">set maximum limit for bulk size <a href="classmxnet_1_1Engine.html#ac33a02d6827b43c27c04371d8ef04ef4">More...</a><br /></td></tr>
<tr class="separator:ac33a02d6827b43c27c04371d8ef04ef4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:ae0a23da15ef63d9479c7468e1f2f825f"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmxnet_1_1Engine.html">Engine</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Get</a> ()</td></tr>
<tr class="separator:ae0a23da15ef63d9479c7468e1f2f825f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd90cf15707ef855753c73a003f04e07"><td class="memItemLeft" align="right" valign="top">static const std::shared_ptr&lt; <a class="el" href="classmxnet_1_1Engine.html">Engine</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1Engine.html#afd90cf15707ef855753c73a003f04e07">_GetSharedRef</a> ()</td></tr>
<tr class="memdesc:afd90cf15707ef855753c73a003f04e07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get shared pointer reference to engine singleton. Most user should not call this function. This function is called by another singleton X who requires engine to be destructed after X. <a href="classmxnet_1_1Engine.html#afd90cf15707ef855753c73a003f04e07">More...</a><br /></td></tr>
<tr class="separator:afd90cf15707ef855753c73a003f04e07"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Dependency engine that schedules operations. </p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="af3c96ff8fb3f7e86ff0d79ff1d930001"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3c96ff8fb3f7e86ff0d79ff1d930001">&#9670;&nbsp;</a></span>AsyncFn</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef std::function&lt;void(<a class="el" href="structmxnet_1_1RunContext.html">RunContext</a>, <a class="el" href="classmxnet_1_1Engine.html#a86c85108347be2bfbb61696b9937316b">CallbackOnStart</a>, <a class="el" href="classmxnet_1_1Engine.html#a16b757432556f835d27f1b5e1dbe1b06">CallbackOnComplete</a>)&gt; <a class="el" href="classmxnet_1_1Engine.html#af3c96ff8fb3f7e86ff0d79ff1d930001">mxnet::Engine::AsyncFn</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Asynchronous operation to pass to engine. </p>
</div>
</div>
<a id="a16b757432556f835d27f1b5e1dbe1b06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16b757432556f835d27f1b5e1dbe1b06">&#9670;&nbsp;</a></span>CallbackOnComplete</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classmxnet_1_1engine_1_1CallbackOnComplete.html">engine::CallbackOnComplete</a> <a class="el" href="classmxnet_1_1Engine.html#a16b757432556f835d27f1b5e1dbe1b06">mxnet::Engine::CallbackOnComplete</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>callback on complete </p>
</div>
</div>
<a id="a86c85108347be2bfbb61696b9937316b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86c85108347be2bfbb61696b9937316b">&#9670;&nbsp;</a></span>CallbackOnStart</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classmxnet_1_1engine_1_1CallbackOnStart.html">engine::CallbackOnStart</a> <a class="el" href="classmxnet_1_1Engine.html#a86c85108347be2bfbb61696b9937316b">mxnet::Engine::CallbackOnStart</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>on start </p>
</div>
</div>
<a id="a832436e413a075291aa1a631942c3f01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a832436e413a075291aa1a631942c3f01">&#9670;&nbsp;</a></span>OprHandle</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="namespacemxnet_1_1engine.html#a2d9b14b658e3f3c4e03ca49cd38ace94">engine::OprHandle</a> <a class="el" href="classmxnet_1_1Engine.html#a832436e413a075291aa1a631942c3f01">mxnet::Engine::OprHandle</a></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classmxnet_1_1Operator.html" title="Operator interface. Operator defines basic operation unit of optimized computation graph in mxnet....">Operator</a> pointer. </p>
</div>
</div>
<a id="a07f30ab85fca436e1bbcc72cd4d8bb35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07f30ab85fca436e1bbcc72cd4d8bb35">&#9670;&nbsp;</a></span>SyncFn</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef std::function&lt;void(<a class="el" href="structmxnet_1_1RunContext.html">RunContext</a>)&gt; <a class="el" href="classmxnet_1_1Engine.html#a07f30ab85fca436e1bbcc72cd4d8bb35">mxnet::Engine::SyncFn</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Synchronous operation to pass to engine. </p>
</div>
</div>
<a id="aac31510c793a12944c33f9cac6150491"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac31510c793a12944c33f9cac6150491">&#9670;&nbsp;</a></span>VarHandle</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="namespacemxnet_1_1engine.html#a9d36c4f33eae8531586dc2edf83ae7cf">engine::VarHandle</a> <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">mxnet::Engine::VarHandle</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Variable pointer. </p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aff025321827e15096c02342225f2395b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff025321827e15096c02342225f2395b">&#9670;&nbsp;</a></span>~Engine()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual mxnet::Engine::~Engine </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual destructor </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="afd90cf15707ef855753c73a003f04e07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd90cf15707ef855753c73a003f04e07">&#9670;&nbsp;</a></span>_GetSharedRef()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const std::shared_ptr&lt;<a class="el" href="classmxnet_1_1Engine.html">Engine</a>&gt;&amp; mxnet::Engine::_GetSharedRef </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get shared pointer reference to engine singleton. Most user should not call this function. This function is called by another singleton X who requires engine to be destructed after X. </p>
<dl class="section return"><dt>Returns</dt><dd>A shared pointer to <a class="el" href="classmxnet_1_1Engine.html" title="Dependency engine that schedules operations.">Engine</a> singleton. </dd></dl>
</div>
</div>
<a id="aa3cc0ead60033689efdc28dba2d3a372"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3cc0ead60033689efdc28dba2d3a372">&#9670;&nbsp;</a></span>bulk_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int mxnet::Engine::bulk_size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>query current limit for bulk size </p>
</div>
</div>
<a id="a53659c833b8cac3cbcd15a152275a809"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a53659c833b8cac3cbcd15a152275a809">&#9670;&nbsp;</a></span>CreateCallback()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmxnet_1_1Engine.html#a16b757432556f835d27f1b5e1dbe1b06">CallbackOnComplete</a> mxnet::Engine::CreateCallback </td>
<td>(</td>
<td class="paramtype">void(*)(<a class="el" href="classmxnet_1_1Engine.html">Engine</a> *, void *, const dmlc::Error *)&#160;</td>
<td class="paramname"><em>callback</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>param</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>factory function to create OnComplete callback. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">callback</td><td>th static callback function. </td></tr>
<tr><td class="paramname">param</td><td>the paramter passed to callback. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad1064effa398035423931135e6607c5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1064effa398035423931135e6607c5a">&#9670;&nbsp;</a></span>CreateOnStart()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmxnet_1_1Engine.html#a86c85108347be2bfbb61696b9937316b">CallbackOnStart</a> mxnet::Engine::CreateOnStart </td>
<td>(</td>
<td class="paramtype">void(*)(<a class="el" href="classmxnet_1_1Engine.html">Engine</a> *, void *, const dmlc::Error *)&#160;</td>
<td class="paramname"><em>callback</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>param</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>factory function to create OnStart callback. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">callback</td><td>th static callback function. </td></tr>
<tr><td class="paramname">param</td><td>the paramter passed to callback. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9d8ac1987a6844dba9b0463030fb3430"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d8ac1987a6844dba9b0463030fb3430">&#9670;&nbsp;</a></span>DeduplicateVarHandle()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void mxnet::Engine::DeduplicateVarHandle </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="namespacemxnet_1_1engine.html#a9d36c4f33eae8531586dc2edf83ae7cf">engine::VarHandle</a> &gt; *&#160;</td>
<td class="paramname"><em>read_vars</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="namespacemxnet_1_1engine.html#a9d36c4f33eae8531586dc2edf83ae7cf">engine::VarHandle</a> &gt; *&#160;</td>
<td class="paramname"><em>write_vars</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3fd7c8b35a2f52805506cc242bf82ca7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3fd7c8b35a2f52805506cc242bf82ca7">&#9670;&nbsp;</a></span>DeleteOperator()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::DeleteOperator </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmxnet_1_1Engine.html#a832436e413a075291aa1a631942c3f01">OprHandle</a>&#160;</td>
<td class="paramname"><em>op</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete the given operator. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">op</td><td>The operator to delete.</td></tr>
</table>
</dd>
</dl>
<p>The delete will not happen immediately, but will wait until all the operations using this operator are completed. </p>
</div>
</div>
<a id="a738e5192dab345ab0ec9888b095903cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a738e5192dab345ab0ec9888b095903cf">&#9670;&nbsp;</a></span>DeleteVariable()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::DeleteVariable </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmxnet_1_1Engine.html#a07f30ab85fca436e1bbcc72cd4d8bb35">SyncFn</a>&#160;</td>
<td class="paramname"><em>delete_fn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structmxnet_1_1Context.html">Context</a>&#160;</td>
<td class="paramname"><em>exec_ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a>&#160;</td>
<td class="paramname"><em>var</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Schedule the deletion of a variable. </p>
<p>The delete will not happen immediately, but will wait until all the operations depending on var are completed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">delete_fn</td><td>A function that will be called after the variable is deleted. </td></tr>
<tr><td class="paramname">exec_ctx</td><td>Execution context. </td></tr>
<tr><td class="paramname">var</td><td>The variable to be deleted. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae0a23da15ef63d9479c7468e1f2f825f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0a23da15ef63d9479c7468e1f2f825f">&#9670;&nbsp;</a></span>Get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classmxnet_1_1Engine.html">Engine</a>* mxnet::Engine::Get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classmxnet_1_1Engine.html" title="Dependency engine that schedules operations.">Engine</a> singleton. </dd></dl>
</div>
</div>
<a id="a1aa6dcadfbca86d215366c380310dd57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1aa6dcadfbca86d215366c380310dd57">&#9670;&nbsp;</a></span>NewOperator()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classmxnet_1_1Engine.html#a832436e413a075291aa1a631942c3f01">OprHandle</a> mxnet::Engine::NewOperator </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmxnet_1_1Engine.html#af3c96ff8fb3f7e86ff0d79ff1d930001">AsyncFn</a>&#160;</td>
<td class="paramname"><em>fn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;&#160;</td>
<td class="paramname"><em>const_vars</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;&#160;</td>
<td class="paramname"><em>mutable_vars</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3b">FnProperty</a>&#160;</td>
<td class="paramname"><em>prop</em> = <code><a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3ba07fa7a19aa722c635a15e94cb7f50416">FnProperty::kNormal</a></code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>opr_name</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>wait</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new operator. The returned operator could be saved externally so that it could be resued for scheduling. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fn</td><td>The execution function. </td></tr>
<tr><td class="paramname">const_vars</td><td>The variables that current operation will use but not mutate. </td></tr>
<tr><td class="paramname">mutable_vars</td><td>The variables that current operation will mutate. </td></tr>
<tr><td class="paramname">prop</td><td>Property of the function. </td></tr>
<tr><td class="paramname">opr_name</td><td>The operator name. </td></tr>
<tr><td class="paramname">wait</td><td>Whether this is a WaitForVar operation </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The new operator allocated. </dd></dl>
</div>
</div>
<a id="a6e141b188f018d5d933ab99868631d5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e141b188f018d5d933ab99868631d5e">&#9670;&nbsp;</a></span>NewVariable()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> mxnet::Engine::NewVariable </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocate a new variable, the variable can then be used to schedule the operation concurrently via dependency patterns. </p>
<dl class="section return"><dt>Returns</dt><dd>The new variable allocated. </dd></dl>
</div>
</div>
<a id="a3c0e2989538b5369c1592eddbcf0181c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c0e2989538b5369c1592eddbcf0181c">&#9670;&nbsp;</a></span>NotifyShutdown()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::NotifyShutdown </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Notify the engine about a shutdown, This can help engine to print less messages into display. </p>
<p>User do not have to call this function. </p><dl class="section return"><dt>Returns</dt><dd>0 when success, -1 when failure happens. </dd></dl>
</div>
</div>
<a id="ad213d6b1a7c1e0d4d41275b9efe5f097"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad213d6b1a7c1e0d4d41275b9efe5f097">&#9670;&nbsp;</a></span>Push()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::Push </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmxnet_1_1Engine.html#a832436e413a075291aa1a631942c3f01">OprHandle</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structmxnet_1_1Context.html">Context</a>&#160;</td>
<td class="paramname"><em>exec_ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>profiling</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Push an operator to the engine. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">op</td><td>The operator to push. </td></tr>
<tr><td class="paramname">exec_ctx</td><td>Execution context. </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action, as hint to the engine. </td></tr>
<tr><td class="paramname">profiling</td><td>The variable indicate whether to profile this operator. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afbdd4887c046e05aabe9272d0a0953a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbdd4887c046e05aabe9272d0a0953a7">&#9670;&nbsp;</a></span>PushAsync()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::PushAsync </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmxnet_1_1Engine.html#af3c96ff8fb3f7e86ff0d79ff1d930001">AsyncFn</a>&#160;</td>
<td class="paramname"><em>exec_fun</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structmxnet_1_1Context.html">Context</a>&#160;</td>
<td class="paramname"><em>exec_ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;&#160;</td>
<td class="paramname"><em>const_vars</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;&#160;</td>
<td class="paramname"><em>mutable_vars</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3b">FnProperty</a>&#160;</td>
<td class="paramname"><em>prop</em> = <code><a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3ba07fa7a19aa722c635a15e94cb7f50416">FnProperty::kNormal</a></code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>opr_name</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>wait</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Push an asynchronous operation to the engine. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">exec_fun</td><td>Execution function, this function takes a parameter on_complete that must be called when the execution completes. </td></tr>
<tr><td class="paramname">exec_ctx</td><td>Execution context. </td></tr>
<tr><td class="paramname">const_vars</td><td>The variables that current operation will use but not mutate. </td></tr>
<tr><td class="paramname">mutable_vars</td><td>The variables that current operation will mutate. </td></tr>
<tr><td class="paramname">prop</td><td>Property of the function. </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action, as hint to the engine. </td></tr>
<tr><td class="paramname">opr_name</td><td>The operator name. </td></tr>
<tr><td class="paramname">wait</td><td>Whether this is a WaitForVar operation </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac4c1d74e906699cf074a34dfdc968d8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4c1d74e906699cf074a34dfdc968d8c">&#9670;&nbsp;</a></span>PushSync()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::PushSync </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmxnet_1_1Engine.html#a07f30ab85fca436e1bbcc72cd4d8bb35">SyncFn</a>&#160;</td>
<td class="paramname"><em>exec_fn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structmxnet_1_1Context.html">Context</a>&#160;</td>
<td class="paramname"><em>exec_ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;&#160;</td>
<td class="paramname"><em>const_vars</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a> &gt; const &amp;&#160;</td>
<td class="paramname"><em>mutable_vars</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3b">FnProperty</a>&#160;</td>
<td class="paramname"><em>prop</em> = <code><a class="el" href="namespacemxnet.html#a998b74220fab2b012cf8a179650e1b3ba07fa7a19aa722c635a15e94cb7f50416">FnProperty::kNormal</a></code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>opr_name</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Push an synchronous operation to the engine. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">exec_fn</td><td>Execution function that executes the operation. </td></tr>
<tr><td class="paramname">exec_ctx</td><td>Execution context. </td></tr>
<tr><td class="paramname">const_vars</td><td>The variables that current operation will use but not mutate. </td></tr>
<tr><td class="paramname">mutable_vars</td><td>The variables that current operation will mutate. </td></tr>
<tr><td class="paramname">prop</td><td>Property of the function. </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action, as hint to the engine. </td></tr>
<tr><td class="paramname">opr_name</td><td>The operator name. </td></tr>
</table>
</dd>
</dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">SyncFn</td><td>the synchronous function to be pushed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac33a02d6827b43c27c04371d8ef04ef4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac33a02d6827b43c27c04371d8ef04ef4">&#9670;&nbsp;</a></span>set_bulk_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int mxnet::Engine::set_bulk_size </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>set maximum limit for bulk size </p>
</div>
</div>
<a id="a136a1d60db77a0846faa8462d0fb6237"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a136a1d60db77a0846faa8462d0fb6237">&#9670;&nbsp;</a></span>Start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::Start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Restart all workers in the engine. </p>
</div>
</div>
<a id="a30f8947a7a1ad86b4c2cdb5b15b6d1e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30f8947a7a1ad86b4c2cdb5b15b6d1e1">&#9670;&nbsp;</a></span>Stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::Stop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Stop all workers in the engine. </p>
</div>
</div>
<a id="a80ce63b0c9d088e528b8220f292b5fd6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80ce63b0c9d088e528b8220f292b5fd6">&#9670;&nbsp;</a></span>Throw()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::Throw </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a>&#160;</td>
<td class="paramname"><em>var</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Throw if threre are associated exception with var. </p>
</div>
</div>
<a id="a64483aecce780e96056be89d6289e782"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64483aecce780e96056be89d6289e782">&#9670;&nbsp;</a></span>WaitForAll()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::WaitForAll </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Wait until all the activity of engine finishes. </p>
</div>
</div>
<a id="aed51bd7f294d9f2b569764a0c151d883"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed51bd7f294d9f2b569764a0c151d883">&#9670;&nbsp;</a></span>WaitForVar()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::Engine::WaitForVar </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">VarHandle</a>&#160;</td>
<td class="paramname"><em>var</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Wait for a variable. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">var</td><td>The variable we should wait for. This function returns when the variable is ready. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>/work/mxnet/include/mxnet/<a class="el" href="engine_8h_source.html">engine.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 5 2023 03:47:41 for mxnet by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>