blob: 0d13f42ccdaae8dd95d7c82c03e9bf59f43bf638 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.6"/>
<title>mxnet: include/mxnet/ndarray.h Source File</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/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">mxnet
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a></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="headertitle">
<div class="title">ndarray.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="ndarray_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#ifndef MXNET_NDARRAY_H_</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define MXNET_NDARRAY_H_</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &lt;dmlc/base.h&gt;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;dmlc/logging.h&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;dmlc/io.h&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;dmlc/type_traits.h&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;dmlc/registry.h&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;nnvm/node.h&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="base_8h.html">./base.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="storage_8h.html">./storage.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="engine_8h.html">./engine.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;mkl_memory.h&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="comment">// check c++11</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#if DMLC_USE_CXX11 == 0</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#error &quot;cxx11 was required for ndarray module&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span>mxnet {</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">// forward declaration</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespacemxnet_1_1autograd.html"> 33</a></span>&#160;<span class="keyword">namespace </span>autograd {</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">class </span>AGNode;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespacemxnet_1_1autograd.html#a8070fc188711b03b349a39d1b286d4a0"> 36</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacemxnet_1_1autograd.html#a8070fc188711b03b349a39d1b286d4a0">AGNodePtr</a> = std::shared_ptr&lt;AGNode&gt;;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html"> 38</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html">AGNodeEntry</a> {</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ada6b942a22f14e3d61fccb645f9e9a27"> 40</a></span>&#160; <a class="code" href="namespacemxnet_1_1autograd.html#a8070fc188711b03b349a39d1b286d4a0">AGNodePtr</a> <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ada6b942a22f14e3d61fccb645f9e9a27">ag_node</a>;</div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ad0fccdc6fc5d492306c0eaf6df11880a"> 41</a></span>&#160; uint32_t <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ad0fccdc6fc5d492306c0eaf6df11880a">index</a>;</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ae5aa3f0c4136f8e2ca4d5e1e47f1877f"> 42</a></span>&#160; uint32_t <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ae5aa3f0c4136f8e2ca4d5e1e47f1877f">version</a>;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#a8edff5e8fa169924abe520edcae76c45"> 44</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#a8edff5e8fa169924abe520edcae76c45">clear</a>() {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ada6b942a22f14e3d61fccb645f9e9a27">ag_node</a>.reset();</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ad0fccdc6fc5d492306c0eaf6df11880a">index</a> = <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ae5aa3f0c4136f8e2ca4d5e1e47f1877f">version</a> = 0;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; nnvm::NodeEntry <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#a7dbd6c573b3bc3eda29b9ce9a2d1283a">nn_entry</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#adf925c9b87cbd5969e142123da6c7e30">is_none</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;};</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">class </span>AutogradRuntime;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;} <span class="comment">// namespace autograd</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html"> 59</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> {</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756"> 62</a></span>&#160; <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a>() {</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"></span> Mkl_mem_ = MKLMemHolder::create();</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a8fb6d94c737c452e180650fdfe5228ad"> 74</a></span>&#160; <a class="code" href="classmxnet_1_1NDArray.html#a8fb6d94c737c452e180650fdfe5228ad">NDArray</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#abfbb85eb84be64976417ed0b13b1d8ee">shape</a>, <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>,</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">bool</span> delay_alloc = <span class="keyword">false</span>, <span class="keywordtype">int</span> <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a> = mshadow::default_type_flag)</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; : ptr_(std::make_shared&lt;Chunk&gt;(shape.Size(), ctx, delay_alloc, <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>)),</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; shape_(shape), dtype_(<a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>), entry_({<span class="keyword">nullptr</span>, 0, 0}) {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"></span> Mkl_mem_ = std::make_shared&lt;MKLMemHolder&gt;();</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a>(<span class="keyword">const</span> TBlob &amp;<a class="code" href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6">data</a>, <span class="keywordtype">int</span> dev_id)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; : ptr_(std::make_shared&lt;Chunk&gt;(data, dev_id)), shape_(data.shape_),</div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a09ff97852143fdd75dd1e071d0d53266"> 91</a></span>&#160; dtype_(data.type_flag_), entry_({<span class="keyword">nullptr</span>, 0, 0}) {</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"></span> Mkl_mem_ = std::make_shared&lt;MKLMemHolder&gt;();</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#abfbb85eb84be64976417ed0b13b1d8ee"> 99</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>&amp; <a class="code" href="classmxnet_1_1NDArray.html#abfbb85eb84be64976417ed0b13b1d8ee">shape</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> shape_;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6"> 105</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classmxnet_1_1TBlob.html">TBlob</a>&amp; <a class="code" href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6">data</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">CheckAndAlloc</a>();</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; SetTBlob();</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> tblob_;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1"> 113</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> ptr_-&gt;shandle.ctx;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2"> 119</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> dtype_;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c"> 123</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> ptr_.get() == <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmxnet_1_1NDArray.html#aee74980eb87bf7c482d15458f5194cbe">fresh_out_grad</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a32ed2be4ecf94c58b19bd43b48f2b1fa">set_fresh_out_grad</a>(<span class="keywordtype">bool</span> state) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#aedd79a43d5fa4173f3ddd719fb939fbc"> 134</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#aedd79a43d5fa4173f3ddd719fb939fbc">WaitToRead</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>()) <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Engine.html#aed51bd7f294d9f2b569764a0c151d883">WaitForVar</a>(ptr_-&gt;var);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a4b88b5d86ec9ddf4ca96701107337461"> 142</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a4b88b5d86ec9ddf4ca96701107337461">WaitToWrite</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>()) <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Engine.html#a1c2f38927e4bf7a62e23353b0bd3d619">PushSync</a>([](<a class="code" href="structmxnet_1_1RunContext.html">RunContext</a>) {}, <a class="code" href="structmxnet_1_1Context.html">Context</a>{}, {}, {ptr_-&gt;var});</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Engine.html#aed51bd7f294d9f2b569764a0c151d883">WaitForVar</a>(ptr_-&gt;var);</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc"> 152</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">Engine::VarHandle</a> <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> ptr_-&gt;var;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a524662078483f8f46c6c71714fbfde0b">Save</a>(dmlc::Stream *strm) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classmxnet_1_1NDArray.html#a5203aa033a53942deaecb7bb3bf46480">Load</a>(dmlc::Stream *strm);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#aa7a198e3e4c80a48cf92a913009aab8f">operator=</a>(<a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> scalar);</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#a7df5a5d9956a481635fc43ca4d9a196c">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;src);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#a7df5a5d9956a481635fc43ca4d9a196c">operator+=</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;src);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#ad35ba01da6949494afe895b7429e4fc3">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;src);</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#ad35ba01da6949494afe895b7429e4fc3">operator-=</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;src);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#a1b47078a60bf0369ff0a7df893caf65b">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;src);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#a1b47078a60bf0369ff0a7df893caf65b">operator*=</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;src);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#aebc61006705874666423c45f161df546">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;src);</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#aebc61006705874666423c45f161df546">operator/=</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;src);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a3fe1974c7c2d522b09b9bf82fd2865ba">T</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a4a00e2868ad8b9ccb0a48079635b110f">Copy</a>(<a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a422c70b16646f8a273e9b4936fbe2e37">SyncCopyFromCPU</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6">data</a>, <span class="keywordtype">size_t</span> size) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a4819d2e6431ccdf4b9f8efa8eb0bd1fd">SyncCopyToCPU</a>(<span class="keywordtype">void</span> *<a class="code" href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6">data</a>, <span class="keywordtype">size_t</span> size) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a7acb6462c11e071949db2b0e1fbfd66e">Slice</a>(<a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> begin, <a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> end) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a3b615512a8fb89b9edc99b35064ead95">At</a>(<a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> idx) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a3896fcce89afce4c1d2f825f7853ca0c"> 281</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a3896fcce89afce4c1d2f825f7853ca0c">AsArray</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#abfbb85eb84be64976417ed0b13b1d8ee">shape</a>, <span class="keywordtype">int</span> <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; CHECK_GE(shape_.Size() * mshadow::mshadow_sizeof(dtype_),</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; shape.Size() * mshadow::mshadow_sizeof(dtype))</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; &lt;&lt; <span class="stringliteral">&quot;NDArray.AsArray: target memory size is bigger&quot;</span>;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (Mkl_mem_ != <span class="keyword">nullptr</span>) {</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">// convert prv to cpu</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; Mkl_mem_-&gt;check_and_prv_to_cpu(ptr_-&gt;shandle.dptr);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"></span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> ret = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; ret.shape_ = <a class="code" href="classmxnet_1_1NDArray.html#abfbb85eb84be64976417ed0b13b1d8ee">shape</a>;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; ret.dtype_ = <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#ada618436206b59aa3ffcdb8474d5051c">Reshape</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#abfbb85eb84be64976417ed0b13b1d8ee">shape</a>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a34a3694141050a257dc6b40a6ad2c4ec"> 305</a></span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a34a3694141050a257dc6b40a6ad2c4ec">Detach</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> ret(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; ret.entry_ = <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html">autograd::AGNodeEntry</a>{<span class="keyword">nullptr</span>, 0, 0};</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div>
<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a"> 314</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">CheckAndAlloc</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; ptr_-&gt;CheckAndAlloc();</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a524662078483f8f46c6c71714fbfde0b">Save</a>(dmlc::Stream* fo,</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">const</span> std::vector&lt;NDArray&gt;&amp; <a class="code" href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6">data</a>,</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; names);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a5203aa033a53942deaecb7bb3bf46480">Load</a>(dmlc::Stream* fi,</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; std::vector&lt;NDArray&gt;* <a class="code" href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6">data</a>,</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; std::vector&lt;std::string&gt;* keys);</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a423cc97aa03ee0dd8bc13781b77b8e50"> 337</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classmxnet_1_1NDArray.html#a423cc97aa03ee0dd8bc13781b77b8e50">autograd::AutogradRuntime</a>;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">struct </span>Chunk {</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="structmxnet_1_1Storage_1_1Handle.html">Storage::Handle</a> shandle;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">Engine::VarHandle</a> <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a>;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordtype">bool</span> static_data;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordtype">bool</span> delay_alloc;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; Chunk() : static_data(true), delay_alloc(false) {</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a> = <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">NewVariable</a>();</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; Chunk(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1TBlob.html">TBlob</a> &amp;<a class="code" href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6">data</a>, <span class="keywordtype">int</span> dev_id)</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; : static_data(true),</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; delay_alloc(false) {</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a> = <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">NewVariable</a>();</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span> (data.<a class="code" href="classmxnet_1_1TBlob.html#a613ad1f5ba31efcbecbd041e23cc61b2">dev_mask</a>() == cpu::kDevMask) {</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; shandle.ctx = <a class="code" href="structmxnet_1_1Context.html#a4bb231d70623fde216de51589347e513">Context::CPU</a>();</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; CHECK_EQ(data.<a class="code" href="classmxnet_1_1TBlob.html#a613ad1f5ba31efcbecbd041e23cc61b2">dev_mask</a>(), gpu::kDevMask);</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; shandle.ctx = <a class="code" href="structmxnet_1_1Context.html#a39d1a2b59bce135da127475995a58671">Context::GPU</a>(dev_id);</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; shandle.dptr = data.<a class="code" href="classmxnet_1_1TBlob.html#a4e5f4953be2c16724ecff0afc5ea2e10">dptr_</a>;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; shandle.size = data.<a class="code" href="classmxnet_1_1TBlob.html#a6cc7a57d9c33fefc08630e81951a004f">shape_</a>.Size() * mshadow::mshadow_sizeof(data.<a class="code" href="classmxnet_1_1TBlob.html#a4649b740b80a6045754cb2389cfcca61">type_flag_</a>);</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; Chunk(uint64_t size, Context <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>, <span class="keywordtype">bool</span> delay_alloc_, <span class="keywordtype">int</span> <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>)</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; : static_data(false), delay_alloc(true) {</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a> = <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">NewVariable</a>();</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; shandle.size = size * mshadow::mshadow_sizeof(dtype);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; shandle.ctx = <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>;</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span> (!delay_alloc_) this-&gt;<a class="code" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">CheckAndAlloc</a>();</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">CheckAndAlloc</a>(<span class="keywordtype">void</span>) {</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (delay_alloc) {</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; shandle = <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Storage.html#aaa387e9ae8d66a63438543d640f6cfff">Alloc</a>(shandle.size, shandle.ctx);</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; delay_alloc = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; ~Chunk() {</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (static_data || delay_alloc) {</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Engine.html#a738e5192dab345ab0ec9888b095903cf">DeleteVariable</a>([](RunContext s) {}, shandle.ctx, <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a>);</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; Storage::Handle h = this-&gt;shandle;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Engine.html#a738e5192dab345ab0ec9888b095903cf">DeleteVariable</a>([h](RunContext s) {</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Storage.html#a5bdbd7b3ab712cd9e087ab007bdc64dd">Free</a>(h);</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }, shandle.ctx, <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a>);</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; };</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordtype">void</span> SetTBlob()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; tblob_.<a class="code" href="classmxnet_1_1TBlob.html#a4e5f4953be2c16724ecff0afc5ea2e10">dptr_</a> = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(ptr_-&gt;shandle.dptr) + byte_offset_;</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; tblob_.<a class="code" href="classmxnet_1_1TBlob.html#a6cc7a57d9c33fefc08630e81951a004f">shape_</a> = shape_;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; tblob_.<a class="code" href="classmxnet_1_1TBlob.html#a4649b740b80a6045754cb2389cfcca61">type_flag_</a> = dtype_;</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; tblob_.SetDLTensor(ptr_-&gt;shandle.ctx.dev_mask(), ptr_-&gt;shandle.ctx.dev_id);</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor"></span> tblob_.Mkl_mem_ = Mkl_mem_;</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="preprocessor"></span> std::shared_ptr&lt;MKLMemHolder&gt; Mkl_mem_;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; std::shared_ptr&lt;Chunk&gt; ptr_;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> shape_;</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordtype">size_t</span> byte_offset_ = 0;</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordtype">int</span> dtype_ = -1;</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; autograd::AGNodeEntry entry_;</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">mutable</span> TBlob tblob_;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;};</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#aeee0e64a5e59bb0c222cbf44f4266f7a">CopyFromTo</a>(<span class="keyword">const</span> NDArray &amp;from, NDArray *to, <span class="keywordtype">int</span> priority = 0);</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#a15dfd6f3fa03dc2cf39dbab1225e1a51">ElementwiseSum</a>(<span class="keyword">const</span> std::vector&lt;NDArray&gt; &amp;source, NDArray *out, <span class="keywordtype">int</span> priority = 0);</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;NDArray <a class="code" href="namespacemxnet.html#a4dafe3aae43025fd21bc44b98c18ed1e">operator+</a>(<span class="keyword">const</span> NDArray &amp;lhs, <span class="keyword">const</span> NDArray &amp;rhs);</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;NDArray <a class="code" href="namespacemxnet.html#a4dafe3aae43025fd21bc44b98c18ed1e">operator+</a>(<span class="keyword">const</span> NDArray &amp;lhs, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;rhs);</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;NDArray <a class="code" href="namespacemxnet.html#ae3356844b657c9ae1b84d3ddd56bccf6">operator-</a>(<span class="keyword">const</span> NDArray &amp;lhs, <span class="keyword">const</span> NDArray &amp;rhs);</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;NDArray <a class="code" href="namespacemxnet.html#ae3356844b657c9ae1b84d3ddd56bccf6">operator-</a>(<span class="keyword">const</span> NDArray &amp;lhs, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;rhs);</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;NDArray <a class="code" href="namespacemxnet.html#af26b09fbcda865d34ec4fdad482d266a">operator*</a>(<span class="keyword">const</span> NDArray &amp;lhs, <span class="keyword">const</span> NDArray &amp;rhs); \</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;NDArray <a class="code" href="namespacemxnet.html#af26b09fbcda865d34ec4fdad482d266a">operator*</a>(<span class="keyword">const</span> NDArray &amp;lhs, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;rhs);</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;NDArray <a class="code" href="namespacemxnet.html#a502e3e00dc61cedb9c6eef711f1176ac">operator/</a>(<span class="keyword">const</span> NDArray &amp;lhs, <span class="keyword">const</span> NDArray &amp;rhs);</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;NDArray <a class="code" href="namespacemxnet.html#a502e3e00dc61cedb9c6eef711f1176ac">operator/</a>(<span class="keyword">const</span> NDArray &amp;lhs, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;rhs);</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#a5bf83454c8f41259eb9d471f59feda2b">RandomSeed</a>(uint32_t seed);</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#a2846f4556c9ca9bd0f567504ce60f274">SampleUniform</a>(<a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> begin, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> end, NDArray *out);</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#a5a28062f52ca576a126599e7ad487077">SampleGaussian</a>(<a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> mu, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> sigma, NDArray *out);</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#a050beaa505f11e0b844deb91efe0cac2">SampleGamma</a>(<a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> alpha, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> beta, NDArray *out);</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#a51f9b094369a349c05463de2be9f0a31">SampleExponential</a>(<a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> lambda, NDArray *out);</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#aed55e8197182b7c66126902b2a43739a">SamplePoisson</a>(<a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> lambda, NDArray *out);</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#ae82f70918b2d946f7ad66a158b1733dc">SampleNegBinomial</a>(int32_t k, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> p, NDArray *out);</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#ad8e0dad88ce27133fd24811763b7afdb">SampleGenNegBinomial</a>(<a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> mu, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> alpha, NDArray *out);</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="comment">// The following part are API Registration of NDArray functions.</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="comment">//--------------------------------------------------------------</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="keyword">typedef</span> std::function&lt;void (NDArray **used_vars,</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *scalars,</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; NDArray **mutate_vars,</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordtype">int</span> num_params,</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordtype">char</span> **param_keys,</div>
<div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ab0d55b0edf98cf8f3caeb050662ae9ec"> 573</a></span>&#160; <span class="keywordtype">char</span> **param_vals)&gt; <a class="code" href="namespacemxnet.html#ab0d55b0edf98cf8f3caeb050662ae9ec">NDArrayAPIFunction</a>;</div>
<div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818a"> 575</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818a">NDArrayFunctionTypeMask</a> {</div>
<div class="line"><a name="l00577"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51"> 577</a></span>&#160; <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> = 1,</div>
<div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aaef9818c8aae9d0046b3d9033a62fcfbb"> 579</a></span>&#160; <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aaef9818c8aae9d0046b3d9033a62fcfbb">kScalarArgBeforeNDArray</a> = 1 &lt;&lt; 1,</div>
<div class="line"><a name="l00588"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd"> 588</a></span>&#160; <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a> = 1 &lt;&lt; 2</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;};</div>
<div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html"> 591</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a></div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; : <span class="keyword">public</span> dmlc::FunctionRegEntryBase&lt;NDArrayFunctionReg,</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; NDArrayAPIFunction&gt; {</div>
<div class="line"><a name="l00595"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29"> 595</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29">num_use_vars</a>;</div>
<div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2"> 597</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">num_mutate_vars</a>;</div>
<div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95"> 599</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95">num_scalars</a>;</div>
<div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf"> 601</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf">type_mask</a>;</div>
<div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#abd540887b52ba89572ad6a18b4ac739c"> 605</a></span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#abd540887b52ba89572ad6a18b4ac739c">NDArrayFunctionReg</a>()</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; : <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29">num_use_vars</a>(0),</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">num_mutate_vars</a>(0),</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95">num_scalars</a>(0),</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf">type_mask</a>(0) {}</div>
<div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa606f0cec91a2e069553f98d7e7addcd"> 616</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa606f0cec91a2e069553f98d7e7addcd">set_function</a>(<span class="keywordtype">void</span> (*fsetvalue)(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;rhs,</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; body = [fsetvalue] (<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *s, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordtype">int</span> num_params, <span class="keywordtype">char</span> **param_keys, <span class="keywordtype">char</span> **param_vals) {</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; (*fsetvalue)(s[0], mutate_vars[0]);</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; };</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">num_mutate_vars</a> = 1; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95">num_scalars</a> = 1;</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; this-&gt;add_argument(<span class="stringliteral">&quot;src&quot;</span>, <span class="stringliteral">&quot;real_t&quot;</span>, <span class="stringliteral">&quot;Source input to the function.&quot;</span>);</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div>
<div class="line"><a name="l00632"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa7f4633d042179d90c067aeb8da62060"> 632</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa7f4633d042179d90c067aeb8da62060">set_function</a>(<span class="keywordtype">void</span>(*fternary)(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;lhs,</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;mhs,</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;rhs,</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; body = [fternary](<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars,</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *s, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordtype">int</span> num_params, <span class="keywordtype">char</span> **param_keys, <span class="keywordtype">char</span> **param_vals) {</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; (*fternary)(*used_vars[0], *used_vars[1], *used_vars[2], mutate_vars[0]);</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; };</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29">num_use_vars</a> = 3; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">num_mutate_vars</a> = 1;</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf">type_mask</a> = <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> | <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a>;</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; this-&gt;add_argument(<span class="stringliteral">&quot;lhs&quot;</span>, <span class="stringliteral">&quot;NDArray&quot;</span>, <span class="stringliteral">&quot;Left operand to the function.&quot;</span>);</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; this-&gt;add_argument(<span class="stringliteral">&quot;mhs&quot;</span>, <span class="stringliteral">&quot;NDArray&quot;</span>, <span class="stringliteral">&quot;Middle operand to the function.&quot;</span>);</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; this-&gt;add_argument(<span class="stringliteral">&quot;rhs&quot;</span>, <span class="stringliteral">&quot;NDArray&quot;</span>, <span class="stringliteral">&quot;Right operand to the function.&quot;</span>);</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div>
<div class="line"><a name="l00654"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa57c24a22d49470496b221c72bf7a1a0"> 654</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa57c24a22d49470496b221c72bf7a1a0">set_function</a>(<span class="keywordtype">void</span> (*fbinary)(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;lhs,</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;rhs,</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; body = [fbinary] (<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *s, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordtype">int</span> num_params, <span class="keywordtype">char</span> **param_keys, <span class="keywordtype">char</span> **param_vals) {</div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; (*fbinary)(*used_vars[0], *used_vars[1], mutate_vars[0]);</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; };</div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29">num_use_vars</a> = 2; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">num_mutate_vars</a> = 1;</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf">type_mask</a> = <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> | <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a>;</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; this-&gt;add_argument(<span class="stringliteral">&quot;lhs&quot;</span>, <span class="stringliteral">&quot;NDArray&quot;</span>, <span class="stringliteral">&quot;Left operand to the function.&quot;</span>);</div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; this-&gt;add_argument(<span class="stringliteral">&quot;rhs&quot;</span>, <span class="stringliteral">&quot;NDArray&quot;</span>, <span class="stringliteral">&quot;Right operand to the function.&quot;</span>);</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
<div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#af6fc4419b30c74139eceb04e7d5758f5"> 673</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#af6fc4419b30c74139eceb04e7d5758f5">set_function</a>(<span class="keywordtype">void</span> (*fscalar)(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;lhs,</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;rhs,</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; body = [fscalar] (<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *s, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordtype">int</span> num_params, <span class="keywordtype">char</span> **param_keys, <span class="keywordtype">char</span> **param_vals) {</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; (*fscalar)(*used_vars[0], s[0], mutate_vars[0]);</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; };</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29">num_use_vars</a> = 1; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">num_mutate_vars</a> = 1; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95">num_scalars</a> = 1;</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf">type_mask</a> = <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> | <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a>;</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; this-&gt;add_argument(<span class="stringliteral">&quot;lhs&quot;</span>, <span class="stringliteral">&quot;NDArray&quot;</span>, <span class="stringliteral">&quot;Left operand to the function.&quot;</span>);</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; this-&gt;add_argument(<span class="stringliteral">&quot;rhs&quot;</span>, <span class="stringliteral">&quot;real_t&quot;</span>, <span class="stringliteral">&quot;Right operand to the function.&quot;</span>);</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div>
<div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a5f4c0751bc3111a8707b160d0e99e1af"> 692</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a5f4c0751bc3111a8707b160d0e99e1af">set_function</a>(<span class="keywordtype">void</span> (*funary)(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;src,</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; body = [funary] (<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *s, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordtype">int</span> num_params, <span class="keywordtype">char</span> **param_keys, <span class="keywordtype">char</span> **param_vals) {</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; (*funary)(*used_vars[0], mutate_vars[0]);</div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; };</div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29">num_use_vars</a> = 1; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">num_mutate_vars</a> = 1;</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf">type_mask</a> = <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> | <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a>;</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; this-&gt;add_argument(<span class="stringliteral">&quot;src&quot;</span>, <span class="stringliteral">&quot;NDArray&quot;</span>, <span class="stringliteral">&quot;Source input to the function.&quot;</span>);</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; }</div>
<div class="line"><a name="l00709"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a220e1866bea35e103adbe23ff92855d9"> 709</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a220e1866bea35e103adbe23ff92855d9">set_function</a>(</div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordtype">void</span> (*fgeneric)(<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars,</div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *s,</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keyword">const</span> std::map&lt;std::string, std::string&gt;&amp; param)) {</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; body = [fgeneric] (<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars, <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *s, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordtype">int</span> num_params, <span class="keywordtype">char</span> **param_keys, <span class="keywordtype">char</span> **param_vals) {</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; std::map&lt;std::string, std::string&gt; param;</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; num_params; ++i) {</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; param[param_keys[i]] = param_vals[i];</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; fgeneric(used_vars, s, mutate_vars, param);</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; };</div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; }</div>
<div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a970756506340ff688dbb447858b1963c"> 729</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a970756506340ff688dbb447858b1963c">set_num_use_vars</a>(<span class="keywordtype">unsigned</span> n) {</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29">num_use_vars</a> = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
<div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#af0a5efd67efe9b7c14abd49652e79a14"> 737</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#af0a5efd67efe9b7c14abd49652e79a14">set_num_mutate_vars</a>(<span class="keywordtype">unsigned</span> n) {</div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">num_mutate_vars</a> = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div>
<div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a4f6a3ba75e30389c827b3b26a12415d1"> 745</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a4f6a3ba75e30389c827b3b26a12415d1">set_num_scalars</a>(<span class="keywordtype">unsigned</span> n) {</div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95">num_scalars</a> = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div>
<div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#acc3656ba948c28d3d155736ce064a3f4"> 753</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &amp;<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#acc3656ba948c28d3d155736ce064a3f4">set_type_mask</a>(<span class="keywordtype">int</span> tmask) {</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf">type_mask</a> = tmask; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;}; <span class="comment">// NDArrayFunctionReg</span></div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;</div>
<div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="ndarray_8h.html#a21d0a394bdf34194b9954252d9476d56"> 769</a></span>&#160;<span class="preprocessor">#define MXNET_REGISTER_NDARRAY_FUN(name) \</span></div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;<span class="preprocessor"> DMLC_REGISTRY_REGISTER(::mxnet::NDArrayFunctionReg, NDArrayFunctionReg, name)</span></div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;} <span class="comment">// namespace mxnet</span></div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div>
<div class="line"><a name="l00774"></a><span class="lineno"><a class="line" href="namespacedmlc.html"> 774</a></span>&#160;<span class="keyword">namespace </span>dmlc {</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;<a class="code" href="namespacedmlc.html#a7272c846fa03dee55916aadce0165a46">DMLC_DECLARE_TRAITS</a>(has_saveload, <a class="code" href="classmxnet_1_1NDArray.html">mxnet::NDArray</a>, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;} <span class="comment">// namespace dmlc</span></div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;<span class="preprocessor">#endif // MXNET_NDARRAY_H_</span></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a5203aa033a53942deaecb7bb3bf46480"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a5203aa033a53942deaecb7bb3bf46480">mxnet::NDArray::Load</a></div><div class="ttdeci">bool Load(dmlc::Stream *strm)</div><div class="ttdoc">load the content from binary stream </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_af0a5efd67efe9b7c14abd49652e79a14"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#af0a5efd67efe9b7c14abd49652e79a14">mxnet::NDArrayFunctionReg::set_num_mutate_vars</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_num_mutate_vars(unsigned n)</div><div class="ttdoc">set the number of mutate variables </div><div class="ttdef"><b>Definition:</b> ndarray.h:737</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a35c9b5da0852b480e0114f0865338cbc"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">mxnet::NDArray::var</a></div><div class="ttdeci">Engine::VarHandle var() const </div><div class="ttdef"><b>Definition:</b> ndarray.h:152</div></div>
<div class="ttc" id="namespacemxnet_html_a5bf83454c8f41259eb9d471f59feda2b"><div class="ttname"><a href="namespacemxnet.html#a5bf83454c8f41259eb9d471f59feda2b">mxnet::RandomSeed</a></div><div class="ttdeci">void RandomSeed(uint32_t seed)</div><div class="ttdoc">Seed the random number generator. </div></div>
<div class="ttc" id="engine_8h_html"><div class="ttname"><a href="engine_8h.html">engine.h</a></div><div class="ttdoc">Engine that schedules all the operations according to dependency. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a423cc97aa03ee0dd8bc13781b77b8e50"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a423cc97aa03ee0dd8bc13781b77b8e50">mxnet::NDArray::AutogradRuntime</a></div><div class="ttdeci">friend class autograd::AutogradRuntime</div><div class="ttdef"><b>Definition:</b> ndarray.h:337</div></div>
<div class="ttc" id="classmxnet_1_1TBlob_html_a6cc7a57d9c33fefc08630e81951a004f"><div class="ttname"><a href="classmxnet_1_1TBlob.html#a6cc7a57d9c33fefc08630e81951a004f">mxnet::TBlob::shape_</a></div><div class="ttdeci">TShape shape_</div><div class="ttdoc">shape of the tensor </div><div class="ttdef"><b>Definition:</b> tensor_blob.h:46</div></div>
<div class="ttc" id="classmxnet_1_1autograd_1_1AGNodeEntry_html_a8edff5e8fa169924abe520edcae76c45"><div class="ttname"><a href="classmxnet_1_1autograd_1_1AGNodeEntry.html#a8edff5e8fa169924abe520edcae76c45">mxnet::autograd::AGNodeEntry::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdef"><b>Definition:</b> ndarray.h:44</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_aebc61006705874666423c45f161df546"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aebc61006705874666423c45f161df546">mxnet::NDArray::operator/=</a></div><div class="ttdeci">NDArray &amp; operator/=(const NDArray &amp;src)</div><div class="ttdoc">elementwise division from current ndarray this mutate the current NDArray </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a422c70b16646f8a273e9b4936fbe2e37"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a422c70b16646f8a273e9b4936fbe2e37">mxnet::NDArray::SyncCopyFromCPU</a></div><div class="ttdeci">void SyncCopyFromCPU(const void *data, size_t size) const </div><div class="ttdoc">Do a synchronize copy from a continugous CPU memory region. </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_abd540887b52ba89572ad6a18b4ac739c"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#abd540887b52ba89572ad6a18b4ac739c">mxnet::NDArrayFunctionReg::NDArrayFunctionReg</a></div><div class="ttdeci">NDArrayFunctionReg()</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> ndarray.h:605</div></div>
<div class="ttc" id="namespacemxnet_html_af26b09fbcda865d34ec4fdad482d266a"><div class="ttname"><a href="namespacemxnet.html#af26b09fbcda865d34ec4fdad482d266a">mxnet::operator*</a></div><div class="ttdeci">NDArray operator*(const NDArray &amp;lhs, const NDArray &amp;rhs)</div><div class="ttdoc">elementwise multiplication </div></div>
<div class="ttc" id="classmxnet_1_1Storage_html_a5bdbd7b3ab712cd9e087ab007bdc64dd"><div class="ttname"><a href="classmxnet_1_1Storage.html#a5bdbd7b3ab712cd9e087ab007bdc64dd">mxnet::Storage::Free</a></div><div class="ttdeci">virtual void Free(Handle handle)=0</div><div class="ttdoc">Free storage. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a7acb6462c11e071949db2b0e1fbfd66e"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a7acb6462c11e071949db2b0e1fbfd66e">mxnet::NDArray::Slice</a></div><div class="ttdeci">NDArray Slice(index_t begin, index_t end) const </div><div class="ttdoc">Slice a NDArray. </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_a970756506340ff688dbb447858b1963c"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#a970756506340ff688dbb447858b1963c">mxnet::NDArrayFunctionReg::set_num_use_vars</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_num_use_vars(unsigned n)</div><div class="ttdoc">set the number of mutate variables </div><div class="ttdef"><b>Definition:</b> ndarray.h:729</div></div>
<div class="ttc" id="namespacedmlc_html_a7272c846fa03dee55916aadce0165a46"><div class="ttname"><a href="namespacedmlc.html#a7272c846fa03dee55916aadce0165a46">dmlc::DMLC_DECLARE_TRAITS</a></div><div class="ttdeci">DMLC_DECLARE_TRAITS(has_saveload, mxnet::NDArray, true)</div><div class="ttdoc">traits </div></div>
<div class="ttc" id="namespacemxnet_html_a4421326e33f2a848cb2fa3e70ab24ff4"><div class="ttname"><a href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">mxnet::real_t</a></div><div class="ttdeci">mshadow::default_real_t real_t</div><div class="ttdoc">data type that will be used to store ndarray </div><div class="ttdef"><b>Definition:</b> base.h:109</div></div>
<div class="ttc" id="structmxnet_1_1Context_html_a39d1a2b59bce135da127475995a58671"><div class="ttname"><a href="structmxnet_1_1Context.html#a39d1a2b59bce135da127475995a58671">mxnet::Context::GPU</a></div><div class="ttdeci">static Context GPU(int32_t dev_id=-1)</div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_a0b24615f30e4fbe69ee75c7b319735bf"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf">mxnet::NDArrayFunctionReg::type_mask</a></div><div class="ttdeci">int type_mask</div><div class="ttdoc">information on how function should be called from API </div><div class="ttdef"><b>Definition:</b> ndarray.h:601</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a3fe1974c7c2d522b09b9bf82fd2865ba"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a3fe1974c7c2d522b09b9bf82fd2865ba">mxnet::NDArray::T</a></div><div class="ttdeci">NDArray T() const </div><div class="ttdoc">return transpose of current NDArray </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_a5f4c0751bc3111a8707b160d0e99e1af"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#a5f4c0751bc3111a8707b160d0e99e1af">mxnet::NDArrayFunctionReg::set_function</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_function(void(*funary)(const NDArray &amp;src, NDArray *out))</div><div class="ttdoc">set the function body to a unary NDArray function this will also auto set the parameters correctly ...</div><div class="ttdef"><b>Definition:</b> ndarray.h:692</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a34a3694141050a257dc6b40a6ad2c4ec"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a34a3694141050a257dc6b40a6ad2c4ec">mxnet::NDArray::Detach</a></div><div class="ttdeci">NDArray Detach() const </div><div class="ttdoc">Return a copy of this NDArray without autograd history. </div><div class="ttdef"><b>Definition:</b> ndarray.h:305</div></div>
<div class="ttc" id="classmxnet_1_1TBlob_html_a4649b740b80a6045754cb2389cfcca61"><div class="ttname"><a href="classmxnet_1_1TBlob.html#a4649b740b80a6045754cb2389cfcca61">mxnet::TBlob::type_flag_</a></div><div class="ttdeci">int type_flag_</div><div class="ttdoc">type flag of the tensor blob </div><div class="ttdef"><b>Definition:</b> tensor_blob.h:48</div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_a4f6a3ba75e30389c827b3b26a12415d1"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#a4f6a3ba75e30389c827b3b26a12415d1">mxnet::NDArrayFunctionReg::set_num_scalars</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_num_scalars(unsigned n)</div><div class="ttdoc">set the number of scalar arguments </div><div class="ttdef"><b>Definition:</b> ndarray.h:745</div></div>
<div class="ttc" id="namespacemxnet_html_a6e14bb5f6ffc81892feca8d1da658687"><div class="ttname"><a href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">mxnet::TShape</a></div><div class="ttdeci">nnvm::TShape TShape</div><div class="ttdoc">Shape data structure used to record shape information. </div><div class="ttdef"><b>Definition:</b> base.h:111</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a7df5a5d9956a481635fc43ca4d9a196c"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a7df5a5d9956a481635fc43ca4d9a196c">mxnet::NDArray::operator+=</a></div><div class="ttdeci">NDArray &amp; operator+=(const NDArray &amp;src)</div><div class="ttdoc">elementwise add to current space this mutate the current NDArray </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_ad7881779b7807c6357902bdaccfccde2"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">mxnet::NDArrayFunctionReg::num_mutate_vars</a></div><div class="ttdeci">unsigned num_mutate_vars</div><div class="ttdoc">number of variable mutated by this function </div><div class="ttdef"><b>Definition:</b> ndarray.h:597</div></div>
<div class="ttc" id="structmxnet_1_1RunContext_html"><div class="ttname"><a href="structmxnet_1_1RunContext.html">mxnet::RunContext</a></div><div class="ttdoc">execution time context. The information needed in runtime for actual execution. </div><div class="ttdef"><b>Definition:</b> base.h:213</div></div>
<div class="ttc" id="classmxnet_1_1autograd_1_1AGNodeEntry_html_a7dbd6c573b3bc3eda29b9ce9a2d1283a"><div class="ttname"><a href="classmxnet_1_1autograd_1_1AGNodeEntry.html#a7dbd6c573b3bc3eda29b9ce9a2d1283a">mxnet::autograd::AGNodeEntry::nn_entry</a></div><div class="ttdeci">nnvm::NodeEntry nn_entry() const </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_af6fc4419b30c74139eceb04e7d5758f5"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#af6fc4419b30c74139eceb04e7d5758f5">mxnet::NDArrayFunctionReg::set_function</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_function(void(*fscalar)(const NDArray &amp;lhs, const real_t &amp;rhs, NDArray *out))</div><div class="ttdoc">set the function body to a binary NDArray function this will also auto set the parameters correctly ...</div><div class="ttdef"><b>Definition:</b> ndarray.h:673</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a4819d2e6431ccdf4b9f8efa8eb0bd1fd"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a4819d2e6431ccdf4b9f8efa8eb0bd1fd">mxnet::NDArray::SyncCopyToCPU</a></div><div class="ttdeci">void SyncCopyToCPU(void *data, size_t size) const </div><div class="ttdoc">Do a synchronize copy to a continugous CPU memory region. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a12ec978e5dbe9092d21721a657c39756"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">mxnet::NDArray::NDArray</a></div><div class="ttdeci">NDArray()</div><div class="ttdoc">default constructor </div><div class="ttdef"><b>Definition:</b> ndarray.h:62</div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_aa0847438b4f3f600ec61d6d544755a29"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29">mxnet::NDArrayFunctionReg::num_use_vars</a></div><div class="ttdeci">unsigned num_use_vars</div><div class="ttdoc">number of variable used by this function </div><div class="ttdef"><b>Definition:</b> ndarray.h:595</div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_aa7f4633d042179d90c067aeb8da62060"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#aa7f4633d042179d90c067aeb8da62060">mxnet::NDArrayFunctionReg::set_function</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_function(void(*fternary)(const NDArray &amp;lhs, const NDArray &amp;mhs, const NDArray &amp;rhs, NDArray *out))</div><div class="ttdoc">set the function body to a ternary NDArray function this will also auto set the parameters correctly ...</div><div class="ttdef"><b>Definition:</b> ndarray.h:632</div></div>
<div class="ttc" id="classmxnet_1_1Storage_html_aaa387e9ae8d66a63438543d640f6cfff"><div class="ttname"><a href="classmxnet_1_1Storage.html#aaa387e9ae8d66a63438543d640f6cfff">mxnet::Storage::Alloc</a></div><div class="ttdeci">virtual Handle Alloc(size_t size, Context ctx)=0</div><div class="ttdoc">Allocate a new contiguous memory for a given size. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_ada618436206b59aa3ffcdb8474d5051c"><div class="ttname"><a href="classmxnet_1_1NDArray.html#ada618436206b59aa3ffcdb8474d5051c">mxnet::NDArray::Reshape</a></div><div class="ttdeci">NDArray Reshape(const TShape &amp;shape) const </div><div class="ttdoc">Get an reshaped NDArray. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_aee74980eb87bf7c482d15458f5194cbe"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aee74980eb87bf7c482d15458f5194cbe">mxnet::NDArray::fresh_out_grad</a></div><div class="ttdeci">bool fresh_out_grad() const </div></div>
<div class="ttc" id="classmxnet_1_1autograd_1_1AGNodeEntry_html"><div class="ttname"><a href="classmxnet_1_1autograd_1_1AGNodeEntry.html">mxnet::autograd::AGNodeEntry</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:38</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a2a15ffdbf29d4d5455a4fbb4b607880c"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">mxnet::NDArray::is_none</a></div><div class="ttdeci">bool is_none() const </div><div class="ttdef"><b>Definition:</b> ndarray.h:123</div></div>
<div class="ttc" id="namespacemxnet_html_a89a5f0f5cfd9e1e94604a7b42dda818aaef9818c8aae9d0046b3d9033a62fcfbb"><div class="ttname"><a href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aaef9818c8aae9d0046b3d9033a62fcfbb">mxnet::kScalarArgBeforeNDArray</a></div><div class="ttdoc">all the scalar should go before use_vars </div><div class="ttdef"><b>Definition:</b> ndarray.h:579</div></div>
<div class="ttc" id="namespacemxnet_html_a51f9b094369a349c05463de2be9f0a31"><div class="ttname"><a href="namespacemxnet.html#a51f9b094369a349c05463de2be9f0a31">mxnet::SampleExponential</a></div><div class="ttdeci">void SampleExponential(real_t lambda, NDArray *out)</div><div class="ttdoc">Sample exponential distribution for each elements of out. </div></div>
<div class="ttc" id="classmxnet_1_1TBlob_html_a4e5f4953be2c16724ecff0afc5ea2e10"><div class="ttname"><a href="classmxnet_1_1TBlob.html#a4e5f4953be2c16724ecff0afc5ea2e10">mxnet::TBlob::dptr_</a></div><div class="ttdeci">void * dptr_</div><div class="ttdoc">pointer to the data </div><div class="ttdef"><b>Definition:</b> tensor_blob.h:44</div></div>
<div class="ttc" id="classmxnet_1_1Engine_html_a6e141b188f018d5d933ab99868631d5e"><div class="ttname"><a href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">mxnet::Engine::NewVariable</a></div><div class="ttdeci">virtual VarHandle NewVariable()=0</div><div class="ttdoc">Allocate a new variable, the variable can then be used to schedule the operation concurrently via dep...</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_aa7a198e3e4c80a48cf92a913009aab8f"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aa7a198e3e4c80a48cf92a913009aab8f">mxnet::NDArray::operator=</a></div><div class="ttdeci">NDArray &amp; operator=(real_t scalar)</div><div class="ttdoc">set all the elements in ndarray to be scalar </div></div>
<div class="ttc" id="namespacemxnet_html_a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd"><div class="ttname"><a href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">mxnet::kAcceptEmptyMutateTarget</a></div><div class="ttdoc">whether this function allows the handles in the target to be empty NDArray that are not yet initializ...</div><div class="ttdef"><b>Definition:</b> ndarray.h:588</div></div>
<div class="ttc" id="classmxnet_1_1Storage_html_a96abc072908d72d3271360a7e3e4bbc2"><div class="ttname"><a href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">mxnet::Storage::Get</a></div><div class="ttdeci">static Storage * Get()</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_abfbb85eb84be64976417ed0b13b1d8ee"><div class="ttname"><a href="classmxnet_1_1NDArray.html#abfbb85eb84be64976417ed0b13b1d8ee">mxnet::NDArray::shape</a></div><div class="ttdeci">const TShape &amp; shape() const </div><div class="ttdef"><b>Definition:</b> ndarray.h:99</div></div>
<div class="ttc" id="namespacemxnet_1_1autograd_html_a8070fc188711b03b349a39d1b286d4a0"><div class="ttname"><a href="namespacemxnet_1_1autograd.html#a8070fc188711b03b349a39d1b286d4a0">mxnet::autograd::AGNodePtr</a></div><div class="ttdeci">std::shared_ptr&lt; AGNode &gt; AGNodePtr</div><div class="ttdef"><b>Definition:</b> ndarray.h:36</div></div>
<div class="ttc" id="classmxnet_1_1Engine_html_aed51bd7f294d9f2b569764a0c151d883"><div class="ttname"><a href="classmxnet_1_1Engine.html#aed51bd7f294d9f2b569764a0c151d883">mxnet::Engine::WaitForVar</a></div><div class="ttdeci">virtual void WaitForVar(VarHandle var)=0</div><div class="ttdoc">Wait for a variable. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_ad35ba01da6949494afe895b7429e4fc3"><div class="ttname"><a href="classmxnet_1_1NDArray.html#ad35ba01da6949494afe895b7429e4fc3">mxnet::NDArray::operator-=</a></div><div class="ttdeci">NDArray &amp; operator-=(const NDArray &amp;src)</div><div class="ttdoc">elementwise subtract from current ndarray this mutate the current NDArray </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a5e2eb64751872f537ae3cb25f949fff1"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">mxnet::NDArray::ctx</a></div><div class="ttdeci">Context ctx() const </div><div class="ttdef"><b>Definition:</b> ndarray.h:113</div></div>
<div class="ttc" id="namespacemxnet_html_a5a28062f52ca576a126599e7ad487077"><div class="ttname"><a href="namespacemxnet.html#a5a28062f52ca576a126599e7ad487077">mxnet::SampleGaussian</a></div><div class="ttdeci">void SampleGaussian(real_t mu, real_t sigma, NDArray *out)</div><div class="ttdoc">Sample gaussian distribution for each elements of out. </div></div>
<div class="ttc" id="storage_8h_html"><div class="ttname"><a href="storage_8h.html">storage.h</a></div><div class="ttdoc">Storage manager across multiple devices. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_aedd79a43d5fa4173f3ddd719fb939fbc"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aedd79a43d5fa4173f3ddd719fb939fbc">mxnet::NDArray::WaitToRead</a></div><div class="ttdeci">void WaitToRead() const </div><div class="ttdoc">Block until all the pending write operations with respect to current NDArray are finished, and read can be performed. </div><div class="ttdef"><b>Definition:</b> ndarray.h:134</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a1b6038a196c14d038bd3e6d6bbe36ad2"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">mxnet::NDArray::dtype</a></div><div class="ttdeci">int dtype() const </div><div class="ttdef"><b>Definition:</b> ndarray.h:119</div></div>
<div class="ttc" id="structmxnet_1_1Storage_1_1Handle_html"><div class="ttname"><a href="structmxnet_1_1Storage_1_1Handle.html">mxnet::Storage::Handle</a></div><div class="ttdoc">Storage handle. </div><div class="ttdef"><b>Definition:</b> storage.h:22</div></div>
<div class="ttc" id="classmxnet_1_1Engine_html_a738e5192dab345ab0ec9888b095903cf"><div class="ttname"><a href="classmxnet_1_1Engine.html#a738e5192dab345ab0ec9888b095903cf">mxnet::Engine::DeleteVariable</a></div><div class="ttdeci">virtual void DeleteVariable(SyncFn delete_fn, Context exec_ctx, VarHandle var)=0</div><div class="ttdoc">Schedule the deletion of a variable. </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_acc3656ba948c28d3d155736ce064a3f4"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#acc3656ba948c28d3d155736ce064a3f4">mxnet::NDArrayFunctionReg::set_type_mask</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_type_mask(int tmask)</div><div class="ttdoc">set type mask </div><div class="ttdef"><b>Definition:</b> ndarray.h:753</div></div>
<div class="ttc" id="classmxnet_1_1Engine_html_aac31510c793a12944c33f9cac6150491"><div class="ttname"><a href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">mxnet::Engine::VarHandle</a></div><div class="ttdeci">engine::VarHandle VarHandle</div><div class="ttdoc">Variable pointer. </div><div class="ttdef"><b>Definition:</b> engine.h:84</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a4b88b5d86ec9ddf4ca96701107337461"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a4b88b5d86ec9ddf4ca96701107337461">mxnet::NDArray::WaitToWrite</a></div><div class="ttdeci">void WaitToWrite() const </div><div class="ttdoc">Block until all the pending read/write operations with respect to current NDArray are finished...</div><div class="ttdef"><b>Definition:</b> ndarray.h:142</div></div>
<div class="ttc" id="namespacemxnet_html_ae3356844b657c9ae1b84d3ddd56bccf6"><div class="ttname"><a href="namespacemxnet.html#ae3356844b657c9ae1b84d3ddd56bccf6">mxnet::operator-</a></div><div class="ttdeci">NDArray operator-(const NDArray &amp;lhs, const NDArray &amp;rhs)</div><div class="ttdoc">elementwise subtraction </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_aa606f0cec91a2e069553f98d7e7addcd"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#aa606f0cec91a2e069553f98d7e7addcd">mxnet::NDArrayFunctionReg::set_function</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_function(void(*fsetvalue)(const real_t &amp;rhs, NDArray *out))</div><div class="ttdoc">set the function body to a NDArray setvalue function this will also auto set the parameters correctly...</div><div class="ttdef"><b>Definition:</b> ndarray.h:616</div></div>
<div class="ttc" id="namespacemxnet_html_a4dafe3aae43025fd21bc44b98c18ed1e"><div class="ttname"><a href="namespacemxnet.html#a4dafe3aae43025fd21bc44b98c18ed1e">mxnet::operator+</a></div><div class="ttdeci">NDArray operator+(const NDArray &amp;lhs, const NDArray &amp;rhs)</div><div class="ttdoc">elementwise add </div></div>
<div class="ttc" id="namespacemxnet_html_a2846f4556c9ca9bd0f567504ce60f274"><div class="ttname"><a href="namespacemxnet.html#a2846f4556c9ca9bd0f567504ce60f274">mxnet::SampleUniform</a></div><div class="ttdeci">void SampleUniform(real_t begin, real_t end, NDArray *out)</div><div class="ttdoc">Sample uniform distribution for each elements of out. </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html">mxnet::NDArrayFunctionReg</a></div><div class="ttdoc">Registry entry for NDArrayFunction. </div><div class="ttdef"><b>Definition:</b> ndarray.h:591</div></div>
<div class="ttc" id="classmxnet_1_1Engine_html_a1c2f38927e4bf7a62e23353b0bd3d619"><div class="ttname"><a href="classmxnet_1_1Engine.html#a1c2f38927e4bf7a62e23353b0bd3d619">mxnet::Engine::PushSync</a></div><div class="ttdeci">void PushSync(SyncFn exec_fn, Context exec_ctx, std::vector&lt; VarHandle &gt; const &amp;const_vars, std::vector&lt; VarHandle &gt; const &amp;mutable_vars, FnProperty prop=FnProperty::kNormal, int priority=0, const char *opr_name=nullptr)</div><div class="ttdoc">Push an synchronous operation to the engine. </div><div class="ttdef"><b>Definition:</b> engine.h:204</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a3b615512a8fb89b9edc99b35064ead95"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a3b615512a8fb89b9edc99b35064ead95">mxnet::NDArray::At</a></div><div class="ttdeci">NDArray At(index_t idx) const </div><div class="ttdoc">Index a NDArray. </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_aa57c24a22d49470496b221c72bf7a1a0"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#aa57c24a22d49470496b221c72bf7a1a0">mxnet::NDArrayFunctionReg::set_function</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_function(void(*fbinary)(const NDArray &amp;lhs, const NDArray &amp;rhs, NDArray *out))</div><div class="ttdoc">set the function body to a binary NDArray function this will also auto set the parameters correctly ...</div><div class="ttdef"><b>Definition:</b> ndarray.h:654</div></div>
<div class="ttc" id="structmxnet_1_1Context_html_a4bb231d70623fde216de51589347e513"><div class="ttname"><a href="structmxnet_1_1Context.html#a4bb231d70623fde216de51589347e513">mxnet::Context::CPU</a></div><div class="ttdeci">static Context CPU(int32_t dev_id=0)</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a4a00e2868ad8b9ccb0a48079635b110f"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a4a00e2868ad8b9ccb0a48079635b110f">mxnet::NDArray::Copy</a></div><div class="ttdeci">NDArray Copy(Context ctx) const </div><div class="ttdoc">return a new copy this NDArray </div></div>
<div class="ttc" id="base_8h_html"><div class="ttname"><a href="base_8h.html">base.h</a></div><div class="ttdoc">configuation of mxnet as well as basic data structure. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a1b47078a60bf0369ff0a7df893caf65b"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a1b47078a60bf0369ff0a7df893caf65b">mxnet::NDArray::operator*=</a></div><div class="ttdeci">NDArray &amp; operator*=(const NDArray &amp;src)</div><div class="ttdoc">elementwise multiplication to current ndarray this mutate the current NDArray </div></div>
<div class="ttc" id="namespacemxnet_html_a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51"><div class="ttname"><a href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">mxnet::kNDArrayArgBeforeScalar</a></div><div class="ttdoc">all the use_vars should go before scalar </div><div class="ttdef"><b>Definition:</b> ndarray.h:577</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a3896fcce89afce4c1d2f825f7853ca0c"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a3896fcce89afce4c1d2f825f7853ca0c">mxnet::NDArray::AsArray</a></div><div class="ttdeci">NDArray AsArray(const TShape &amp;shape, int dtype) const </div><div class="ttdoc">Create a NDArray that shares memory with current one The new array must have smaller memory size than...</div><div class="ttdef"><b>Definition:</b> ndarray.h:281</div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_a9591e2abf6cbca0903aec582b96b4d95"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95">mxnet::NDArrayFunctionReg::num_scalars</a></div><div class="ttdeci">unsigned num_scalars</div><div class="ttdoc">number of scalars used by this function </div><div class="ttdef"><b>Definition:</b> ndarray.h:599</div></div>
<div class="ttc" id="classmxnet_1_1Engine_html_ae0a23da15ef63d9479c7468e1f2f825f"><div class="ttname"><a href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">mxnet::Engine::Get</a></div><div class="ttdeci">static Engine * Get()</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a524662078483f8f46c6c71714fbfde0b"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a524662078483f8f46c6c71714fbfde0b">mxnet::NDArray::Save</a></div><div class="ttdeci">void Save(dmlc::Stream *strm) const </div><div class="ttdoc">save the content into binary stream </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_aebd03e900ec7664a99b780a0cb1efea6"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6">mxnet::NDArray::data</a></div><div class="ttdeci">const TBlob &amp; data() const </div><div class="ttdef"><b>Definition:</b> ndarray.h:105</div></div>
<div class="ttc" id="classmxnet_1_1autograd_1_1AGNodeEntry_html_ada6b942a22f14e3d61fccb645f9e9a27"><div class="ttname"><a href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ada6b942a22f14e3d61fccb645f9e9a27">mxnet::autograd::AGNodeEntry::ag_node</a></div><div class="ttdeci">AGNodePtr ag_node</div><div class="ttdef"><b>Definition:</b> ndarray.h:40</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a35c2a2c797f601fbc5d560481b11720a"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">mxnet::NDArray::CheckAndAlloc</a></div><div class="ttdeci">void CheckAndAlloc() const </div><div class="ttdoc">Allocate the space if it is delayed allocated. This is an internal function used by system that norma...</div><div class="ttdef"><b>Definition:</b> ndarray.h:314</div></div>
<div class="ttc" id="classmxnet_1_1autograd_1_1AGNodeEntry_html_ad0fccdc6fc5d492306c0eaf6df11880a"><div class="ttname"><a href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ad0fccdc6fc5d492306c0eaf6df11880a">mxnet::autograd::AGNodeEntry::index</a></div><div class="ttdeci">uint32_t index</div><div class="ttdef"><b>Definition:</b> ndarray.h:41</div></div>
<div class="ttc" id="namespacemxnet_html_abadedc1b42ee3e5b8852e63783b982ef"><div class="ttname"><a href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">mxnet::index_t</a></div><div class="ttdeci">mshadow::index_t index_t</div><div class="ttdoc">index type usually use unsigned </div><div class="ttdef"><b>Definition:</b> base.h:107</div></div>
<div class="ttc" id="classmxnet_1_1autograd_1_1AGNodeEntry_html_adf925c9b87cbd5969e142123da6c7e30"><div class="ttname"><a href="classmxnet_1_1autograd_1_1AGNodeEntry.html#adf925c9b87cbd5969e142123da6c7e30">mxnet::autograd::AGNodeEntry::is_none</a></div><div class="ttdeci">bool is_none() const </div></div>
<div class="ttc" id="classmxnet_1_1autograd_1_1AGNodeEntry_html_ae5aa3f0c4136f8e2ca4d5e1e47f1877f"><div class="ttname"><a href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ae5aa3f0c4136f8e2ca4d5e1e47f1877f">mxnet::autograd::AGNodeEntry::version</a></div><div class="ttdeci">uint32_t version</div><div class="ttdef"><b>Definition:</b> ndarray.h:42</div></div>
<div class="ttc" id="namespacemxnet_html_ad8e0dad88ce27133fd24811763b7afdb"><div class="ttname"><a href="namespacemxnet.html#ad8e0dad88ce27133fd24811763b7afdb">mxnet::SampleGenNegBinomial</a></div><div class="ttdeci">void SampleGenNegBinomial(real_t mu, real_t alpha, NDArray *out)</div><div class="ttdoc">Sample generalized negative binomial distribution for each elements of out. </div></div>
<div class="ttc" id="structmxnet_1_1Context_html"><div class="ttname"><a href="structmxnet_1_1Context.html">mxnet::Context</a></div><div class="ttdoc">Context information about the execution environment. </div><div class="ttdef"><b>Definition:</b> base.h:116</div></div>
<div class="ttc" id="namespacemxnet_html_aed55e8197182b7c66126902b2a43739a"><div class="ttname"><a href="namespacemxnet.html#aed55e8197182b7c66126902b2a43739a">mxnet::SamplePoisson</a></div><div class="ttdeci">void SamplePoisson(real_t lambda, NDArray *out)</div><div class="ttdoc">Sample Poisson distribution for each elements of out. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html"><div class="ttname"><a href="classmxnet_1_1NDArray.html">mxnet::NDArray</a></div><div class="ttdoc">ndarray interface </div><div class="ttdef"><b>Definition:</b> ndarray.h:59</div></div>
<div class="ttc" id="namespacemxnet_html_aeee0e64a5e59bb0c222cbf44f4266f7a"><div class="ttname"><a href="namespacemxnet.html#aeee0e64a5e59bb0c222cbf44f4266f7a">mxnet::CopyFromTo</a></div><div class="ttdeci">void CopyFromTo(const NDArray &amp;from, NDArray *to, int priority=0)</div><div class="ttdoc">issue an copy operation from one NDArray to another the two ndarray can sit on different devices this...</div></div>
<div class="ttc" id="classmxnet_1_1TBlob_html_a613ad1f5ba31efcbecbd041e23cc61b2"><div class="ttname"><a href="classmxnet_1_1TBlob.html#a613ad1f5ba31efcbecbd041e23cc61b2">mxnet::TBlob::dev_mask</a></div><div class="ttdeci">int dev_mask() const </div><div class="ttdoc">device mask of the corresponding device </div><div class="ttdef"><b>Definition:</b> tensor_blob.h:209</div></div>
<div class="ttc" id="namespacemxnet_html_a15dfd6f3fa03dc2cf39dbab1225e1a51"><div class="ttname"><a href="namespacemxnet.html#a15dfd6f3fa03dc2cf39dbab1225e1a51">mxnet::ElementwiseSum</a></div><div class="ttdeci">void ElementwiseSum(const std::vector&lt; NDArray &gt; &amp;source, NDArray *out, int priority=0)</div><div class="ttdoc">Perform elementwise sum over each data from source, store result into out. </div></div>
<div class="ttc" id="namespacemxnet_html_ab0d55b0edf98cf8f3caeb050662ae9ec"><div class="ttname"><a href="namespacemxnet.html#ab0d55b0edf98cf8f3caeb050662ae9ec">mxnet::NDArrayAPIFunction</a></div><div class="ttdeci">std::function&lt; void(NDArray **used_vars, real_t *scalars, NDArray **mutate_vars, int num_params, char **param_keys, char **param_vals)&gt; NDArrayAPIFunction</div><div class="ttdoc">definition of NDArray function </div><div class="ttdef"><b>Definition:</b> ndarray.h:573</div></div>
<div class="ttc" id="namespacemxnet_html_ae82f70918b2d946f7ad66a158b1733dc"><div class="ttname"><a href="namespacemxnet.html#ae82f70918b2d946f7ad66a158b1733dc">mxnet::SampleNegBinomial</a></div><div class="ttdeci">void SampleNegBinomial(int32_t k, real_t p, NDArray *out)</div><div class="ttdoc">Sample negative binomial distribution for each elements of out. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a32ed2be4ecf94c58b19bd43b48f2b1fa"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a32ed2be4ecf94c58b19bd43b48f2b1fa">mxnet::NDArray::set_fresh_out_grad</a></div><div class="ttdeci">void set_fresh_out_grad(bool state) const </div></div>
<div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_a220e1866bea35e103adbe23ff92855d9"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#a220e1866bea35e103adbe23ff92855d9">mxnet::NDArrayFunctionReg::set_function</a></div><div class="ttdeci">NDArrayFunctionReg &amp; set_function(void(*fgeneric)(NDArray **used_vars, real_t *s, NDArray **mutate_vars, const std::map&lt; std::string, std::string &gt; &amp;param))</div><div class="ttdoc">set the function body to a unary NDArray function this will also auto set the parameters correctly ...</div><div class="ttdef"><b>Definition:</b> ndarray.h:709</div></div>
<div class="ttc" id="classmxnet_1_1TBlob_html"><div class="ttname"><a href="classmxnet_1_1TBlob.html">mxnet::TBlob</a></div><div class="ttdoc">tensor blob class that can be used to hold tensor of any dimension, any device and any data type...</div><div class="ttdef"><b>Definition:</b> tensor_blob.h:40</div></div>
<div class="ttc" id="namespacemxnet_html_a050beaa505f11e0b844deb91efe0cac2"><div class="ttname"><a href="namespacemxnet.html#a050beaa505f11e0b844deb91efe0cac2">mxnet::SampleGamma</a></div><div class="ttdeci">void SampleGamma(real_t alpha, real_t beta, NDArray *out)</div><div class="ttdoc">Sample gamma distribution for each elements of out. </div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a8fb6d94c737c452e180650fdfe5228ad"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a8fb6d94c737c452e180650fdfe5228ad">mxnet::NDArray::NDArray</a></div><div class="ttdeci">NDArray(const TShape &amp;shape, Context ctx, bool delay_alloc=false, int dtype=mshadow::default_type_flag)</div><div class="ttdoc">constructs a new dynamic NDArray </div><div class="ttdef"><b>Definition:</b> ndarray.h:74</div></div>
<div class="ttc" id="namespacemxnet_html_a502e3e00dc61cedb9c6eef711f1176ac"><div class="ttname"><a href="namespacemxnet.html#a502e3e00dc61cedb9c6eef711f1176ac">mxnet::operator/</a></div><div class="ttdeci">NDArray operator/(const NDArray &amp;lhs, const NDArray &amp;rhs)</div><div class="ttdoc">elementwise division </div></div>
<div class="ttc" id="namespacemxnet_html_a89a5f0f5cfd9e1e94604a7b42dda818a"><div class="ttname"><a href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818a">mxnet::NDArrayFunctionTypeMask</a></div><div class="ttdeci">NDArrayFunctionTypeMask</div><div class="ttdoc">mask information on how functions can be exposed </div><div class="ttdef"><b>Definition:</b> ndarray.h:575</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Aug 6 2017 07:14:31 for mxnet by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>