blob: 21d3483e7a61beb9931d575ae1493a8345a5cea3 [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 content="text/xhtml;charset=utf-8" http-equiv="Content-Type"/>
<meta content="IE=9" http-equiv="X-UA-Compatible"/>
<meta content="Doxygen 1.8.11" name="generator"/>
<title>mxnet: include/mxnet/ndarray.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script src="jquery.js" type="text/javascript"></script>
<script src="dynsections.js" type="text/javascript"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script src="search/searchdata.js" type="text/javascript"></script>
<script src="search/search.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</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 cellpadding="0" cellspacing="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">mxnet
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div class="tabs" id="navrow1">
<ul class="tablist">
<li><a href="index.html"><span>Main 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 class="MSearchBoxInactive" id="MSearchBox">
<span class="left">
<img alt="" id="MSearchSelect" onmouseout="return searchBox.OnSearchSelectHide()" onmouseover="return searchBox.OnSearchSelectShow()" src="search/mag_sel.png"/>
<input accesskey="S" id="MSearchField" onblur="searchBox.OnSearchFieldFocus(false)" onfocus="searchBox.OnSearchFieldFocus(true)" onkeyup="searchBox.OnSearchFieldChange(event)" type="text" value="Search"/>
</span><span class="right">
<a href="javascript:searchBox.CloseResultsWindow()" id="MSearchClose"><img alt="" border="0" id="MSearchCloseImg" src="search/close.png"/></a>
</span>
</div>
</li>
</ul>
</div>
<div class="tabs2" id="navrow2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>File Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow" onkeydown="return searchBox.OnSearchSelectKey(event)" onmouseout="return searchBox.OnSearchSelectHide()" onmouseover="return searchBox.OnSearchSelectShow()">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe frameborder="0" id="MSearchResults" name="MSearchResults" src="javascript:void(0)">
</iframe>
</div>
<div class="navpath" id="nav-path">
<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="include_2mxnet_2ndarray_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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * KIND, either express or implied. See the License for the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifndef MXNET_NDARRAY_H_</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define MXNET_NDARRAY_H_</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include &lt;dmlc/base.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include &lt;dmlc/logging.h&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include &lt;dmlc/io.h&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include &lt;dmlc/type_traits.h&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include &lt;dmlc/registry.h&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include &lt;nnvm/node.h&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="include_2mxnet_2base_8h.html">./base.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "<a class="code" href="storage_8h.html">./storage.h</a>"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="engine_8h.html">./engine.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include &lt;mkl_memory.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// check c++11</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#if DMLC_USE_CXX11 == 0</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#error "cxx11 was required for ndarray module"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">namespace </span><a class="code" href="namespacemxnet.html">mxnet</a> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// forward declaration</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespacemxnet_1_1autograd.html"> 51</a></span> <span class="keyword">namespace </span>autograd {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">class </span>AGNode;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespacemxnet_1_1autograd.html#a8070fc188711b03b349a39d1b286d4a0"> 54</a></span> <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="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html"> 56</a></span> <span class="keyword">class </span><a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html">AGNodeEntry</a> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ada6b942a22f14e3d61fccb645f9e9a27"> 58</a></span>  <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="l00059"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ad0fccdc6fc5d492306c0eaf6df11880a"> 59</a></span>  uint32_t <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ad0fccdc6fc5d492306c0eaf6df11880a">index</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ae5aa3f0c4136f8e2ca4d5e1e47f1877f"> 60</a></span>  uint32_t <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#ae5aa3f0c4136f8e2ca4d5e1e47f1877f">version</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#a8edff5e8fa169924abe520edcae76c45"> 62</a></span>  <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#a8edff5e8fa169924abe520edcae76c45">clear</a>() {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ag_node.reset();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  index = version = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  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="l00068"></a><span class="lineno"> 68</span>  <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="l00069"></a><span class="lineno"> 69</span> };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">class </span>AutogradRuntime;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> } <span class="comment">// namespace autograd</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html"> 77</a></span> <span class="keyword">class </span><a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756"> 80</a></span>  <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a>() {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  Mkl_mem_ = MKLMemHolder::create();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a8fb6d94c737c452e180650fdfe5228ad"> 92</a></span>  <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;shape, <a class="code" href="structmxnet_1_1Context.html">Context</a> ctx,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">bool</span> delay_alloc = <span class="keyword">false</span>, <span class="keywordtype">int</span> dtype = mshadow::default_type_flag)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  : ptr_(std::make_shared&lt;Chunk&gt;(shape.Size(), ctx, delay_alloc, dtype)),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  shape_(shape), dtype_(dtype), entry_({<span class="keyword">nullptr</span>, 0, 0}) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  Mkl_mem_ = std::make_shared&lt;MKLMemHolder&gt;();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a1a7288505ac9bbb19830161f7e5c1a6f"> 107</a></span>  <a class="code" href="classmxnet_1_1NDArray.html#a1a7288505ac9bbb19830161f7e5c1a6f">NDArray</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1TBlob.html">TBlob</a> &amp;data, <span class="keywordtype">int</span> dev_id)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  : ptr_(std::make_shared&lt;Chunk&gt;(data, dev_id)), shape_(data.shape_),</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  dtype_(data.type_flag_), entry_({<span class="keyword">nullptr</span>, 0, 0}) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  Mkl_mem_ = std::make_shared&lt;MKLMemHolder&gt;();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#abfbb85eb84be64976417ed0b13b1d8ee"> 117</a></span>  <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="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> shape_;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#aebd03e900ec7664a99b780a0cb1efea6"> 123</a></span>  <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="l00124"></a><span class="lineno"> 124</span>  CheckAndAlloc();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  SetTBlob();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> tblob_;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> grad() <span class="keyword">const</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1"> 135</a></span>  <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="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> ptr_-&gt;shandle.ctx;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2"> 141</a></span>  <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="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> dtype_;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c"> 145</a></span>  <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="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> ptr_.get() == <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordtype">bool</span> fresh_out_grad() <span class="keyword">const</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordtype">void</span> set_fresh_out_grad(<span class="keywordtype">bool</span> state) <span class="keyword">const</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#aedd79a43d5fa4173f3ddd719fb939fbc"> 156</a></span>  <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="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#adf925c9b87cbd5969e142123da6c7e30">is_none</a>()) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <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="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a4b88b5d86ec9ddf4ca96701107337461"> 164</a></span>  <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="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html#adf925c9b87cbd5969e142123da6c7e30">is_none</a>()) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <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="l00171"></a><span class="lineno"> 171</span>  <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="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc"> 174</a></span>  <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="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> ptr_-&gt;var;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">void</span> Save(dmlc::Stream *strm) <span class="keyword">const</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordtype">bool</span> Load(dmlc::Stream *strm);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;operator=(<a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> scalar);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;operator+=(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;src);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;operator+=(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;src);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;operator-=(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;src);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;operator-=(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;src);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;operator*=(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;src);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;operator*=(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;src);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;operator/=(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;src);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;operator/=(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;src);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> T() <span class="keyword">const</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> Copy(<a class="code" href="structmxnet_1_1Context.html">Context</a> ctx) <span class="keyword">const</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">void</span> SyncCopyFromCPU(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> size) <span class="keyword">const</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordtype">void</span> SyncCopyToCPU(<span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> size) <span class="keyword">const</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> Slice(<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="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> At(<a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> idx) <span class="keyword">const</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a3896fcce89afce4c1d2f825f7853ca0c"> 303</a></span>  <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;shape, <span class="keywordtype">int</span> dtype)<span class="keyword"> const </span>{</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  CHECK_GE(shape_.Size() * mshadow::mshadow_sizeof(dtype_),</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  shape.Size() * mshadow::mshadow_sizeof(dtype))</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  &lt;&lt; <span class="stringliteral">"NDArray.AsArray: target memory size is bigger"</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span> (Mkl_mem_ != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="comment">// convert prv to cpu</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  Mkl_mem_-&gt;check_and_prv_to_cpu(ptr_-&gt;shandle.dptr);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> ret = *<span class="keyword">this</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  ret.shape_ = shape;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  ret.dtype_ = dtype;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="namespacemxnet_1_1cpp.html#a7b26f5f8ccd20fe25f32d7fd18888c5b">Reshape</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &amp;shape) <span class="keyword">const</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a34a3694141050a257dc6b40a6ad2c4ec"> 327</a></span>  <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="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> ret(*<span class="keyword">this</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  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="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a5ef20369f37a4ff2ceb44adf213871dc"> 333</a></span>  nnvm::Symbol <a class="code" href="classmxnet_1_1NDArray.html#a5ef20369f37a4ff2ceb44adf213871dc">get_autograd_symbol</a>() {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  CHECK(!entry_.is_none())</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  &lt;&lt; <span class="stringliteral">"NDArray is not part of a computation graph. Did you forget to turn on recording?"</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  nnvm::Symbol ret;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  ret.outputs.emplace_back(entry_.nn_entry());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a"> 344</a></span>  <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="l00345"></a><span class="lineno"> 345</span>  ptr_-&gt;CheckAndAlloc();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Save(dmlc::Stream* fo,</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">const</span> std::vector&lt;NDArray&gt;&amp; data,</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; names);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Load(dmlc::Stream* fi,</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  std::vector&lt;NDArray&gt;* data,</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  std::vector&lt;std::string&gt;* keys);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a423cc97aa03ee0dd8bc13781b77b8e50"> 367</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span>autograd::AutogradRuntime;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keyword">struct </span>Chunk {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="structmxnet_1_1Storage_1_1Handle.html">Storage::Handle</a> shandle;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">Engine::VarHandle</a> var;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">bool</span> static_data;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordtype">bool</span> delay_alloc;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  Chunk() : static_data(true), delay_alloc(false) {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  var = <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="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  Chunk(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1TBlob.html">TBlob</a> &amp;data, <span class="keywordtype">int</span> dev_id)</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  : static_data(true),</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  delay_alloc(false) {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  var = <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="l00390"></a><span class="lineno"> 390</span>  <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="l00391"></a><span class="lineno"> 391</span>  shandle.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#ae0a4202582aa12a598f5c55ef51ad4c8">ctx</a> = <a class="code" href="structmxnet_1_1Context.html#a4bb231d70623fde216de51589347e513">Context::CPU</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  CHECK_EQ(data.<a class="code" href="classmxnet_1_1TBlob.html#a613ad1f5ba31efcbecbd041e23cc61b2">dev_mask</a>(), gpu::kDevMask);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  shandle.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#ae0a4202582aa12a598f5c55ef51ad4c8">ctx</a> = <a class="code" href="structmxnet_1_1Context.html#a39d1a2b59bce135da127475995a58671">Context::GPU</a>(dev_id);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  shandle.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#a428e25a6317e50c8b55307c96f8ec595">dptr</a> = data.<a class="code" href="classmxnet_1_1TBlob.html#a4e5f4953be2c16724ecff0afc5ea2e10">dptr_</a>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  shandle.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#ab93b9db0c83e4ef3803fb587377a74a0">size</a> = 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="l00398"></a><span class="lineno"> 398</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  Chunk(uint64_t size, <a class="code" href="structmxnet_1_1Context.html">Context</a> ctx, <span class="keywordtype">bool</span> delay_alloc_, <span class="keywordtype">int</span> dtype)</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  : static_data(false), delay_alloc(true) {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  var = <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="l00403"></a><span class="lineno"> 403</span>  shandle.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#ab93b9db0c83e4ef3803fb587377a74a0">size</a> = size * mshadow::mshadow_sizeof(dtype);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  shandle.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#ae0a4202582aa12a598f5c55ef51ad4c8">ctx</a> = ctx;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span> (!delay_alloc_) this-&gt;CheckAndAlloc();</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> CheckAndAlloc(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">if</span> (delay_alloc) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  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.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#ab93b9db0c83e4ef3803fb587377a74a0">size</a>, shandle.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#ae0a4202582aa12a598f5c55ef51ad4c8">ctx</a>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  delay_alloc = <span class="keyword">false</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  ~Chunk() {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span> (static_data || delay_alloc) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-&gt;<a class="code" href="classmxnet_1_1Engine.html#a738e5192dab345ab0ec9888b095903cf">DeleteVariable</a>([](<a class="code" href="structmxnet_1_1RunContext.html">RunContext</a> s) {}, shandle.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#ae0a4202582aa12a598f5c55ef51ad4c8">ctx</a>, var);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="structmxnet_1_1Storage_1_1Handle.html">Storage::Handle</a> h = this-&gt;shandle;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <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](<a class="code" href="structmxnet_1_1RunContext.html">RunContext</a> s) {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <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="l00422"></a><span class="lineno"> 422</span>  }, shandle.<a class="code" href="structmxnet_1_1Storage_1_1Handle.html#ae0a4202582aa12a598f5c55ef51ad4c8">ctx</a>, var);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  };</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordtype">void</span> SetTBlob()<span class="keyword"> const </span>{</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  tblob_.dptr_ = <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="l00429"></a><span class="lineno"> 429</span>  tblob_.shape_ = shape_;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  tblob_.type_flag_ = dtype_;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  tblob_.SetDLTensor(ptr_-&gt;shandle.ctx.dev_mask(), ptr_-&gt;shandle.ctx.dev_id);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  tblob_.Mkl_mem_ = Mkl_mem_;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  std::shared_ptr&lt;MKLMemHolder&gt; Mkl_mem_;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  std::shared_ptr&lt;Chunk&gt; ptr_;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> shape_;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordtype">size_t</span> byte_offset_ = 0;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordtype">int</span> dtype_ = -1;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="classmxnet_1_1autograd_1_1AGNodeEntry.html">autograd::AGNodeEntry</a> entry_;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keyword">mutable</span> <a class="code" href="classmxnet_1_1TBlob.html">TBlob</a> tblob_;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> };</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#aeee0e64a5e59bb0c222cbf44f4266f7a">CopyFromTo</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;from, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *to, <span class="keywordtype">int</span> priority = 0);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <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, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out, <span class="keywordtype">int</span> priority = 0);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="namespacemxnet.html#a4dafe3aae43025fd21bc44b98c18ed1e">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;rhs);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="namespacemxnet.html#a4dafe3aae43025fd21bc44b98c18ed1e">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &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="l00502"></a><span class="lineno"> 502</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="namespacemxnet.html#ae3356844b657c9ae1b84d3ddd56bccf6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;rhs);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="namespacemxnet.html#ae3356844b657c9ae1b84d3ddd56bccf6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &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="l00516"></a><span class="lineno"> 516</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="namespacemxnet.html#af26b09fbcda865d34ec4fdad482d266a">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;rhs); \</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="namespacemxnet.html#af26b09fbcda865d34ec4fdad482d266a">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &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="l00530"></a><span class="lineno"> 530</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="namespacemxnet.html#a502e3e00dc61cedb9c6eef711f1176ac">operator/</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;rhs);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="namespacemxnet.html#a502e3e00dc61cedb9c6eef711f1176ac">operator/</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &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="l00538"></a><span class="lineno"> 538</span> </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#a5bf83454c8f41259eb9d471f59feda2b">RandomSeed</a>(uint32_t seed);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <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, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> <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, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <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, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <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, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <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, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <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, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <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, <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="comment">//--------------------------------------------------------------</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> <span class="comment">// The following part are API Registration of NDArray functions.</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="comment">//--------------------------------------------------------------</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="keyword">typedef</span> std::function&lt;void (<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars,</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *scalars,</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordtype">int</span> num_params,</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordtype">char</span> **param_keys,</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ab0d55b0edf98cf8f3caeb050662ae9ec"> 603</a></span>  <span class="keywordtype">char</span> **param_vals)&gt; <a class="code" href="namespacemxnet.html#ab0d55b0edf98cf8f3caeb050662ae9ec">NDArrayAPIFunction</a>;</div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818a"> 605</a></span> <span class="keyword">enum</span> <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818a">NDArrayFunctionTypeMask</a> {</div><div class="line"><a name="l00607"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51"> 607</a></span>  <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> = 1,</div><div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aaef9818c8aae9d0046b3d9033a62fcfbb"> 609</a></span>  <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aaef9818c8aae9d0046b3d9033a62fcfbb">kScalarArgBeforeNDArray</a> = 1 &lt;&lt; 1,</div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd"> 618</a></span>  <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a> = 1 &lt;&lt; 2</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> };</div><div class="line"><a name="l00621"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html"> 621</a></span> <span class="keyword">struct </span><a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  : <span class="keyword">public</span> dmlc::FunctionRegEntryBase&lt;NDArrayFunctionReg,</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  NDArrayAPIFunction&gt; {</div><div class="line"><a name="l00625"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29"> 625</a></span>  <span class="keywordtype">unsigned</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29">num_use_vars</a>;</div><div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2"> 627</a></span>  <span class="keywordtype">unsigned</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2">num_mutate_vars</a>;</div><div class="line"><a name="l00629"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95"> 629</a></span>  <span class="keywordtype">unsigned</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95">num_scalars</a>;</div><div class="line"><a name="l00631"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf"> 631</a></span>  <span class="keywordtype">int</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf">type_mask</a>;</div><div class="line"><a name="l00635"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#abd540887b52ba89572ad6a18b4ac739c"> 635</a></span>  <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#abd540887b52ba89572ad6a18b4ac739c">NDArrayFunctionReg</a>()</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  : num_use_vars(0),</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  num_mutate_vars(0),</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  num_scalars(0),</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  type_mask(0) {}</div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa606f0cec91a2e069553f98d7e7addcd"> 646</a></span>  <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="l00647"></a><span class="lineno"> 647</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  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="l00649"></a><span class="lineno"> 649</span>  <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="l00650"></a><span class="lineno"> 650</span>  (*fsetvalue)(s[0], mutate_vars[0]);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  };</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  num_mutate_vars = 1; num_scalars = 1;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  this-&gt;add_argument(<span class="stringliteral">"src"</span>, <span class="stringliteral">"real_t"</span>, <span class="stringliteral">"Source input to the function."</span>);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  }</div><div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa7f4633d042179d90c067aeb8da62060"> 662</a></span>  <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="l00663"></a><span class="lineno"> 663</span>  <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;mhs,</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;rhs,</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  body = [fternary](<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars,</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <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="l00668"></a><span class="lineno"> 668</span>  <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="l00669"></a><span class="lineno"> 669</span>  (*fternary)(*used_vars[0], *used_vars[1], *used_vars[2], mutate_vars[0]);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  };</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  num_use_vars = 3; num_mutate_vars = 1;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  type_mask = <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> | <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  this-&gt;add_argument(<span class="stringliteral">"lhs"</span>, <span class="stringliteral">"NDArray"</span>, <span class="stringliteral">"Left operand to the function."</span>);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  this-&gt;add_argument(<span class="stringliteral">"mhs"</span>, <span class="stringliteral">"NDArray"</span>, <span class="stringliteral">"Middle operand to the function."</span>);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  this-&gt;add_argument(<span class="stringliteral">"rhs"</span>, <span class="stringliteral">"NDArray"</span>, <span class="stringliteral">"Right operand to the function."</span>);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  }</div><div class="line"><a name="l00684"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa57c24a22d49470496b221c72bf7a1a0"> 684</a></span>  <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="l00685"></a><span class="lineno"> 685</span>  <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;rhs,</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  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="l00688"></a><span class="lineno"> 688</span>  <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="l00689"></a><span class="lineno"> 689</span>  (*fbinary)(*used_vars[0], *used_vars[1], mutate_vars[0]);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  };</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  num_use_vars = 2; num_mutate_vars = 1;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  type_mask = <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> | <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  this-&gt;add_argument(<span class="stringliteral">"lhs"</span>, <span class="stringliteral">"NDArray"</span>, <span class="stringliteral">"Left operand to the function."</span>);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  this-&gt;add_argument(<span class="stringliteral">"rhs"</span>, <span class="stringliteral">"NDArray"</span>, <span class="stringliteral">"Right operand to the function."</span>);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  }</div><div class="line"><a name="l00703"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#af6fc4419b30c74139eceb04e7d5758f5"> 703</a></span>  <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="l00704"></a><span class="lineno"> 704</span>  <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &amp;rhs,</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  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="l00707"></a><span class="lineno"> 707</span>  <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="l00708"></a><span class="lineno"> 708</span>  (*fscalar)(*used_vars[0], s[0], mutate_vars[0]);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  };</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  num_use_vars = 1; num_mutate_vars = 1; num_scalars = 1;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  type_mask = <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> | <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a>;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  this-&gt;add_argument(<span class="stringliteral">"lhs"</span>, <span class="stringliteral">"NDArray"</span>, <span class="stringliteral">"Left operand to the function."</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  this-&gt;add_argument(<span class="stringliteral">"rhs"</span>, <span class="stringliteral">"real_t"</span>, <span class="stringliteral">"Right operand to the function."</span>);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  }</div><div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a5f4c0751bc3111a8707b160d0e99e1af"> 722</a></span>  <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="l00723"></a><span class="lineno"> 723</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  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="l00725"></a><span class="lineno"> 725</span>  <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="l00726"></a><span class="lineno"> 726</span>  (*funary)(*used_vars[0], mutate_vars[0]);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  };</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  num_use_vars = 1; num_mutate_vars = 1;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  type_mask = <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> | <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a>;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  this-&gt;add_argument(<span class="stringliteral">"src"</span>, <span class="stringliteral">"NDArray"</span>, <span class="stringliteral">"Source input to the function."</span>);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  }</div><div class="line"><a name="l00739"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a220e1866bea35e103adbe23ff92855d9"> 739</a></span>  <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="l00740"></a><span class="lineno"> 740</span>  <span class="keywordtype">void</span> (*fgeneric)(<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars,</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *s,</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keyword">const</span> std::map&lt;std::string, std::string&gt;&amp; param)) {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  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="l00745"></a><span class="lineno"> 745</span>  <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="l00746"></a><span class="lineno"> 746</span>  std::map&lt;std::string, std::string&gt; param;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; num_params; ++i) {</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  param[param_keys[i]] = param_vals[i];</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  }</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  fgeneric(used_vars, s, mutate_vars, param);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  };</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  }</div><div class="line"><a name="l00759"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a970756506340ff688dbb447858b1963c"> 759</a></span>  <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="l00760"></a><span class="lineno"> 760</span>  num_use_vars = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div><div class="line"><a name="l00767"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#af0a5efd67efe9b7c14abd49652e79a14"> 767</a></span>  <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="l00768"></a><span class="lineno"> 768</span>  num_mutate_vars = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  }</div><div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a4f6a3ba75e30389c827b3b26a12415d1"> 775</a></span>  <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="l00776"></a><span class="lineno"> 776</span>  num_scalars = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  }</div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#acc3656ba948c28d3d155736ce064a3f4"> 783</a></span>  <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="l00784"></a><span class="lineno"> 784</span>  type_mask = tmask; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  }</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> }; <span class="comment">// NDArrayFunctionReg</span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> </div><div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="include_2mxnet_2ndarray_8h.html#a21d0a394bdf34194b9954252d9476d56"> 799</a></span> <span class="preprocessor">#define MXNET_REGISTER_NDARRAY_FUN(name) \</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="preprocessor"> DMLC_REGISTRY_REGISTER(::mxnet::NDArrayFunctionReg, NDArrayFunctionReg, name)</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> </div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> } <span class="comment">// namespace mxnet</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> </div><div class="line"><a name="l00804"></a><span class="lineno"><a class="line" href="namespacedmlc.html"> 804</a></span> <span class="keyword">namespace </span><a class="code" href="namespacedmlc.html">dmlc</a> {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <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="l00807"></a><span class="lineno"> 807</span> } <span class="comment">// namespace dmlc</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="preprocessor">#endif // MXNET_NDARRAY_H_</span></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:767</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:174</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_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:64</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:62</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:635</div></div>
<div class="ttc" id="namespacemxnet_html"><div class="ttname"><a href="namespacemxnet.html">mxnet</a></div><div class="ttdoc">namespace of mxnet </div><div class="ttdef"><b>Definition:</b> base.h:126</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="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:759</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:134</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:631</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:722</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:327</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:66</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:775</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:136</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:627</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:238</div></div>
<div class="ttc" id="structmxnet_1_1Storage_1_1Handle_html_a428e25a6317e50c8b55307c96f8ec595"><div class="ttname"><a href="structmxnet_1_1Storage_1_1Handle.html#a428e25a6317e50c8b55307c96f8ec595">mxnet::Storage::Handle::dptr</a></div><div class="ttdeci">void * dptr</div><div class="ttdoc">Pointer to the data. </div><div class="ttdef"><b>Definition:</b> storage.h:44</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:703</div></div>
<div class="ttc" id="structmxnet_1_1Storage_1_1Handle_html_ae0a4202582aa12a598f5c55ef51ad4c8"><div class="ttname"><a href="structmxnet_1_1Storage_1_1Handle.html#ae0a4202582aa12a598f5c55ef51ad4c8">mxnet::Storage::Handle::ctx</a></div><div class="ttdeci">Context ctx</div><div class="ttdoc">Context information about device and ID. </div><div class="ttdef"><b>Definition:</b> storage.h:52</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:80</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:625</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:662</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_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:56</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:145</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:609</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:62</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="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:618</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:117</div></div>
<div class="ttc" id="namespacedmlc_html"><div class="ttname"><a href="namespacedmlc.html">dmlc</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:804</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:54</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_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:135</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:156</div></div>
<div class="ttc" id="classmxnet_1_1NDArray_html_a5ef20369f37a4ff2ceb44adf213871dc"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a5ef20369f37a4ff2ceb44adf213871dc">mxnet::NDArray::get_autograd_symbol</a></div><div class="ttdeci">nnvm::Symbol get_autograd_symbol()</div><div class="ttdef"><b>Definition:</b> ndarray.h:333</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:141</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:40</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:783</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:102</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:164</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:646</div></div>
<div class="ttc" id="include_2mxnet_2base_8h_html"><div class="ttname"><a href="include_2mxnet_2base_8h.html">base.h</a></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:621</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:222</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:684</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="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:607</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:303</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:629</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_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:123</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:58</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:344</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:59</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:132</div></div>
<div class="ttc" id="structmxnet_1_1Storage_1_1Handle_html_ab93b9db0c83e4ef3803fb587377a74a0"><div class="ttname"><a href="structmxnet_1_1Storage_1_1Handle.html#ab93b9db0c83e4ef3803fb587377a74a0">mxnet::Storage::Handle::size</a></div><div class="ttdeci">size_t size</div><div class="ttdoc">Size of the storage. </div><div class="ttdef"><b>Definition:</b> storage.h:48</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:60</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:141</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:77</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_1NDArray_html_a1a7288505ac9bbb19830161f7e5c1a6f"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a1a7288505ac9bbb19830161f7e5c1a6f">mxnet::NDArray::NDArray</a></div><div class="ttdeci">NDArray(const TBlob &amp;data, int dev_id)</div><div class="ttdoc">constructing a static NDArray that shares data with TBlob Use with caution: allocate ONLY ONE NDArray...</div><div class="ttdef"><b>Definition:</b> ndarray.h:107</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:227</div></div>
<div class="ttc" id="namespacemxnet_1_1cpp_html_a7b26f5f8ccd20fe25f32d7fd18888c5b"><div class="ttname"><a href="namespacemxnet_1_1cpp.html#a7b26f5f8ccd20fe25f32d7fd18888c5b">mxnet::cpp::Reshape</a></div><div class="ttdeci">Symbol Reshape(const std::string &amp;symbol_name, Symbol data, Shape shape=Shape(), bool reverse=false, Shape target_shape=Shape(), bool keep_highest=false)</div><div class="ttdef"><b>Definition:</b> op.h:1156</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:603</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="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:739</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:58</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:92</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:605</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Sep 19 2019 13:11:20 for mxnet by  <a href="http://www.doxygen.org/index.html">
<img alt="doxygen" class="footer" src="doxygen.png"/>
</a> 1.8.11
</small></address>
</body>
</html>