blob: a62a60119d7599b8ab359c84b090a378b0deb132 [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: /work/mxnet/include/mxnet/op_attr_types.h File 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="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1143c7affb9ebd026cb6818dd282def7.html">mxnet</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">op_attr_types.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Additional operator attributes beside the ones provided by NNVM.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;<a class="el" href="tensor_8h_source.html">mshadow/tensor.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="3rdparty_2tvm_2nnvm_2include_2nnvm_2op__attr__types_8h_source.html">nnvm/op_attr_types.h</a>&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;functional&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &quot;<a class="el" href="include_2mxnet_2base_8h_source.html">./base.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="include_2mxnet_2ndarray_8h_source.html">./ndarray.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="engine_8h_source.html">./engine.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="resource_8h_source.html">./resource.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for op_attr_types.h:</div>
<div class="dyncontent">
<div class="center"><img src="include_2mxnet_2op__attr__types_8h__incl.png" border="0" usemap="#_2work_2mxnet_2include_2mxnet_2op__attr__types_8h" alt=""/></div>
<!-- MAP 0 -->
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="include_2mxnet_2op__attr__types_8h__dep__incl.png" border="0" usemap="#_2work_2mxnet_2include_2mxnet_2op__attr__types_8hdep" alt=""/></div>
<!-- MAP 1 -->
</div>
</div>
<p><a href="include_2mxnet_2op__attr__types_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmxnet_1_1OpContext.html">mxnet::OpContext</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">All the possible information needed by <a class="el" href="classmxnet_1_1Operator.html" title="Operator interface. Operator defines basic operation unit of optimized computation graph in mxnet....">Operator</a>. This is the superset of <a class="el" href="structmxnet_1_1RunContext.html" title="execution time context. The information needed in runtime for actual execution.">RunContext</a>. We use this data structure to bookkeep everything needed by Forward and Backward. <a href="structmxnet_1_1OpContext.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1OpStatePtr.html">mxnet::OpStatePtr</a></td></tr>
<tr class="memdesc:"><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> state. This is a pointer type, its content is mutable even if <a class="el" href="classmxnet_1_1OpStatePtr.html" title="Operator state. This is a pointer type, its content is mutable even if OpStatePtr is const.">OpStatePtr</a> is const. <a href="classmxnet_1_1OpStatePtr.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacemxnet"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html">mxnet</a></td></tr>
<tr class="memdesc:namespacemxnet"><td class="mdescLeft">&#160;</td><td class="mdescRight">namespace of mxnet <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a3eb6c3fcc944be6bf247a38370603a56"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a3eb6c3fcc944be6bf247a38370603a56">mxnet::FCreateOpState</a> = std::function&lt; OpStatePtr(const NodeAttrs &amp;attrs, Context ctx, const <a class="el" href="namespacemxnet.html#a87e1c30aafac389774c6f4d905c0e5ea">mxnet::ShapeVector</a> &amp;in_shape, const std::vector&lt; int &gt; &amp;in_type)&gt;</td></tr>
<tr class="memdesc:a3eb6c3fcc944be6bf247a38370603a56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a Layer style, forward/backward operator. This is easy to write code that contains state. <a class="el" href="classmxnet_1_1OpStatePtr.html" title="Operator state. This is a pointer type, its content is mutable even if OpStatePtr is const.">OpStatePtr</a> is a pointer type, it's content is mutable even if <a class="el" href="classmxnet_1_1OpStatePtr.html" title="Operator state. This is a pointer type, its content is mutable even if OpStatePtr is const.">OpStatePtr</a> is constant. <a href="namespacemxnet.html#a3eb6c3fcc944be6bf247a38370603a56">More...</a><br /></td></tr>
<tr class="separator:a3eb6c3fcc944be6bf247a38370603a56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab11a4e6d5c8c47c99cfc3306db6538c8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#ab11a4e6d5c8c47c99cfc3306db6538c8">mxnet::THasDeterministicOutput</a> = bool</td></tr>
<tr class="memdesc:ab11a4e6d5c8c47c99cfc3306db6538c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether the operator always produces the same output given the same input. This enables certain optimizations like common expression elimination. <a href="namespacemxnet.html#ab11a4e6d5c8c47c99cfc3306db6538c8">More...</a><br /></td></tr>
<tr class="separator:ab11a4e6d5c8c47c99cfc3306db6538c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66a56e57a2254773a0ef8fd5649c8457"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a66a56e57a2254773a0ef8fd5649c8457">mxnet::FExecType</a> = std::function&lt; ExecType(const NodeAttrs &amp;attrs)&gt;</td></tr>
<tr class="memdesc:a66a56e57a2254773a0ef8fd5649c8457"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execution mode of this operator. <a href="namespacemxnet.html#a66a56e57a2254773a0ef8fd5649c8457">More...</a><br /></td></tr>
<tr class="separator:a66a56e57a2254773a0ef8fd5649c8457"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a08e18bfd7949deec5ee02217430451"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a6a08e18bfd7949deec5ee02217430451">mxnet::FStatefulCompute</a> = std::function&lt; void(const OpStatePtr &amp;state, const OpContext &amp;ctx, const std::vector&lt; TBlob &gt; &amp;inputs, const std::vector&lt; OpReqType &gt; &amp;req, const std::vector&lt; TBlob &gt; &amp;outputs)&gt;</td></tr>
<tr class="memdesc:a6a08e18bfd7949deec5ee02217430451"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resiger a compute function for stateful operator. <a class="el" href="classmxnet_1_1OpStatePtr.html" title="Operator state. This is a pointer type, its content is mutable even if OpStatePtr is const.">OpStatePtr</a> is a pointer type, it's content is mutable even if <a class="el" href="classmxnet_1_1OpStatePtr.html" title="Operator state. This is a pointer type, its content is mutable even if OpStatePtr is const.">OpStatePtr</a> is constant. <a href="namespacemxnet.html#a6a08e18bfd7949deec5ee02217430451">More...</a><br /></td></tr>
<tr class="separator:a6a08e18bfd7949deec5ee02217430451"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a732fe2bd197377e308edf8f1f07d3b11"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a732fe2bd197377e308edf8f1f07d3b11">mxnet::FStatefulComputeEx</a> = std::function&lt; void(const OpStatePtr &amp;state, const OpContext &amp;ctx, const std::vector&lt; NDArray &gt; &amp;inputs, const std::vector&lt; OpReqType &gt; &amp;req, const std::vector&lt; NDArray &gt; &amp;outputs)&gt;</td></tr>
<tr class="memdesc:a732fe2bd197377e308edf8f1f07d3b11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resiger a compute function for stateful operator using <a class="el" href="classmxnet_1_1NDArray.html" title="ndarray interface">NDArray</a> interface. <a class="el" href="classmxnet_1_1OpStatePtr.html" title="Operator state. This is a pointer type, its content is mutable even if OpStatePtr is const.">OpStatePtr</a> is a pointer type, it's content is mutable even if <a class="el" href="classmxnet_1_1OpStatePtr.html" title="Operator state. This is a pointer type, its content is mutable even if OpStatePtr is const.">OpStatePtr</a> is constant. <a href="namespacemxnet.html#a732fe2bd197377e308edf8f1f07d3b11">More...</a><br /></td></tr>
<tr class="separator:a732fe2bd197377e308edf8f1f07d3b11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d111ffddc2351e613c98e4932389d09"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a9d111ffddc2351e613c98e4932389d09">mxnet::FResourceRequest</a> = std::function&lt; std::vector&lt; ResourceRequest &gt;(const NodeAttrs &amp;n)&gt;</td></tr>
<tr class="memdesc:a9d111ffddc2351e613c98e4932389d09"><td class="mdescLeft">&#160;</td><td class="mdescRight">The resource request from the operator. An operator could register ResourceRequestEx, or <a class="el" href="structmxnet_1_1ResourceRequest.html" title="The resources that can be requested by Operator.">ResourceRequest</a>, or neither. <a href="namespacemxnet.html#a9d111ffddc2351e613c98e4932389d09">More...</a><br /></td></tr>
<tr class="separator:a9d111ffddc2351e613c98e4932389d09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fe61bb3c62fdf64d49c502f320ad48e"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a2fe61bb3c62fdf64d49c502f320ad48e">mxnet::FResourceRequestEx</a> = std::function&lt; std::vector&lt; ResourceRequest &gt;(const NodeAttrs &amp;n, const int dev_mask, const DispatchMode dispatch_mode)&gt;</td></tr>
<tr class="memdesc:a2fe61bb3c62fdf64d49c502f320ad48e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The resource request from the operator. An operator could register ResourceRequestEx, or <a class="el" href="structmxnet_1_1ResourceRequest.html" title="The resources that can be requested by Operator.">ResourceRequest</a>, or neither. If an operator registers both ResourceRequestEx and <a class="el" href="structmxnet_1_1ResourceRequest.html" title="The resources that can be requested by Operator.">ResourceRequest</a>, <a class="el" href="structmxnet_1_1ResourceRequest.html" title="The resources that can be requested by Operator.">ResourceRequest</a> is ignored. <a href="namespacemxnet.html#a2fe61bb3c62fdf64d49c502f320ad48e">More...</a><br /></td></tr>
<tr class="separator:a2fe61bb3c62fdf64d49c502f320ad48e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0a8d263b3849aa02671880b91e37e89"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#ad0a8d263b3849aa02671880b91e37e89">mxnet::FNDArrayFunction</a> = std::function&lt; void(const <a class="el" href="structnnvm_1_1NodeAttrs.html">nnvm::NodeAttrs</a> &amp;attrs, const std::vector&lt; NDArray &gt; &amp;inputs, std::vector&lt; NDArray &gt; *outputs)&gt;</td></tr>
<tr class="memdesc:ad0a8d263b3849aa02671880b91e37e89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register an operator called as a <a class="el" href="classmxnet_1_1NDArray.html" title="ndarray interface">NDArray</a> function. <a href="namespacemxnet.html#ad0a8d263b3849aa02671880b91e37e89">More...</a><br /></td></tr>
<tr class="separator:ad0a8d263b3849aa02671880b91e37e89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2be48535ad0d70fa7bc99cc3d1c92176"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a2be48535ad0d70fa7bc99cc3d1c92176">mxnet::FCompute</a> = std::function&lt; void(const <a class="el" href="structnnvm_1_1NodeAttrs.html">nnvm::NodeAttrs</a> &amp;attrs, const OpContext &amp;ctx, const std::vector&lt; TBlob &gt; &amp;inputs, const std::vector&lt; OpReqType &gt; &amp;req, const std::vector&lt; TBlob &gt; &amp;outputs)&gt;</td></tr>
<tr class="memdesc:a2be48535ad0d70fa7bc99cc3d1c92176"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a compute function for simple stateless forward only operator. <a href="namespacemxnet.html#a2be48535ad0d70fa7bc99cc3d1c92176">More...</a><br /></td></tr>
<tr class="separator:a2be48535ad0d70fa7bc99cc3d1c92176"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7e1a26939193c91c5bc2605fc004e8a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#af7e1a26939193c91c5bc2605fc004e8a">mxnet::FComputeEx</a> = std::function&lt; void(const <a class="el" href="structnnvm_1_1NodeAttrs.html">nnvm::NodeAttrs</a> &amp;attrs, const OpContext &amp;ctx, const std::vector&lt; NDArray &gt; &amp;inputs, const std::vector&lt; OpReqType &gt; &amp;req, const std::vector&lt; NDArray &gt; &amp;outputs)&gt;</td></tr>
<tr class="memdesc:af7e1a26939193c91c5bc2605fc004e8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register an <a class="el" href="classmxnet_1_1NDArray.html" title="ndarray interface">NDArray</a> compute function for simple stateless forward only operator. <a href="namespacemxnet.html#af7e1a26939193c91c5bc2605fc004e8a">More...</a><br /></td></tr>
<tr class="separator:af7e1a26939193c91c5bc2605fc004e8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac52a328d9452c46eb36fb1f605eacb3"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#aac52a328d9452c46eb36fb1f605eacb3">mxnet::FInferStorageType</a> = std::function&lt; bool(const NodeAttrs &amp;attrs, const int dev_mask, DispatchMode *dispatch_mode, std::vector&lt; int &gt; *in_attrs, std::vector&lt; int &gt; *out_attrs)&gt;</td></tr>
<tr class="memdesc:aac52a328d9452c46eb36fb1f605eacb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a storage and dispatch mode inference function based on storage types of the inputs and outputs, and the dev_mask for the operator. <a href="namespacemxnet.html#aac52a328d9452c46eb36fb1f605eacb3">More...</a><br /></td></tr>
<tr class="separator:aac52a328d9452c46eb36fb1f605eacb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7566ea1828b59c79d275e96c751ce95a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a7566ea1828b59c79d275e96c751ce95a">mxnet::FQuantizable</a> = std::function&lt; QuantizeType(const NodeAttrs &amp;attrs)&gt;</td></tr>
<tr class="memdesc:a7566ea1828b59c79d275e96c751ce95a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a quantized node creation function based on the attrs of the node. <a href="namespacemxnet.html#a7566ea1828b59c79d275e96c751ce95a">More...</a><br /></td></tr>
<tr class="separator:a7566ea1828b59c79d275e96c751ce95a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a958bac3edd388ec1e6dbf4c822713efc"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a958bac3edd388ec1e6dbf4c822713efc">mxnet::FQuantizedOp</a> = std::function&lt; <a class="el" href="namespacennvm.html#a573897937ff3b88f0014feabb8e44a92">nnvm::ObjectPtr</a>(const NodeAttrs &amp;attrs)&gt;</td></tr>
<tr class="memdesc:a958bac3edd388ec1e6dbf4c822713efc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a quantized node creation function based on the attrs of the node. <a href="namespacemxnet.html#a958bac3edd388ec1e6dbf4c822713efc">More...</a><br /></td></tr>
<tr class="separator:a958bac3edd388ec1e6dbf4c822713efc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a433f4d6bb1cf6ffb709955f3bad68ff3"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a433f4d6bb1cf6ffb709955f3bad68ff3">mxnet::FNeedRequantize</a> = std::function&lt; bool(const NodeAttrs &amp;attrs)&gt;</td></tr>
<tr class="memdesc:a433f4d6bb1cf6ffb709955f3bad68ff3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a function to determine if the output of a quantized operator needs to be requantized. This is usually used for the operators taking int8 data types while accumulating in int32, e.g. quantized_conv. <a href="namespacemxnet.html#a433f4d6bb1cf6ffb709955f3bad68ff3">More...</a><br /></td></tr>
<tr class="separator:a433f4d6bb1cf6ffb709955f3bad68ff3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae34f6bf63887b531f645f8ea17756033"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#ae34f6bf63887b531f645f8ea17756033">mxnet::FAvoidQuantizeInput</a> = std::function&lt; bool(const NodeAttrs &amp;attrs, const size_t index, const std::string quantize_granularity)&gt;</td></tr>
<tr class="memdesc:ae34f6bf63887b531f645f8ea17756033"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a function to determine if the input of a quantized operator needs to be quantized. This is usually used for the quantized operators which can handle fp32 inputs directly. <a href="namespacemxnet.html#ae34f6bf63887b531f645f8ea17756033">More...</a><br /></td></tr>
<tr class="separator:ae34f6bf63887b531f645f8ea17756033"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2bc8c6e69de22c472315238873de1e7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#aa2bc8c6e69de22c472315238873de1e7">mxnet::FNeedAsymQuantizeInput</a> = std::function&lt; bool(const NodeAttrs &amp;attrs, const size_t index)&gt;</td></tr>
<tr class="memdesc:aa2bc8c6e69de22c472315238873de1e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a function to determine if the input of a quantized operator needs to be quantized asymmetrically. <a href="namespacemxnet.html#aa2bc8c6e69de22c472315238873de1e7">More...</a><br /></td></tr>
<tr class="separator:aa2bc8c6e69de22c472315238873de1e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bf8c7525c46d5da5a3ffb3e069f1837"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a1bf8c7525c46d5da5a3ffb3e069f1837">mxnet::FAvoidDequantizeOutput</a> = std::function&lt; bool(const NodeAttrs &amp;attrs, const size_t index)&gt;</td></tr>
<tr class="memdesc:a1bf8c7525c46d5da5a3ffb3e069f1837"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a function to determine if the output of a quantized operator needs to be dequantized. This is usually used for the quantized operators which can produce fp32 outputs directly. <a href="namespacemxnet.html#a1bf8c7525c46d5da5a3ffb3e069f1837">More...</a><br /></td></tr>
<tr class="separator:a1bf8c7525c46d5da5a3ffb3e069f1837"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa732a8c6cc1ad79a7e93fc68ca8d5a6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#aaa732a8c6cc1ad79a7e93fc68ca8d5a6">mxnet::FNeedCalibrateInput</a> = std::function&lt; std::vector&lt; int &gt;(const NodeAttrs &amp;attrs)&gt;</td></tr>
<tr class="memdesc:aaa732a8c6cc1ad79a7e93fc68ca8d5a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a function to determine if the input of a quantized operator needs to be calibrated. This is usually used for the quantized operators which need calibration on its input. <a href="namespacemxnet.html#aaa732a8c6cc1ad79a7e93fc68ca8d5a6">More...</a><br /></td></tr>
<tr class="separator:aaa732a8c6cc1ad79a7e93fc68ca8d5a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e77b330e3582205b63bf01b5bcaa29f"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a0e77b330e3582205b63bf01b5bcaa29f">mxnet::FNeedCalibrateOutput</a> = std::function&lt; std::vector&lt; int &gt;(const NodeAttrs &amp;attrs)&gt;</td></tr>
<tr class="memdesc:a0e77b330e3582205b63bf01b5bcaa29f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a function to determine if the output of a quantized operator needs to be calibrated. This is usually used for the quantized operators which need calibration on its output. <a href="namespacemxnet.html#a0e77b330e3582205b63bf01b5bcaa29f">More...</a><br /></td></tr>
<tr class="separator:a0e77b330e3582205b63bf01b5bcaa29f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3164150025b39d959ec8b4921a7aa7d0"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a3164150025b39d959ec8b4921a7aa7d0">mxnet::FIsCUDAGraphsCompatible</a> = std::function&lt; bool(const NodeAttrs &amp;attrs, const bool is_train)&gt;</td></tr>
<tr class="memdesc:a3164150025b39d959ec8b4921a7aa7d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a function to determine if the operator implementation is compatible with CUDA graphs. This requires the execution to stay the same as long as the shape and type of input stays the same. <a href="namespacemxnet.html#a3164150025b39d959ec8b4921a7aa7d0">More...</a><br /></td></tr>
<tr class="separator:a3164150025b39d959ec8b4921a7aa7d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a7cd7094ef222e9ae1f520c3b6a214398"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a7cd7094ef222e9ae1f520c3b6a214398">mxnet::OpReqType</a> { <a class="el" href="namespacemxnet.html#a7cd7094ef222e9ae1f520c3b6a214398a001b85096e07108e174fe4c406368a26">mxnet::kNullOp</a>,
<a class="el" href="namespacemxnet.html#a7cd7094ef222e9ae1f520c3b6a214398a03b4c19f34d3add7deecd7ef6c54b42a">mxnet::kWriteTo</a>,
<a class="el" href="namespacemxnet.html#a7cd7094ef222e9ae1f520c3b6a214398a640322face587ca12684378d0f053d51">mxnet::kWriteInplace</a>,
<a class="el" href="namespacemxnet.html#a7cd7094ef222e9ae1f520c3b6a214398a1b850737dba4d2c42a2687d14c10f383">mxnet::kAddTo</a>
}</td></tr>
<tr class="memdesc:a7cd7094ef222e9ae1f520c3b6a214398"><td class="mdescLeft">&#160;</td><td class="mdescRight">operation request type to Forward and Backward <a href="namespacemxnet.html#a7cd7094ef222e9ae1f520c3b6a214398">More...</a><br /></td></tr>
<tr class="separator:a7cd7094ef222e9ae1f520c3b6a214398"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7801fb2dd68294d4c7a9e289bc071ad"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#ad7801fb2dd68294d4c7a9e289bc071ad">mxnet::ExecType</a> { <a class="el" href="namespacemxnet.html#ad7801fb2dd68294d4c7a9e289bc071adae3bade32f12a5139b27ef40b3689b77c">mxnet::ExecType::kSync</a>,
<a class="el" href="namespacemxnet.html#ad7801fb2dd68294d4c7a9e289bc071ada9f2b960005d2a3a5f35ac32809d84db7">mxnet::ExecType::kAsync</a>,
<a class="el" href="namespacemxnet.html#ad7801fb2dd68294d4c7a9e289bc071ada3864860a073c64d74d3fc8e765fa6cad">mxnet::ExecType::kCrossDeviceCopy</a>,
<a class="el" href="namespacemxnet.html#ad7801fb2dd68294d4c7a9e289bc071adabfccd41d634d8095c956c29c9ee35257">mxnet::ExecType::kSubgraphExec</a>
}</td></tr>
<tr class="memdesc:ad7801fb2dd68294d4c7a9e289bc071ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">the execution type of the operator <a href="namespacemxnet.html#ad7801fb2dd68294d4c7a9e289bc071ad">More...</a><br /></td></tr>
<tr class="separator:ad7801fb2dd68294d4c7a9e289bc071ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad5fec2b4bceabbf4b884460cc2e0a2b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#aad5fec2b4bceabbf4b884460cc2e0a2b">mxnet::DispatchMode</a> { <br />
&#160;&#160;<a class="el" href="namespacemxnet.html#aad5fec2b4bceabbf4b884460cc2e0a2ba7934d40c7c17315d892e8d5d745b1c66">mxnet::DispatchMode::kUndefined</a> = -1,
<a class="el" href="namespacemxnet.html#aad5fec2b4bceabbf4b884460cc2e0a2ba2157864769b54d1d0f8f9be63393e7d6">mxnet::DispatchMode::kFCompute</a>,
<a class="el" href="namespacemxnet.html#aad5fec2b4bceabbf4b884460cc2e0a2ba57f93219462690bc438372ecd92fedd5">mxnet::DispatchMode::kFComputeEx</a>,
<a class="el" href="namespacemxnet.html#aad5fec2b4bceabbf4b884460cc2e0a2ba18bf63b4c196f79c9bca4ad8637e8fef">mxnet::DispatchMode::kFComputeFallback</a>,
<br />
&#160;&#160;<a class="el" href="namespacemxnet.html#aad5fec2b4bceabbf4b884460cc2e0a2bafb751f6ee1af15e773242f2accd2dbff">mxnet::DispatchMode::kVariable</a>
<br />
}</td></tr>
<tr class="memdesc:aad5fec2b4bceabbf4b884460cc2e0a2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">the dispatch mode of the operator <a href="namespacemxnet.html#aad5fec2b4bceabbf4b884460cc2e0a2b">More...</a><br /></td></tr>
<tr class="separator:aad5fec2b4bceabbf4b884460cc2e0a2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e417d85458838afaba8b269f082226d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemxnet.html#a8e417d85458838afaba8b269f082226d">mxnet::QuantizeType</a> { <a class="el" href="namespacemxnet.html#a8e417d85458838afaba8b269f082226da35c3ace1970663a16e5c65baa5941b13">mxnet::QuantizeType::kNone</a> = 0,
<a class="el" href="namespacemxnet.html#a8e417d85458838afaba8b269f082226da9d2303d7a748e1b486e5aeb1f2194610">mxnet::QuantizeType::kMust</a>,
<a class="el" href="namespacemxnet.html#a8e417d85458838afaba8b269f082226daaab0226a1be7a88fdffaa2442c55aa60">mxnet::QuantizeType::kSupport</a>
}</td></tr>
<tr class="memdesc:a8e417d85458838afaba8b269f082226d"><td class="mdescLeft">&#160;</td><td class="mdescRight">the quantization type of the operator <a href="namespacemxnet.html#a8e417d85458838afaba8b269f082226d">More...</a><br /></td></tr>
<tr class="separator:a8e417d85458838afaba8b269f082226d"><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>Additional operator attributes beside the ones provided by NNVM. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 5 2023 03:47:40 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>