| <!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.6" 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/search.js" type="text/javascript"></script> |
| <script type="text/javascript"> |
| $(document).ready(function() { searchBox.OnSelectItem(0); }); |
| </script> |
| <link href="doxygen.css" rel="stylesheet" type="text/css"/> |
| </head> |
| <body> |
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> |
| <div id="titlearea"> |
| <table cellpadding="0" cellspacing="0"> |
| <tbody> |
| <tr style="height: 56px;"> |
| <td style="padding-left: 0.5em;"> |
| <div id="projectname">mxnet |
| </div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <!-- end header part --> |
| <!-- Generated by Doxygen 1.8.6 --> |
| <script type="text/javascript"> |
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
| </script> |
| <div 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()"> |
| <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a></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="ndarray_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <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="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#ifndef MXNET_NDARRAY_H_</span></div> |
| <div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor"></span><span class="preprocessor">#define MXNET_NDARRAY_H_</span></div> |
| <div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"></span></div> |
| <div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <dmlc/base.h></span></div> |
| <div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <dmlc/logging.h></span></div> |
| <div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <dmlc/io.h></span></div> |
| <div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <dmlc/type_traits.h></span></div> |
| <div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <dmlc/registry.h></span></div> |
| <div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <nnvm/node.h></span></div> |
| <div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <vector></span></div> |
| <div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <map></span></div> |
| <div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <string></span></div> |
| <div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <memory></span></div> |
| <div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "<a class="code" href="base_8h.html">./base.h</a>"</span></div> |
| <div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="storage_8h.html">./storage.h</a>"</span></div> |
| <div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="engine_8h.html">./engine.h</a>"</span></div> |
| <div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"></span><span class="preprocessor">#include <mkl_memory.h></span></div> |
| <div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"></span><span class="comment">// check c++11</span></div> |
| <div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#if DMLC_USE_CXX11 == 0</span></div> |
| <div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"></span><span class="preprocessor">#error "cxx11 was required for ndarray module"</span></div> |
| <div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"></span></div> |
| <div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">namespace </span>mxnet {</div> |
| <div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// enum for storage types</span></div> |
| <div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespacemxnet_1_1csr.html"> 51</a></span> <span class="keyword">namespace </span>csr {</div> |
| <div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42ad9dcbaec1c8c6ca9d69648c83354aac1"> 52</a></span> <span class="keyword">enum</span> <a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42">CSRAuxType</a> {<a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42ad9dcbaec1c8c6ca9d69648c83354aac1">kIndPtr</a>, <a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7">kIdx</a>};</div> |
| <div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div> |
| <div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div> |
| <div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespacemxnet_1_1rowsparse.html"> 55</a></span> <span class="keyword">namespace </span>rowsparse {</div> |
| <div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232"> 56</a></span> <span class="keyword">enum</span> <a class="code" href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232">RowSparseAuxType</a> {<a class="code" href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232ac52a46037d8cfe90ccc5da8712c7f6da">kIdx</a>};</div> |
| <div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div> |
| <div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div> |
| <div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a"> 59</a></span> <span class="keyword">enum</span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">NDArrayStorageType</a> {</div> |
| <div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aadf6c6faf0de1e55119c679180c99e584"> 60</a></span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aadf6c6faf0de1e55119c679180c99e584">kUndefinedStorage</a> = -1, <span class="comment">// undefined storage</span></div> |
| <div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608"> 61</a></span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>, <span class="comment">// dense</span></div> |
| <div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3"> 62</a></span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">kRowSparseStorage</a>, <span class="comment">// row sparse</span></div> |
| <div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254"> 63</a></span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">kCSRStorage</a>, <span class="comment">// csr</span></div> |
| <div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div> |
| <div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div> |
| <div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1a"> 66</a></span> <span class="keyword">enum</span> <a class="code" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1a">NDArrayFormatErr</a> {</div> |
| <div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa322b8b178929b43f1b4b16c8cb9003ef"> 67</a></span> <a class="code" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa322b8b178929b43f1b4b16c8cb9003ef">kNormalErr</a>, <span class="comment">// normal</span></div> |
| <div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aaf64429479d4a48998e6cd122a3117628"> 68</a></span> <a class="code" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aaf64429479d4a48998e6cd122a3117628">kCSRShapeErr</a>, <span class="comment">// shape mismatch for csr</span></div> |
| <div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa11ce5dbb8ad355e9ee5a678f2f51a5bb"> 69</a></span> <a class="code" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa11ce5dbb8ad355e9ee5a678f2f51a5bb">kCSRIndPtrErr</a>, <span class="comment">// indptr error for csr</span></div> |
| <div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aaf3ee084ba1d9a6203922ff7c9ddb12e3"> 70</a></span> <a class="code" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aaf3ee084ba1d9a6203922ff7c9ddb12e3">kCSRIdxErr</a>, <span class="comment">// idx error for csr</span></div> |
| <div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa200492eeec6fa431683ef0d943bfbc2d"> 71</a></span> <a class="code" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa200492eeec6fa431683ef0d943bfbc2d">kRSPShapeErr</a>, <span class="comment">// shape mismatch for row sparse</span></div> |
| <div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa7636cc230df4abe46f3210846faac799"> 72</a></span> <a class="code" href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa7636cc230df4abe46f3210846faac799">kRSPIdxErr</a>, <span class="comment">// indices error for row sparse</span></div> |
| <div class="line"><a name="l00073"></a><span class="lineno"> 73</span> };</div> |
| <div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div> |
| <div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div> |
| <div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html"> 79</a></span> <span class="keyword">class </span><a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> {</div> |
| <div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">public</span>:</div> |
| <div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756"> 82</a></span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a>() {</div> |
| <div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"></span> Mkl_mem_ = MKLMemHolder::create();</div> |
| <div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"></span> }</div> |
| <div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a8fb6d94c737c452e180650fdfe5228ad"> 94</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> &shape, <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>,</div> |
| <div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">bool</span> delay_alloc = <span class="keyword">false</span>, <span class="keywordtype">int</span> <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a> = mshadow::default_type_flag)</div> |
| <div class="line"><a name="l00096"></a><span class="lineno"> 96</span> : ptr_(std::make_shared<Chunk>(shape, ctx, delay_alloc, <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>)),</div> |
| <div class="line"><a name="l00097"></a><span class="lineno"> 97</span> shape_(shape), dtype_(<a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>), storage_type_(<a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>),</div> |
| <div class="line"><a name="l00098"></a><span class="lineno"> 98</span> entry_({<span class="keyword">nullptr</span>, 0, 0}) {</div> |
| <div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor"></span> Mkl_mem_ = std::make_shared<MKLMemHolder>();</div> |
| <div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor"></span> }</div> |
| <div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">NDArrayStorageType</a> stype, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &shape, Context <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>,</div> |
| <div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keywordtype">bool</span> delay_alloc = <span class="keyword">true</span>, <span class="keywordtype">int</span> <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a> = mshadow::default_type_flag,</div> |
| <div class="line"><a name="l00107"></a><span class="lineno"> 107</span> std::vector<int> aux_types = {}, std::vector<TShape> aux_shapes = {},</div> |
| <div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> storage_shape = <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>(mshadow::Shape1(0)))</div> |
| <div class="line"><a name="l00109"></a><span class="lineno"> 109</span> : shape_(shape), dtype_(<a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>), storage_type_(stype),</div> |
| <div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a09ff97852143fdd75dd1e071d0d53266"> 110</a></span> <a class="code" href="classmxnet_1_1NDArray.html#a09ff97852143fdd75dd1e071d0d53266">entry_</a>({<span class="keyword">nullptr</span>, 0, 0}) {</div> |
| <div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// Assign default aux types if not given</span></div> |
| <div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">if</span> (aux_types.size() == 0) {</div> |
| <div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">kRowSparseStorage</a>) {</div> |
| <div class="line"><a name="l00114"></a><span class="lineno"> 114</span> aux_types = {mshadow::kInt64};</div> |
| <div class="line"><a name="l00115"></a><span class="lineno"> 115</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">kCSRStorage</a>) {</div> |
| <div class="line"><a name="l00116"></a><span class="lineno"> 116</span> aux_types = {mshadow::kInt64, mshadow::kInt64};</div> |
| <div class="line"><a name="l00117"></a><span class="lineno"> 117</span> } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00118"></a><span class="lineno"> 118</span> LOG(FATAL) << <span class="stringliteral">"Unknown storage type "</span> << stype;</div> |
| <div class="line"><a name="l00119"></a><span class="lineno"> 119</span> }</div> |
| <div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div> |
| <div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// Assign default shapes if not given</span></div> |
| <div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// unknown shapes are intialized as {0} such that Size() would return 0</span></div> |
| <div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">if</span> (aux_shapes.size() == 0) {</div> |
| <div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">kRowSparseStorage</a>) {</div> |
| <div class="line"><a name="l00125"></a><span class="lineno"> 125</span> aux_shapes = {<a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>(mshadow::Shape1(0))};</div> |
| <div class="line"><a name="l00126"></a><span class="lineno"> 126</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">kCSRStorage</a>) {</div> |
| <div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// aux shapes for indptr and indices</span></div> |
| <div class="line"><a name="l00128"></a><span class="lineno"> 128</span> aux_shapes = {<a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>(mshadow::Shape1(0)), <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>(mshadow::Shape1(0))};</div> |
| <div class="line"><a name="l00129"></a><span class="lineno"> 129</span> } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00130"></a><span class="lineno"> 130</span> LOG(FATAL) << <span class="stringliteral">"Unknown storage type "</span> << stype;</div> |
| <div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div> |
| <div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div> |
| <div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">if</span> (storage_shape.Size() == 0) {</div> |
| <div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">kRowSparseStorage</a>) {</div> |
| <div class="line"><a name="l00135"></a><span class="lineno"> 135</span> storage_shape = shape;</div> |
| <div class="line"><a name="l00136"></a><span class="lineno"> 136</span> storage_shape[0] = aux_shapes[<a class="code" href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232ac52a46037d8cfe90ccc5da8712c7f6da">rowsparse::kIdx</a>][0];</div> |
| <div class="line"><a name="l00137"></a><span class="lineno"> 137</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">kCSRStorage</a>) {</div> |
| <div class="line"><a name="l00138"></a><span class="lineno"> 138</span> storage_shape = aux_shapes[<a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7">csr::kIdx</a>];</div> |
| <div class="line"><a name="l00139"></a><span class="lineno"> 139</span> } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00140"></a><span class="lineno"> 140</span> LOG(FATAL) << <span class="stringliteral">"Unknown storage type "</span> << stype;</div> |
| <div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div> |
| <div class="line"><a name="l00142"></a><span class="lineno"> 142</span> }</div> |
| <div class="line"><a name="l00143"></a><span class="lineno"> 143</span> ptr_ = std::make_shared<Chunk>(stype, storage_shape, <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>, delay_alloc,</div> |
| <div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>, aux_types, aux_shapes);</div> |
| <div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor"></span> Mkl_mem_ = std::make_shared<MKLMemHolder>();</div> |
| <div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor"></span> }</div> |
| <div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a1a7288505ac9bbb19830161f7e5c1a6f"> 156</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> &data, <span class="keywordtype">int</span> dev_id)</div> |
| <div class="line"><a name="l00157"></a><span class="lineno"> 157</span> : ptr_(std::make_shared<Chunk>(data, dev_id)), shape_(data.shape_),</div> |
| <div class="line"><a name="l00158"></a><span class="lineno"> 158</span> dtype_(data.type_flag_), storage_type_(<a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>),</div> |
| <div class="line"><a name="l00159"></a><span class="lineno"> 159</span> entry_({<span class="keyword">nullptr</span>, 0, 0}) {</div> |
| <div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor"></span> Mkl_mem_ = std::make_shared<MKLMemHolder>();</div> |
| <div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor"></span> }</div> |
| <div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a>(<span class="keywordtype">int</span> shared_pid, <span class="keywordtype">int</span> shared_id, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>& shape, <span class="keywordtype">int</span> <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>)</div> |
| <div class="line"><a name="l00166"></a><span class="lineno"> 166</span> : ptr_(std::make_shared<Chunk>(shared_pid, shared_id, shape, dtype)), shape_(shape),</div> |
| <div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a09ff97852143fdd75dd1e071d0d53266"> 167</a></span> dtype_(dtype), storage_type_(<a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>), entry_({<span class="keyword">nullptr</span>, 0, 0}) {</div> |
| <div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor"></span> Mkl_mem_ = std::make_shared<MKLMemHolder>();</div> |
| <div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"></span> }</div> |
| <div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div> |
| <div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a6bdd6008f99b9f05ae45d44fa13d013e"> 183</a></span> <a class="code" href="classmxnet_1_1NDArray.html#a6bdd6008f99b9f05ae45d44fa13d013e">NDArray</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">NDArrayStorageType</a> stype, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &shape,</div> |
| <div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keyword">const</span> <a class="code" href="classmxnet_1_1TBlob.html">TBlob</a> &data, <span class="keyword">const</span> std::vector<TBlob> &<a class="code" href="classmxnet_1_1NDArray.html#ad8194805eabb65d8a9d33fda840b66a9">aux_data</a>, <span class="keywordtype">int</span> dev_id)</div> |
| <div class="line"><a name="l00185"></a><span class="lineno"> 185</span> : ptr_(std::make_shared<Chunk>(stype, data, aux_data, dev_id)), shape_(shape),</div> |
| <div class="line"><a name="l00186"></a><span class="lineno"> 186</span> dtype_(data.type_flag_), storage_type_(stype), entry_({<span class="keyword">nullptr</span>, 0, 0}) {</div> |
| <div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor"></span> Mkl_mem_ = std::make_shared<MKLMemHolder>();</div> |
| <div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor"></span> }</div> |
| <div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div> |
| <div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div> |
| <div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>& shape()<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">return</span> shape_;</div> |
| <div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div> |
| <div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &storage_shape()<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00205"></a><span class="lineno"> 205</span> CHECK(ptr_ != <span class="keyword">nullptr</span>);</div> |
| <div class="line"><a name="l00206"></a><span class="lineno"> 206</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00207"></a><span class="lineno"> 207</span> << <span class="stringliteral">"storage_shape() is not intended for kDefaultStorage."</span>;</div> |
| <div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">return</span> ptr_->storage_shape;</div> |
| <div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div> |
| <div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div> |
| <div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>& aux_shape(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00217"></a><span class="lineno"> 217</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00218"></a><span class="lineno"> 218</span> << <span class="stringliteral">"aux_shape() is not intended for kDefaultStorage."</span>;</div> |
| <div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">return</span> ptr_->aux_shapes[index];</div> |
| <div class="line"><a name="l00220"></a><span class="lineno"> 220</span> }</div> |
| <div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div> |
| <div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="comment">/* \return the shapes of all aux data */</span></div> |
| <div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="keyword">const</span> std::vector<TShape>& aux_shapes()<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00224"></a><span class="lineno"> 224</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00225"></a><span class="lineno"> 225</span> << <span class="stringliteral">"aux_shapes() is not intended for kDefaultStorage."</span>;</div> |
| <div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keywordflow">return</span> ptr_->aux_shapes;</div> |
| <div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div> |
| <div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div> |
| <div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword">const</span> std::vector<int>& aux_types()<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00231"></a><span class="lineno"> 231</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00232"></a><span class="lineno"> 232</span> << <span class="stringliteral">"aux_types() is not intended for kDefaultStorage."</span>;</div> |
| <div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keywordflow">return</span> ptr_->aux_types;</div> |
| <div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div> |
| <div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div> |
| <div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> set_aux_shape(<span class="keywordtype">size_t</span> index, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>& shape)<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00244"></a><span class="lineno"> 244</span> ptr_->set_aux_shape(index, shape);</div> |
| <div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div> |
| <div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div> |
| <div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keyword">inline</span> <span class="keyword">const</span> TBlob& data()<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>() == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>) <a class="code" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">CheckAndAlloc</a>();</div> |
| <div class="line"><a name="l00252"></a><span class="lineno"> 252</span> SetTBlob();</div> |
| <div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">return</span> tblob_;</div> |
| <div class="line"><a name="l00254"></a><span class="lineno"> 254</span> }</div> |
| <div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> grad() <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div> |
| <div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#ad8194805eabb65d8a9d33fda840b66a9"> 263</a></span> <span class="keyword">inline</span> <a class="code" href="classmxnet_1_1TBlob.html">TBlob</a> <a class="code" href="classmxnet_1_1NDArray.html#ad8194805eabb65d8a9d33fda840b66a9">aux_data</a>(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="keyword">auto</span> stype = <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>();</div> |
| <div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <a class="code" href="classmxnet_1_1TBlob.html">TBlob</a> res;</div> |
| <div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="keyword">auto</span> shape = aux_shape(i);</div> |
| <div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword">auto</span> type = <a class="code" href="classmxnet_1_1NDArray.html#a02fe304d3498632571fea1a7c1fd91d6">aux_type</a>(i);</div> |
| <div class="line"><a name="l00268"></a><span class="lineno"> 268</span> MSHADOW_TYPE_SWITCH(type, DType, {</div> |
| <div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keyword">auto</span> dptr = <span class="keyword">static_cast<</span>DType*<span class="keyword">></span>(ptr_->aux_handles[i].dptr);</div> |
| <div class="line"><a name="l00270"></a><span class="lineno"> 270</span> CHECK(stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">kRowSparseStorage</a> || stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">kCSRStorage</a>)</div> |
| <div class="line"><a name="l00271"></a><span class="lineno"> 271</span> << <span class="stringliteral">"Unexpected storage type: "</span> << stype;</div> |
| <div class="line"><a name="l00272"></a><span class="lineno"> 272</span> res = <a class="code" href="classmxnet_1_1TBlob.html">TBlob</a>(dptr, shape, ptr_->aux_handles[i].ctx.dev_mask(), type);</div> |
| <div class="line"><a name="l00273"></a><span class="lineno"> 273</span> });</div> |
| <div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor"></span> res.Mkl_mem_ = Mkl_mem_;</div> |
| <div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor"></span> <span class="keywordflow">return</span> res;</div> |
| <div class="line"><a name="l00278"></a><span class="lineno"> 278</span> }</div> |
| <div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1"> 282</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="l00283"></a><span class="lineno"> 283</span> CHECK(!<a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>());</div> |
| <div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="keywordflow">return</span> ptr_->shandle.ctx;</div> |
| <div class="line"><a name="l00285"></a><span class="lineno"> 285</span> }</div> |
| <div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2"> 289</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="l00290"></a><span class="lineno"> 290</span> <span class="keywordflow">return</span> dtype_;</div> |
| <div class="line"><a name="l00291"></a><span class="lineno"> 291</span> }</div> |
| <div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a02fe304d3498632571fea1a7c1fd91d6"> 292</a></span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classmxnet_1_1NDArray.html#a02fe304d3498632571fea1a7c1fd91d6">aux_type</a>(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00293"></a><span class="lineno"> 293</span> CHECK(!<a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>());</div> |
| <div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="keywordflow">return</span> ptr_->aux_types[i];</div> |
| <div class="line"><a name="l00295"></a><span class="lineno"> 295</span> }</div> |
| <div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div> |
| <div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732"> 297</a></span> <span class="keyword">inline</span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">NDArrayStorageType</a> <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>()<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="keywordflow">return</span> storage_type_;</div> |
| <div class="line"><a name="l00299"></a><span class="lineno"> 299</span> }</div> |
| <div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c"> 301</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="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">return</span> ptr_.get() == <span class="keyword">nullptr</span>;</div> |
| <div class="line"><a name="l00303"></a><span class="lineno"> 303</span> }</div> |
| <div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="keywordtype">bool</span> <a class="code" href="classmxnet_1_1NDArray.html#aee74980eb87bf7c482d15458f5194cbe">fresh_out_grad</a>() <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a32ed2be4ecf94c58b19bd43b48f2b1fa">set_fresh_out_grad</a>(<span class="keywordtype">bool</span> state) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a0f59c72c8caefcc069d5839d35288cd1"> 312</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classmxnet_1_1NDArray.html#a0f59c72c8caefcc069d5839d35288cd1">storage_initialized</a>()<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> |
| <div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="keyword">auto</span> stype = <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>();</div> |
| <div class="line"><a name="l00315"></a><span class="lineno"> 315</span> CHECK_NE(stype, <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00316"></a><span class="lineno"> 316</span> << <span class="stringliteral">"storage_initialized() is not intended for kDefaultStorage."</span>;</div> |
| <div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">kRowSparseStorage</a>) {</div> |
| <div class="line"><a name="l00318"></a><span class="lineno"> 318</span> CHECK_EQ(aux_shape(<a class="code" href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232ac52a46037d8cfe90ccc5da8712c7f6da">rowsparse::kIdx</a>)[0], storage_shape()[0])</div> |
| <div class="line"><a name="l00319"></a><span class="lineno"> 319</span> << <span class="stringliteral">"inconsistent storage shape "</span> << storage_shape()</div> |
| <div class="line"><a name="l00320"></a><span class="lineno"> 320</span> << <span class="stringliteral">" vs. aux shape "</span> << aux_shape(<a class="code" href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232ac52a46037d8cfe90ccc5da8712c7f6da">rowsparse::kIdx</a>);</div> |
| <div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="keywordflow">return</span> aux_shape(0).Size() != 0;</div> |
| <div class="line"><a name="l00322"></a><span class="lineno"> 322</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">kCSRStorage</a>) {</div> |
| <div class="line"><a name="l00323"></a><span class="lineno"> 323</span> CHECK_EQ(aux_shape(<a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7">csr::kIdx</a>)[0], storage_shape()[0])</div> |
| <div class="line"><a name="l00324"></a><span class="lineno"> 324</span> << <span class="stringliteral">"inconsistent storage shape "</span> << storage_shape()</div> |
| <div class="line"><a name="l00325"></a><span class="lineno"> 325</span> << <span class="stringliteral">" vs. aux shape "</span> << aux_shape(<a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7">csr::kIdx</a>);</div> |
| <div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="keywordflow">return</span> aux_shape(0).Size() != 0;</div> |
| <div class="line"><a name="l00327"></a><span class="lineno"> 327</span> } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00328"></a><span class="lineno"> 328</span> LOG(FATAL) << <span class="stringliteral">"Unknown storage type"</span>;</div> |
| <div class="line"><a name="l00329"></a><span class="lineno"> 329</span> }</div> |
| <div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> |
| <div class="line"><a name="l00331"></a><span class="lineno"> 331</span> }</div> |
| <div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#ad330f5e35c41078cb64cd84ae59a0bc3"> 333</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1Storage_1_1Handle.html">Storage::Handle</a> <a class="code" href="classmxnet_1_1NDArray.html#ad330f5e35c41078cb64cd84ae59a0bc3">storage_handle</a>()<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00334"></a><span class="lineno"> 334</span> CHECK(!<a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>());</div> |
| <div class="line"><a name="l00335"></a><span class="lineno"> 335</span> CHECK_EQ(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>);</div> |
| <div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">CheckAndAlloc</a>();</div> |
| <div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="keywordflow">return</span> ptr_->shandle;</div> |
| <div class="line"><a name="l00338"></a><span class="lineno"> 338</span> }</div> |
| <div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#aedd79a43d5fa4173f3ddd719fb939fbc"> 343</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="l00344"></a><span class="lineno"> 344</span> <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>()) <span class="keywordflow">return</span>;</div> |
| <div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-><a class="code" href="classmxnet_1_1Engine.html#aed51bd7f294d9f2b569764a0c151d883">WaitForVar</a>(ptr_->var);</div> |
| <div class="line"><a name="l00346"></a><span class="lineno"> 346</span> }</div> |
| <div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a4b88b5d86ec9ddf4ca96701107337461"> 351</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="l00352"></a><span class="lineno"> 352</span> <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>()) <span class="keywordflow">return</span>;</div> |
| <div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-><a class="code" href="classmxnet_1_1Engine.html#ac71feb4f966cd4573452bd148b850c82">PushAsync</a>(</div> |
| <div class="line"><a name="l00358"></a><span class="lineno"> 358</span> [](<a class="code" href="structmxnet_1_1RunContext.html">RunContext</a>, <a class="code" href="classmxnet_1_1engine_1_1CallbackOnComplete.html">Engine::CallbackOnComplete</a> on_complete) {</div> |
| <div class="line"><a name="l00359"></a><span class="lineno"> 359</span> on_complete();</div> |
| <div class="line"><a name="l00360"></a><span class="lineno"> 360</span> }, <a class="code" href="structmxnet_1_1Context.html">Context</a>{}, {}, {ptr_->var});</div> |
| <div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-><a class="code" href="classmxnet_1_1Engine.html#aed51bd7f294d9f2b569764a0c151d883">WaitForVar</a>(ptr_->var);</div> |
| <div class="line"><a name="l00362"></a><span class="lineno"> 362</span> }</div> |
| <div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc"> 364</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="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">return</span> ptr_->var;</div> |
| <div class="line"><a name="l00366"></a><span class="lineno"> 366</span> }</div> |
| <div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a524662078483f8f46c6c71714fbfde0b">Save</a>(dmlc::Stream *strm) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="keywordtype">bool</span> <a class="code" href="classmxnet_1_1NDArray.html#a0b212c0a0c4c83c64a6bf6d0c430602b">LegacyLoad</a>(dmlc::Stream *strm, <span class="keyword">const</span> uint32_t magic);</div> |
| <div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="keywordtype">bool</span> <a class="code" href="classmxnet_1_1NDArray.html#a5203aa033a53942deaecb7bb3bf46480">Load</a>(dmlc::Stream *strm);</div> |
| <div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &<a class="code" href="classmxnet_1_1NDArray.html#aa7a198e3e4c80a48cf92a913009aab8f">operator=</a>(<a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> scalar);</div> |
| <div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &<a class="code" href="classmxnet_1_1NDArray.html#a7df5a5d9956a481635fc43ca4d9a196c">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &src);</div> |
| <div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &<a class="code" href="classmxnet_1_1NDArray.html#a7df5a5d9956a481635fc43ca4d9a196c">operator+=</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &src);</div> |
| <div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &<a class="code" href="classmxnet_1_1NDArray.html#ad35ba01da6949494afe895b7429e4fc3">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &src);</div> |
| <div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &<a class="code" href="classmxnet_1_1NDArray.html#ad35ba01da6949494afe895b7429e4fc3">operator-=</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &src);</div> |
| <div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &<a class="code" href="classmxnet_1_1NDArray.html#a1b47078a60bf0369ff0a7df893caf65b">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &src);</div> |
| <div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &<a class="code" href="classmxnet_1_1NDArray.html#a1b47078a60bf0369ff0a7df893caf65b">operator*=</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &src);</div> |
| <div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &<a class="code" href="classmxnet_1_1NDArray.html#aebc61006705874666423c45f161df546">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &src);</div> |
| <div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &<a class="code" href="classmxnet_1_1NDArray.html#aebc61006705874666423c45f161df546">operator/=</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &src);</div> |
| <div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a4a00e2868ad8b9ccb0a48079635b110f">Copy</a>(<a class="code" href="structmxnet_1_1Context.html">Context</a> ctx) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a422c70b16646f8a273e9b4936fbe2e37">SyncCopyFromCPU</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> size) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div> |
| <div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#aa3943fcf632304f6ab165b8628710609">SyncCopyFromNDArray</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &src, <span class="keywordtype">int</span> i = -1, <span class="keywordtype">int</span> j = -1);</div> |
| <div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div> |
| <div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a4819d2e6431ccdf4b9f8efa8eb0bd1fd">SyncCopyToCPU</a>(<span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> size) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#ade97bd4e93028ede123f6ccec5b3b038">SyncCheckFormat</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> full_check) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a7acb6462c11e071949db2b0e1fbfd66e">Slice</a>(<a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> begin, <a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> end) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a0d868e5303669d6ce8a5ada1c34940ac">SliceWithRecord</a>(<a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> begin, <a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> end);</div> |
| <div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a3b615512a8fb89b9edc99b35064ead95">At</a>(<a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> idx) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#aa2a801dd5c47b5bdd01a385d2c4327b8">AtWithRecord</a>(<a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a> idx);</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="classmxnet_1_1NDArray.html#a3d018c2cfcba0ad499ee5f8ac1475964">aux_ndarray</a>(<span class="keywordtype">size_t</span> i) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div> |
| <div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#af6d456d1e9f105fe913b696fe88efdc3">data_ndarray</a>() <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div> |
| <div class="line"><a name="l00531"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a3896fcce89afce4c1d2f825f7853ca0c"> 531</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> &shape, <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="l00532"></a><span class="lineno"> 532</span> CHECK_EQ(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00533"></a><span class="lineno"> 533</span> << <span class="stringliteral">"AsArray is intended only for kDefaultStorage."</span>;</div> |
| <div class="line"><a name="l00534"></a><span class="lineno"> 534</span> CHECK_GE(ptr_->shandle.size,</div> |
| <div class="line"><a name="l00535"></a><span class="lineno"> 535</span> shape.Size() * mshadow::mshadow_sizeof(dtype))</div> |
| <div class="line"><a name="l00536"></a><span class="lineno"> 536</span> << <span class="stringliteral">"NDArray.AsArray: target memory size is bigger"</span>;</div> |
| <div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="preprocessor"></span> <span class="keywordflow">if</span> (Mkl_mem_ != <span class="keyword">nullptr</span>) {</div> |
| <div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="comment">// convert prv to cpu</span></div> |
| <div class="line"><a name="l00540"></a><span class="lineno"> 540</span> Mkl_mem_->check_and_prv_to_cpu(ptr_->shandle.dptr);</div> |
| <div class="line"><a name="l00541"></a><span class="lineno"> 541</span> }</div> |
| <div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor"></span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> ret = *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l00544"></a><span class="lineno"> 544</span> ret.shape_ = shape;</div> |
| <div class="line"><a name="l00545"></a><span class="lineno"> 545</span> ret.dtype_ = <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>;</div> |
| <div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="keywordflow">return</span> ret;</div> |
| <div class="line"><a name="l00547"></a><span class="lineno"> 547</span> }</div> |
| <div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#ada618436206b59aa3ffcdb8474d5051c">Reshape</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &shape) <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> <a class="code" href="classmxnet_1_1NDArray.html#a567712180a066b783907b30f1cb2248a">ReshapeWithRecord</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &shape);</div> |
| <div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a34a3694141050a257dc6b40a6ad2c4ec"> 563</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="l00564"></a><span class="lineno"> 564</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> ret(*<span class="keyword">this</span>);</div> |
| <div class="line"><a name="l00565"></a><span class="lineno"> 565</span> ret.entry_ = nnvm::NodeEntry{<span class="keyword">nullptr</span>, 0, 0};</div> |
| <div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="keywordflow">return</span> ret;</div> |
| <div class="line"><a name="l00567"></a><span class="lineno"> 567</span> }</div> |
| <div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div> |
| <div class="line"><a name="l00569"></a><span class="lineno"> 569</span> nnvm::Symbol <a class="code" href="classmxnet_1_1NDArray.html#a8f03aa51719b1c7d6ec8b812cdcb7f14">get_autograd_symbol</a>() <span class="keyword">const</span>;</div> |
| <div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a"> 574</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="l00575"></a><span class="lineno"> 575</span> CHECK_EQ(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>);</div> |
| <div class="line"><a name="l00576"></a><span class="lineno"> 576</span> ptr_->CheckAndAlloc();</div> |
| <div class="line"><a name="l00577"></a><span class="lineno"> 577</span> }</div> |
| <div class="line"><a name="l00578"></a><span class="lineno"> 578</span> </div> |
| <div class="line"><a name="l00588"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a15af0cf321dbe235b6900417d4847aae"> 588</a></span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a15af0cf321dbe235b6900417d4847aae">ReshapeAndAlloc</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>& shape) {</div> |
| <div class="line"><a name="l00589"></a><span class="lineno"> 589</span> CHECK_EQ(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>);</div> |
| <div class="line"><a name="l00590"></a><span class="lineno"> 590</span> CHECK(!<a class="code" href="classmxnet_1_1NDArray.html#a2a15ffdbf29d4d5455a4fbb4b607880c">is_none</a>());</div> |
| <div class="line"><a name="l00591"></a><span class="lineno"> 591</span> shape_ = shape;</div> |
| <div class="line"><a name="l00592"></a><span class="lineno"> 592</span> ptr_->CheckAndAlloc(shape.Size() * mshadow::mshadow_sizeof(dtype_));</div> |
| <div class="line"><a name="l00593"></a><span class="lineno"> 593</span> }</div> |
| <div class="line"><a name="l00594"></a><span class="lineno"> 594</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> <span class="comment"> * \brief Alloc memory for non-default storage</span></div> |
| <div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="comment"> * aux_shape is only known at run time</span></div> |
| <div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="comment"> */</span></div> |
| <div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a557fe59b005fc7040db02882b12c3ff5"> 599</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a557fe59b005fc7040db02882b12c3ff5">CheckAndAlloc</a>(<span class="keyword">const</span> std::vector<TShape> &aux_shapes)<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00600"></a><span class="lineno"> 600</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00601"></a><span class="lineno"> 601</span> << <span class="stringliteral">"CheckAndAlloc(aux_shapes) is not intended for kDefaultStorage"</span>;</div> |
| <div class="line"><a name="l00602"></a><span class="lineno"> 602</span> ptr_->CheckAndAlloc(shape_, aux_shapes, dtype_);</div> |
| <div class="line"><a name="l00603"></a><span class="lineno"> 603</span> }</div> |
| <div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#adcccfd3a4e7a334274677dfc0748d8fe"> 604</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#adcccfd3a4e7a334274677dfc0748d8fe">CheckAndAllocData</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &storage_shape)<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00605"></a><span class="lineno"> 605</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00606"></a><span class="lineno"> 606</span> << <span class="stringliteral">"CheckAndAllocData is not intended for kDefaultStorage"</span>;</div> |
| <div class="line"><a name="l00607"></a><span class="lineno"> 607</span> ptr_->CheckAndAllocData(storage_shape, dtype_);</div> |
| <div class="line"><a name="l00608"></a><span class="lineno"> 608</span> }</div> |
| <div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#a15809565dc2e38b3a8f62226b086fd29"> 609</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a15809565dc2e38b3a8f62226b086fd29">CheckAndAllocAuxData</a>(<span class="keywordtype">size_t</span> i, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &aux_shape)<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00610"></a><span class="lineno"> 610</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(), <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00611"></a><span class="lineno"> 611</span> << <span class="stringliteral">"CheckAndAllocAuxData is not intended for kDefaultStorage"</span>;</div> |
| <div class="line"><a name="l00612"></a><span class="lineno"> 612</span> ptr_->CheckAndAllocAuxData(i, aux_shape);</div> |
| <div class="line"><a name="l00613"></a><span class="lineno"> 613</span> }</div> |
| <div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a524662078483f8f46c6c71714fbfde0b">Save</a>(dmlc::Stream* fo,</div> |
| <div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="keyword">const</span> std::vector<NDArray>& data,</div> |
| <div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="keyword">const</span> std::vector<std::string>& names);</div> |
| <div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a5203aa033a53942deaecb7bb3bf46480">Load</a>(dmlc::Stream* fi,</div> |
| <div class="line"><a name="l00630"></a><span class="lineno"> 630</span> std::vector<NDArray>* data,</div> |
| <div class="line"><a name="l00631"></a><span class="lineno"> 631</span> std::vector<std::string>* keys);</div> |
| <div class="line"><a name="l00632"></a><span class="lineno"> 632</span> </div> |
| <div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <span class="keyword">private</span>:</div> |
| <div class="line"><a name="l00634"></a><span class="lineno"><a class="line" href="classmxnet_1_1NDArray.html#add286ab9a359eb017008c9a3ff53701f"> 634</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classmxnet_1_1Imperative.html">Imperative</a>;</div> |
| <div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="comment">// shandle is used to store the actual values in the NDArray</span></div> |
| <div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="comment">// aux_handles store the aux data(such as indices) if it's needed by non-default storage.</span></div> |
| <div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="keyword">struct </span>Chunk {</div> |
| <div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <a class="code" href="structmxnet_1_1Storage_1_1Handle.html">Storage::Handle</a> shandle;</div> |
| <div class="line"><a name="l00647"></a><span class="lineno"> 647</span> std::vector<Storage::Handle> aux_handles;</div> |
| <div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <a class="code" href="classmxnet_1_1Engine.html#aac31510c793a12944c33f9cac6150491">Engine::VarHandle</a> <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a>;</div> |
| <div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="keywordtype">bool</span> static_data;</div> |
| <div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="keywordtype">bool</span> delay_alloc;</div> |
| <div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="comment">// the type of the storage. The storage_type is never kUndefinedStorage once the chunk</span></div> |
| <div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="comment">// is constructed.</span></div> |
| <div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">NDArrayStorageType</a> <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a> = <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>;</div> |
| <div class="line"><a name="l00663"></a><span class="lineno"> 663</span> std::vector<int> aux_types;</div> |
| <div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="comment">// context of data</span></div> |
| <div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>;</div> |
| <div class="line"><a name="l00666"></a><span class="lineno"> 666</span> <span class="comment">// The shape of the chunk data.</span></div> |
| <div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="comment">// This might not be the same shape as the NDArray, since the storage may be sparse.</span></div> |
| <div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="comment">// The default value for storage_shape is {0} when an empty non-default NDArray is created.</span></div> |
| <div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> storage_shape;</div> |
| <div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="comment">// The shape of aux data. The default value for the shape depends on the type of storage.</span></div> |
| <div class="line"><a name="l00671"></a><span class="lineno"> 671</span> <span class="comment">// If aux_shapes[i].Size() is zero, aux data i is empty.</span></div> |
| <div class="line"><a name="l00672"></a><span class="lineno"> 672</span> std::vector<TShape> aux_shapes;</div> |
| <div class="line"><a name="l00673"></a><span class="lineno"> 673</span> </div> |
| <div class="line"><a name="l00675"></a><span class="lineno"> 675</span> Chunk() : static_data(true), delay_alloc(false) {}</div> |
| <div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div> |
| <div class="line"><a name="l00678"></a><span class="lineno"> 678</span> Chunk(<a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> shape, <a class="code" href="structmxnet_1_1Context.html">Context</a> ctx_, <span class="keywordtype">bool</span> delay_alloc_, <span class="keywordtype">int</span> <a class="code" href="classmxnet_1_1NDArray.html#a1b6038a196c14d038bd3e6d6bbe36ad2">dtype</a>)</div> |
| <div class="line"><a name="l00679"></a><span class="lineno"> 679</span> : static_data(false), delay_alloc(true), ctx(ctx_) {</div> |
| <div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="keyword">auto</span> size = shape.Size();</div> |
| <div class="line"><a name="l00681"></a><span class="lineno"> 681</span> storage_shape = shape;</div> |
| <div class="line"><a name="l00682"></a><span class="lineno"> 682</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a> = <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-><a class="code" href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">NewVariable</a>();</div> |
| <div class="line"><a name="l00683"></a><span class="lineno"> 683</span> shandle.size = size * mshadow::mshadow_sizeof(dtype);</div> |
| <div class="line"><a name="l00684"></a><span class="lineno"> 684</span> shandle.ctx = ctx_;</div> |
| <div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="keywordflow">if</span> (!delay_alloc_) this-><a class="code" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">CheckAndAlloc</a>();</div> |
| <div class="line"><a name="l00686"></a><span class="lineno"> 686</span> }</div> |
| <div class="line"><a name="l00687"></a><span class="lineno"> 687</span> </div> |
| <div class="line"><a name="l00688"></a><span class="lineno"> 688</span> Chunk(<span class="keyword">const</span> TBlob &data, <span class="keywordtype">int</span> dev_id)</div> |
| <div class="line"><a name="l00689"></a><span class="lineno"> 689</span> : static_data(true), delay_alloc(false) {</div> |
| <div class="line"><a name="l00690"></a><span class="lineno"> 690</span> CHECK(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a> == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>);</div> |
| <div class="line"><a name="l00691"></a><span class="lineno"> 691</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a> = <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-><a class="code" href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">NewVariable</a>();</div> |
| <div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="keywordflow">if</span> (data.dev_mask() == cpu::kDevMask) {</div> |
| <div class="line"><a name="l00693"></a><span class="lineno"> 693</span> ctx = <a class="code" href="structmxnet_1_1Context.html#a4bb231d70623fde216de51589347e513">Context::CPU</a>();</div> |
| <div class="line"><a name="l00694"></a><span class="lineno"> 694</span> } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00695"></a><span class="lineno"> 695</span> CHECK_EQ(data.dev_mask(), gpu::kDevMask);</div> |
| <div class="line"><a name="l00696"></a><span class="lineno"> 696</span> ctx = <a class="code" href="structmxnet_1_1Context.html#a39d1a2b59bce135da127475995a58671">Context::GPU</a>(dev_id);</div> |
| <div class="line"><a name="l00697"></a><span class="lineno"> 697</span> }</div> |
| <div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="comment">// init shandle</span></div> |
| <div class="line"><a name="l00699"></a><span class="lineno"> 699</span> shandle.ctx = <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>;</div> |
| <div class="line"><a name="l00700"></a><span class="lineno"> 700</span> shandle.dptr = data.dptr_;</div> |
| <div class="line"><a name="l00701"></a><span class="lineno"> 701</span> shandle.size = data.shape_.Size() * mshadow::mshadow_sizeof(data.type_flag_);</div> |
| <div class="line"><a name="l00702"></a><span class="lineno"> 702</span> storage_shape = data.shape_;</div> |
| <div class="line"><a name="l00703"></a><span class="lineno"> 703</span> }</div> |
| <div class="line"><a name="l00704"></a><span class="lineno"> 704</span> </div> |
| <div class="line"><a name="l00705"></a><span class="lineno"> 705</span> Chunk(<span class="keywordtype">int</span> shared_pid, <span class="keywordtype">int</span> shared_id, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>& shape, <span class="keywordtype">int</span> dtype)</div> |
| <div class="line"><a name="l00706"></a><span class="lineno"> 706</span> : static_data(false), delay_alloc(false) {</div> |
| <div class="line"><a name="l00707"></a><span class="lineno"> 707</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a> = <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-><a class="code" href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">NewVariable</a>();</div> |
| <div class="line"><a name="l00708"></a><span class="lineno"> 708</span> ctx = <a class="code" href="structmxnet_1_1Context.html#a8e090b1fcc96b682512bcc22fc521f80">Context::CPUShared</a>(0);</div> |
| <div class="line"><a name="l00709"></a><span class="lineno"> 709</span> shandle.size = shape.Size() * mshadow::mshadow_sizeof(dtype);;</div> |
| <div class="line"><a name="l00710"></a><span class="lineno"> 710</span> shandle.ctx = <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>;</div> |
| <div class="line"><a name="l00711"></a><span class="lineno"> 711</span> shandle.shared_pid = shared_pid;</div> |
| <div class="line"><a name="l00712"></a><span class="lineno"> 712</span> shandle.shared_id = shared_id;</div> |
| <div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a8ac978f345ba93f26b11ae4331406561">Alloc</a>(&shandle);</div> |
| <div class="line"><a name="l00714"></a><span class="lineno"> 714</span> storage_shape = shape;</div> |
| <div class="line"><a name="l00715"></a><span class="lineno"> 715</span> }</div> |
| <div class="line"><a name="l00716"></a><span class="lineno"> 716</span> <span class="comment">// Constructor for a non-default storage chunk</span></div> |
| <div class="line"><a name="l00717"></a><span class="lineno"> 717</span> Chunk(<a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">NDArrayStorageType</a> storage_type_, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &storage_shape_, Context ctx_,</div> |
| <div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="keywordtype">bool</span> delay_alloc_, <span class="keywordtype">int</span> dtype, <span class="keyword">const</span> std::vector<int> &aux_types_,</div> |
| <div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="keyword">const</span> std::vector<TShape> &aux_shapes_)</div> |
| <div class="line"><a name="l00720"></a><span class="lineno"> 720</span> : static_data(false), delay_alloc(delay_alloc_), <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(storage_type_),</div> |
| <div class="line"><a name="l00721"></a><span class="lineno"> 721</span> aux_types(aux_types_), ctx(ctx_), storage_shape(storage_shape_),</div> |
| <div class="line"><a name="l00722"></a><span class="lineno"> 722</span> aux_shapes(aux_shapes_) {</div> |
| <div class="line"><a name="l00723"></a><span class="lineno"> 723</span> shandle.ctx = <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>;</div> |
| <div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a> = <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-><a class="code" href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">NewVariable</a>();</div> |
| <div class="line"><a name="l00725"></a><span class="lineno"> 725</span> <span class="comment">// aux_handles always reflect the correct number of aux data</span></div> |
| <div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < aux_shapes.size(); i++) {</div> |
| <div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <a class="code" href="classmxnet_1_1NDArray.html#a15809565dc2e38b3a8f62226b086fd29">CheckAndAllocAuxData</a>(i, aux_shapes[i]);</div> |
| <div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="comment">// this line is needed in case when aux_shapes[i].Size() = 0</span></div> |
| <div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="comment">// aux_handles[i] will not be updated and take only default value.</span></div> |
| <div class="line"><a name="l00730"></a><span class="lineno"> 730</span> aux_handles[i].ctx = <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>;</div> |
| <div class="line"><a name="l00731"></a><span class="lineno"> 731</span> }</div> |
| <div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="keywordflow">if</span> (!delay_alloc) {</div> |
| <div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <a class="code" href="classmxnet_1_1NDArray.html#adcccfd3a4e7a334274677dfc0748d8fe">CheckAndAllocData</a>(storage_shape, dtype);</div> |
| <div class="line"><a name="l00734"></a><span class="lineno"> 734</span> }</div> |
| <div class="line"><a name="l00735"></a><span class="lineno"> 735</span> }</div> |
| <div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div> |
| <div class="line"><a name="l00737"></a><span class="lineno"> 737</span> Chunk(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">NDArrayStorageType</a> storage_type_, <span class="keyword">const</span> TBlob &data,</div> |
| <div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="keyword">const</span> std::vector<TBlob> &<a class="code" href="classmxnet_1_1NDArray.html#ad8194805eabb65d8a9d33fda840b66a9">aux_data</a>, <span class="keywordtype">int</span> dev_id)</div> |
| <div class="line"><a name="l00739"></a><span class="lineno"> 739</span> : static_data(true), delay_alloc(false), <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>(storage_type_) {</div> |
| <div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="keyword">using namespace </span>mshadow;</div> |
| <div class="line"><a name="l00741"></a><span class="lineno"> 741</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>, <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>);</div> |
| <div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="comment">// init var</span></div> |
| <div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a> = <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-><a class="code" href="classmxnet_1_1Engine.html#a6e141b188f018d5d933ab99868631d5e">NewVariable</a>();</div> |
| <div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="comment">// init ctx</span></div> |
| <div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="keywordflow">if</span> (data.dev_mask() == cpu::kDevMask) {</div> |
| <div class="line"><a name="l00746"></a><span class="lineno"> 746</span> ctx = <a class="code" href="structmxnet_1_1Context.html#a4bb231d70623fde216de51589347e513">Context::CPU</a>();</div> |
| <div class="line"><a name="l00747"></a><span class="lineno"> 747</span> } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00748"></a><span class="lineno"> 748</span> CHECK_EQ(data.dev_mask(), gpu::kDevMask);</div> |
| <div class="line"><a name="l00749"></a><span class="lineno"> 749</span> ctx = <a class="code" href="structmxnet_1_1Context.html#a39d1a2b59bce135da127475995a58671">Context::GPU</a>(dev_id);</div> |
| <div class="line"><a name="l00750"></a><span class="lineno"> 750</span> }</div> |
| <div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="comment">// init shandle</span></div> |
| <div class="line"><a name="l00752"></a><span class="lineno"> 752</span> shandle.ctx = <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>;</div> |
| <div class="line"><a name="l00753"></a><span class="lineno"> 753</span> shandle.dptr = data.dptr_;</div> |
| <div class="line"><a name="l00754"></a><span class="lineno"> 754</span> shandle.size = data.shape_.Size() * mshadow_sizeof(data.type_flag_);</div> |
| <div class="line"><a name="l00755"></a><span class="lineno"> 755</span> storage_shape = data.shape_;</div> |
| <div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="comment">// init aux handles</span></div> |
| <div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &aux : aux_data) {</div> |
| <div class="line"><a name="l00758"></a><span class="lineno"> 758</span> Storage::Handle aux_handle;</div> |
| <div class="line"><a name="l00759"></a><span class="lineno"> 759</span> aux_handle.ctx = <a class="code" href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">ctx</a>;</div> |
| <div class="line"><a name="l00760"></a><span class="lineno"> 760</span> aux_handle.dptr = aux.dptr_;</div> |
| <div class="line"><a name="l00761"></a><span class="lineno"> 761</span> aux_handle.size = aux.shape_.Size() * mshadow_sizeof(aux.type_flag_);</div> |
| <div class="line"><a name="l00762"></a><span class="lineno"> 762</span> aux_handles.push_back(aux_handle);</div> |
| <div class="line"><a name="l00763"></a><span class="lineno"> 763</span> aux_types.emplace_back(aux.type_flag_);</div> |
| <div class="line"><a name="l00764"></a><span class="lineno"> 764</span> aux_shapes.emplace_back(aux.shape_);</div> |
| <div class="line"><a name="l00765"></a><span class="lineno"> 765</span> }</div> |
| <div class="line"><a name="l00766"></a><span class="lineno"> 766</span> }</div> |
| <div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div> |
| <div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> set_aux_shape(<span class="keyword">const</span> <span class="keywordtype">size_t</span> i, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a>& shape) {</div> |
| <div class="line"><a name="l00770"></a><span class="lineno"> 770</span> aux_shapes[i] = shape;</div> |
| <div class="line"><a name="l00771"></a><span class="lineno"> 771</span> <span class="keywordflow">if</span> (storage_shape.ndim() > 0) {</div> |
| <div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a> == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">kRowSparseStorage</a> && i == <a class="code" href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232ac52a46037d8cfe90ccc5da8712c7f6da">rowsparse::kIdx</a>) {</div> |
| <div class="line"><a name="l00773"></a><span class="lineno"> 773</span> storage_shape[0] = shape[0];</div> |
| <div class="line"><a name="l00774"></a><span class="lineno"> 774</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a> == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">kCSRStorage</a> && i == <a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7">csr::kIdx</a>) {</div> |
| <div class="line"><a name="l00775"></a><span class="lineno"> 775</span> storage_shape[0] = shape[0];</div> |
| <div class="line"><a name="l00776"></a><span class="lineno"> 776</span> }</div> |
| <div class="line"><a name="l00777"></a><span class="lineno"> 777</span> }</div> |
| <div class="line"><a name="l00778"></a><span class="lineno"> 778</span> }</div> |
| <div class="line"><a name="l00779"></a><span class="lineno"> 779</span> </div> |
| <div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">CheckAndAlloc</a>(<span class="keywordtype">void</span>) {</div> |
| <div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="keywordflow">if</span> (delay_alloc) {</div> |
| <div class="line"><a name="l00783"></a><span class="lineno"> 783</span> shandle = <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a8ac978f345ba93f26b11ae4331406561">Alloc</a>(shandle.size, shandle.ctx);</div> |
| <div class="line"><a name="l00784"></a><span class="lineno"> 784</span> delay_alloc = <span class="keyword">false</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> }</div> |
| <div class="line"><a name="l00787"></a><span class="lineno"> 787</span> </div> |
| <div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="comment">// size is the number of bytes</span></div> |
| <div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a35c2a2c797f601fbc5d560481b11720a">CheckAndAlloc</a>(uint64_t dbytes) {</div> |
| <div class="line"><a name="l00791"></a><span class="lineno"> 791</span> CHECK_EQ(<a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>, <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>)</div> |
| <div class="line"><a name="l00792"></a><span class="lineno"> 792</span> << <span class="stringliteral">"CheckAndAlloc(dbytes) is not intended for kDefaultStorage"</span>;</div> |
| <div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="keywordflow">if</span> (delay_alloc) {</div> |
| <div class="line"><a name="l00794"></a><span class="lineno"> 794</span> shandle = <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a8ac978f345ba93f26b11ae4331406561">Alloc</a>(dbytes, shandle.ctx);</div> |
| <div class="line"><a name="l00795"></a><span class="lineno"> 795</span> delay_alloc = <span class="keyword">false</span>;</div> |
| <div class="line"><a name="l00796"></a><span class="lineno"> 796</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (shandle.size < dbytes) {</div> |
| <div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="comment">// free storage if necessary and alloc again</span></div> |
| <div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="keywordflow">if</span> (shandle.size > 0) <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a5bdbd7b3ab712cd9e087ab007bdc64dd">Free</a>(shandle);</div> |
| <div class="line"><a name="l00799"></a><span class="lineno"> 799</span> <span class="comment">// init storage</span></div> |
| <div class="line"><a name="l00800"></a><span class="lineno"> 800</span> shandle = <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a8ac978f345ba93f26b11ae4331406561">Alloc</a>(dbytes, shandle.ctx);</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> }</div> |
| <div class="line"><a name="l00803"></a><span class="lineno"> 803</span> </div> |
| <div class="line"><a name="l00804"></a><span class="lineno"> 804</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> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &shape, <span class="keyword">const</span> std::vector<TShape> &aux_shapes,</div> |
| <div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="keywordtype">int</span> dtype) {</div> |
| <div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="comment">// calculate size, perform allocation</span></div> |
| <div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="keywordflow">if</span> (<a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">kRowSparseStorage</a> == <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>) {</div> |
| <div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="comment">// For row sparse, aux_shape indicates the number of rows to allocate</span></div> |
| <div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="keyword">auto</span> aux_shape = aux_shapes[<a class="code" href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232ac52a46037d8cfe90ccc5da8712c7f6da">rowsparse::kIdx</a>];</div> |
| <div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <a class="code" href="classmxnet_1_1NDArray.html#a15809565dc2e38b3a8f62226b086fd29">CheckAndAllocAuxData</a>(<a class="code" href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232ac52a46037d8cfe90ccc5da8712c7f6da">rowsparse::kIdx</a>, aux_shape);</div> |
| <div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> storage_shape(shape);</div> |
| <div class="line"><a name="l00812"></a><span class="lineno"> 812</span> storage_shape[0] = aux_shape[0];</div> |
| <div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <a class="code" href="classmxnet_1_1NDArray.html#adcccfd3a4e7a334274677dfc0748d8fe">CheckAndAllocData</a>(storage_shape, dtype);</div> |
| <div class="line"><a name="l00814"></a><span class="lineno"> 814</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">kCSRStorage</a> == <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>) {</div> |
| <div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <a class="code" href="classmxnet_1_1NDArray.html#a15809565dc2e38b3a8f62226b086fd29">CheckAndAllocAuxData</a>(<a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42ad9dcbaec1c8c6ca9d69648c83354aac1">csr::kIndPtr</a>, aux_shapes[<a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42ad9dcbaec1c8c6ca9d69648c83354aac1">csr::kIndPtr</a>]);</div> |
| <div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <a class="code" href="classmxnet_1_1NDArray.html#a15809565dc2e38b3a8f62226b086fd29">CheckAndAllocAuxData</a>(<a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7">csr::kIdx</a>, aux_shapes[<a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7">csr::kIdx</a>]);</div> |
| <div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <a class="code" href="classmxnet_1_1NDArray.html#adcccfd3a4e7a334274677dfc0748d8fe">CheckAndAllocData</a>(aux_shapes[<a class="code" href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7">csr::kIdx</a>], dtype);</div> |
| <div class="line"><a name="l00818"></a><span class="lineno"> 818</span> } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00819"></a><span class="lineno"> 819</span> LOG(FATAL) << <span class="stringliteral">"Storage type "</span> << <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a> << <span class="stringliteral">" not implemented for CheckAndAlloc"</span>;</div> |
| <div class="line"><a name="l00820"></a><span class="lineno"> 820</span> }</div> |
| <div class="line"><a name="l00821"></a><span class="lineno"> 821</span> }</div> |
| <div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <span class="comment">// create storage handle for data based on shape and dtype, assuming ctx is set</span></div> |
| <div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="comment">// storage shape is also updated</span></div> |
| <div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="comment">// if data is already allocated, try reuse the storage. Otherwise, free the current one</span></div> |
| <div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <span class="comment">// and allocate new storage</span></div> |
| <div class="line"><a name="l00826"></a><span class="lineno"> 826</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#adcccfd3a4e7a334274677dfc0748d8fe">CheckAndAllocData</a>(<span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &shape, <span class="keywordtype">int</span> dtype) {</div> |
| <div class="line"><a name="l00827"></a><span class="lineno"> 827</span> CHECK_NE(aux_shapes.size(), 0) << <span class="stringliteral">"data is expected to be allocated after aux_data"</span>;</div> |
| <div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="keyword">auto</span> dbytes = shape.Size() * mshadow::mshadow_sizeof(dtype);</div> |
| <div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="keywordflow">if</span> (shandle.size < dbytes) {</div> |
| <div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="comment">// free storage if necessary and alloc again</span></div> |
| <div class="line"><a name="l00831"></a><span class="lineno"> 831</span> <span class="keywordflow">if</span> (shandle.size > 0) <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a5bdbd7b3ab712cd9e087ab007bdc64dd">Free</a>(shandle);</div> |
| <div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <span class="comment">// init storage</span></div> |
| <div class="line"><a name="l00833"></a><span class="lineno"> 833</span> shandle = <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a8ac978f345ba93f26b11ae4331406561">Alloc</a>(dbytes, ctx);</div> |
| <div class="line"><a name="l00834"></a><span class="lineno"> 834</span> }</div> |
| <div class="line"><a name="l00835"></a><span class="lineno"> 835</span> <span class="comment">// init shape</span></div> |
| <div class="line"><a name="l00836"></a><span class="lineno"> 836</span> storage_shape = shape;</div> |
| <div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="comment">// delay_alloc is only set when data storage handle is present</span></div> |
| <div class="line"><a name="l00838"></a><span class="lineno"> 838</span> delay_alloc = <span class="keyword">false</span>;</div> |
| <div class="line"><a name="l00839"></a><span class="lineno"> 839</span> }</div> |
| <div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="comment">// create storage handle for aux data based on shape</span></div> |
| <div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="comment">// this function assumes ctx, aux shapes and aux types are set</span></div> |
| <div class="line"><a name="l00842"></a><span class="lineno"> 842</span> <span class="comment">// aux shape is also updated</span></div> |
| <div class="line"><a name="l00843"></a><span class="lineno"> 843</span> <span class="comment">// if aux data is already allocated, try reuse the storage. Otherwise, free the current one</span></div> |
| <div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <span class="comment">// and allocate new storage</span></div> |
| <div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1NDArray.html#a15809565dc2e38b3a8f62226b086fd29">CheckAndAllocAuxData</a>(<span class="keywordtype">size_t</span> i, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> &shape) {</div> |
| <div class="line"><a name="l00846"></a><span class="lineno"> 846</span> CHECK_EQ(shape.ndim(), 1) << <span class="stringliteral">"shape must be 1D in CheckAndAllocAuxData"</span>;</div> |
| <div class="line"><a name="l00847"></a><span class="lineno"> 847</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>, <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aadf6c6faf0de1e55119c679180c99e584">kUndefinedStorage</a>)</div> |
| <div class="line"><a name="l00848"></a><span class="lineno"> 848</span> << <span class="stringliteral">"storage type cannot be kUndefinedStorage in CheckAndAllocAuxData"</span>;</div> |
| <div class="line"><a name="l00849"></a><span class="lineno"> 849</span> CHECK_NE(<a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>, <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>)</div> |
| <div class="line"><a name="l00850"></a><span class="lineno"> 850</span> << <span class="stringliteral">"storage type cannot be kDefaultStorage in CheckAndAllocAuxData"</span>;</div> |
| <div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="keywordflow">if</span> (aux_handles.size() <= i) {</div> |
| <div class="line"><a name="l00852"></a><span class="lineno"> 852</span> aux_handles.resize(i + 1);</div> |
| <div class="line"><a name="l00853"></a><span class="lineno"> 853</span> }</div> |
| <div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="keywordtype">size_t</span> aux_bytes = shape.Size() * mshadow::mshadow_sizeof(aux_types[i]);</div> |
| <div class="line"><a name="l00855"></a><span class="lineno"> 855</span> <span class="keywordflow">if</span> (aux_handles[i].size < aux_bytes) {</div> |
| <div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="comment">// free storage if necessary and alloc again</span></div> |
| <div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="keywordflow">if</span> (aux_handles[i].size > 0) <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a5bdbd7b3ab712cd9e087ab007bdc64dd">Free</a>(aux_handles[i]);</div> |
| <div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="comment">// init aux storage</span></div> |
| <div class="line"><a name="l00859"></a><span class="lineno"> 859</span> aux_handles[i] = <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a8ac978f345ba93f26b11ae4331406561">Alloc</a>(aux_bytes, ctx);</div> |
| <div class="line"><a name="l00860"></a><span class="lineno"> 860</span> }</div> |
| <div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="comment">// init shape</span></div> |
| <div class="line"><a name="l00862"></a><span class="lineno"> 862</span> set_aux_shape(i, shape);</div> |
| <div class="line"><a name="l00863"></a><span class="lineno"> 863</span> }</div> |
| <div class="line"><a name="l00865"></a><span class="lineno"> 865</span> ~Chunk() {</div> |
| <div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="keywordtype">bool</span> skip_free = static_data || delay_alloc;</div> |
| <div class="line"><a name="l00867"></a><span class="lineno"> 867</span> Storage::Handle h = this->shandle;</div> |
| <div class="line"><a name="l00868"></a><span class="lineno"> 868</span> std::vector<Storage::Handle> aux_h = this->aux_handles;</div> |
| <div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <a class="code" href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">Engine::Get</a>()-><a class="code" href="classmxnet_1_1Engine.html#a738e5192dab345ab0ec9888b095903cf">DeleteVariable</a>([h, aux_h, skip_free](RunContext s) {</div> |
| <div class="line"><a name="l00870"></a><span class="lineno"> 870</span> <span class="keywordflow">if</span> (skip_free == <span class="keyword">false</span>) {</div> |
| <div class="line"><a name="l00871"></a><span class="lineno"> 871</span> <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a5bdbd7b3ab712cd9e087ab007bdc64dd">Free</a>(h);</div> |
| <div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < aux_h.size(); i++) {</div> |
| <div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="keywordflow">if</span> (aux_h[i].size > 0) <a class="code" href="classmxnet_1_1Storage.html#a96abc072908d72d3271360a7e3e4bbc2">Storage::Get</a>()-><a class="code" href="classmxnet_1_1Storage.html#a5bdbd7b3ab712cd9e087ab007bdc64dd">Free</a>(aux_h[i]);</div> |
| <div class="line"><a name="l00874"></a><span class="lineno"> 874</span> }</div> |
| <div class="line"><a name="l00875"></a><span class="lineno"> 875</span> }</div> |
| <div class="line"><a name="l00876"></a><span class="lineno"> 876</span> }, shandle.ctx, <a class="code" href="classmxnet_1_1NDArray.html#a35c9b5da0852b480e0114f0865338cbc">var</a>);</div> |
| <div class="line"><a name="l00877"></a><span class="lineno"> 877</span> }</div> |
| <div class="line"><a name="l00878"></a><span class="lineno"> 878</span> }; <span class="comment">// struct Chunk</span></div> |
| <div class="line"><a name="l00879"></a><span class="lineno"> 879</span> </div> |
| <div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="keywordtype">void</span> SetTBlob()<span class="keyword"> const </span>{</div> |
| <div class="line"><a name="l00881"></a><span class="lineno"> 881</span> CHECK(ptr_ != <span class="keyword">nullptr</span>);</div> |
| <div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> shape = shape_;</div> |
| <div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="keywordtype">char</span> *dptr = <span class="keyword">static_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(ptr_->shandle.dptr);</div> |
| <div class="line"><a name="l00884"></a><span class="lineno"> 884</span> <span class="keyword">auto</span> stype = <a class="code" href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">storage_type</a>();</div> |
| <div class="line"><a name="l00885"></a><span class="lineno"> 885</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">kDefaultStorage</a>) {</div> |
| <div class="line"><a name="l00886"></a><span class="lineno"> 886</span> dptr += byte_offset_;</div> |
| <div class="line"><a name="l00887"></a><span class="lineno"> 887</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">kCSRStorage</a> || stype == <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">kRowSparseStorage</a>) {</div> |
| <div class="line"><a name="l00888"></a><span class="lineno"> 888</span> shape = storage_shape();</div> |
| <div class="line"><a name="l00889"></a><span class="lineno"> 889</span> } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00890"></a><span class="lineno"> 890</span> LOG(FATAL) << <span class="stringliteral">"unknown storage type "</span> << stype;</div> |
| <div class="line"><a name="l00891"></a><span class="lineno"> 891</span> }</div> |
| <div class="line"><a name="l00892"></a><span class="lineno"> 892</span> tblob_.dptr_ = dptr;</div> |
| <div class="line"><a name="l00893"></a><span class="lineno"> 893</span> tblob_.shape_ = shape;</div> |
| <div class="line"><a name="l00894"></a><span class="lineno"> 894</span> tblob_.type_flag_ = dtype_;</div> |
| <div class="line"><a name="l00895"></a><span class="lineno"> 895</span> tblob_.SetDLTensor(ptr_->shandle.ctx.dev_mask(), ptr_->shandle.ctx.dev_id);</div> |
| <div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="preprocessor"></span> tblob_.Mkl_mem_ = Mkl_mem_;</div> |
| <div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="preprocessor"></span> }</div> |
| <div class="line"><a name="l00900"></a><span class="lineno"> 900</span> </div> |
| <div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="preprocessor">#if MKL_EXPERIMENTAL == 1</span></div> |
| <div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="preprocessor"></span> std::shared_ptr<MKLMemHolder> Mkl_mem_;</div> |
| <div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="preprocessor">#endif</span></div> |
| <div class="line"><a name="l00904"></a><span class="lineno"> 904</span> <span class="preprocessor"></span></div> |
| <div class="line"><a name="l00905"></a><span class="lineno"> 905</span> std::shared_ptr<Chunk> ptr_{<span class="keyword">nullptr</span>};</div> |
| <div class="line"><a name="l00907"></a><span class="lineno"> 907</span> <a class="code" href="namespacemxnet.html#a6e14bb5f6ffc81892feca8d1da658687">TShape</a> shape_;</div> |
| <div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="keywordtype">size_t</span> byte_offset_ = 0;</div> |
| <div class="line"><a name="l00911"></a><span class="lineno"> 911</span> <span class="keywordtype">int</span> dtype_ = -1;</div> |
| <div class="line"><a name="l00913"></a><span class="lineno"> 913</span> <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">NDArrayStorageType</a> storage_type_ = <a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aadf6c6faf0de1e55119c679180c99e584">kUndefinedStorage</a>;</div> |
| <div class="line"><a name="l00915"></a><span class="lineno"> 915</span> nnvm::NodeEntry entry_;</div> |
| <div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="keyword">mutable</span> TBlob tblob_;</div> |
| <div class="line"><a name="l00924"></a><span class="lineno"> 924</span> }; <span class="comment">// class NDArray</span></div> |
| <div class="line"><a name="l00925"></a><span class="lineno"> 925</span> </div> |
| <div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="keywordtype">size_t</span> <a class="code" href="namespacemxnet.html#ae4143fe21881cbf0174bba638e8e0330">num_aux_data</a>(<a class="code" href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">NDArrayStorageType</a> stype);</div> |
| <div class="line"><a name="l00930"></a><span class="lineno"> 930</span> </div> |
| <div class="line"><a name="l00942"></a><span class="lineno"> 942</span> <span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#ae7b0809624683afc59b6d7f7784d8bfb">CopyFromTo</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &from, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> *to, <span class="keywordtype">int</span> priority = 0);</div> |
| <div class="line"><a name="l00943"></a><span class="lineno"> 943</span> </div> |
| <div class="line"><a name="l00955"></a><span class="lineno"> 955</span> <span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#ae7b0809624683afc59b6d7f7784d8bfb">CopyFromTo</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &from, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a>& to, <span class="keywordtype">int</span> priority = 0);</div> |
| <div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div> |
| <div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#a15dfd6f3fa03dc2cf39dbab1225e1a51">ElementwiseSum</a>(<span class="keyword">const</span> std::vector<NDArray> &source, <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> *out, <span class="keywordtype">int</span> priority = 0);</div> |
| <div class="line"><a name="l00964"></a><span class="lineno"> 964</span> </div> |
| <div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> <a class="code" href="namespacemxnet.html#a4dafe3aae43025fd21bc44b98c18ed1e">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &lhs, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &rhs);</div> |
| <div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> <a class="code" href="namespacemxnet.html#a4dafe3aae43025fd21bc44b98c18ed1e">operator+</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &lhs, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &rhs);</div> |
| <div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> <a class="code" href="namespacemxnet.html#ae3356844b657c9ae1b84d3ddd56bccf6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &lhs, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &rhs);</div> |
| <div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> <a class="code" href="namespacemxnet.html#ae3356844b657c9ae1b84d3ddd56bccf6">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &lhs, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &rhs);</div> |
| <div class="line"><a name="l00999"></a><span class="lineno"> 999</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> <a class="code" href="namespacemxnet.html#af26b09fbcda865d34ec4fdad482d266a">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &lhs, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &rhs); \</div> |
| <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> <a class="code" href="namespacemxnet.html#af26b09fbcda865d34ec4fdad482d266a">operator*</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &lhs, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &rhs);</div> |
| <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> <a class="code" href="namespacemxnet.html#a502e3e00dc61cedb9c6eef711f1176ac">operator/</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &lhs, <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &rhs);</div> |
| <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> <a class="code" href="namespacemxnet.html#a502e3e00dc61cedb9c6eef711f1176ac">operator/</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> &lhs, <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &rhs);</div> |
| <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div> |
| <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> <span class="keywordtype">void</span> <a class="code" href="namespacemxnet.html#a5bf83454c8f41259eb9d471f59feda2b">RandomSeed</a>(uint32_t seed);</div> |
| <div class="line"><a name="l01033"></a><span class="lineno"> 1033</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#a12ec978e5dbe9092d21721a657c39756">NDArray</a> *out);</div> |
| <div class="line"><a name="l01040"></a><span class="lineno"> 1040</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#a12ec978e5dbe9092d21721a657c39756">NDArray</a> *out);</div> |
| <div class="line"><a name="l01047"></a><span class="lineno"> 1047</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#a12ec978e5dbe9092d21721a657c39756">NDArray</a> *out);</div> |
| <div class="line"><a name="l01053"></a><span class="lineno"> 1053</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#a12ec978e5dbe9092d21721a657c39756">NDArray</a> *out);</div> |
| <div class="line"><a name="l01059"></a><span class="lineno"> 1059</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#a12ec978e5dbe9092d21721a657c39756">NDArray</a> *out);</div> |
| <div class="line"><a name="l01066"></a><span class="lineno"> 1066</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#a12ec978e5dbe9092d21721a657c39756">NDArray</a> *out);</div> |
| <div class="line"><a name="l01073"></a><span class="lineno"> 1073</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#a12ec978e5dbe9092d21721a657c39756">NDArray</a> *out);</div> |
| <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> </div> |
| <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> </div> |
| <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> <span class="comment">//--------------------------------------------------------------</span></div> |
| <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> <span class="comment">// The following part are API Registration of NDArray functions.</span></div> |
| <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> <span class="comment">//--------------------------------------------------------------</span></div> |
| <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> </div> |
| <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> <span class="keyword">typedef</span> std::function<void (<a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> **used_vars,</div> |
| <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *scalars,</div> |
| <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <a class="code" href="classmxnet_1_1NDArray.html#a12ec978e5dbe9092d21721a657c39756">NDArray</a> **mutate_vars,</div> |
| <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <span class="keywordtype">int</span> num_params,</div> |
| <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="keywordtype">char</span> **param_keys,</div> |
| <div class="line"><a name="l01086"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ab0d55b0edf98cf8f3caeb050662ae9ec"> 1086</a></span> <span class="keywordtype">char</span> **param_vals)> <a class="code" href="namespacemxnet.html#ab0d55b0edf98cf8f3caeb050662ae9ec">NDArrayAPIFunction</a>;</div> |
| <div class="line"><a name="l01088"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818a"> 1088</a></span> <span class="keyword">enum</span> <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818a">NDArrayFunctionTypeMask</a> {</div> |
| <div class="line"><a name="l01090"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51"> 1090</a></span> <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">kNDArrayArgBeforeScalar</a> = 1,</div> |
| <div class="line"><a name="l01092"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aaef9818c8aae9d0046b3d9033a62fcfbb"> 1092</a></span> <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aaef9818c8aae9d0046b3d9033a62fcfbb">kScalarArgBeforeNDArray</a> = 1 << 1,</div> |
| <div class="line"><a name="l01101"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd"> 1101</a></span> <a class="code" href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">kAcceptEmptyMutateTarget</a> = 1 << 2</div> |
| <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> };</div> |
| <div class="line"><a name="l01104"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html"> 1104</a></span> <span class="keyword">struct </span><a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a></div> |
| <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> : <span class="keyword">public</span> dmlc::FunctionRegEntryBase<NDArrayFunctionReg,</div> |
| <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> NDArrayAPIFunction> {</div> |
| <div class="line"><a name="l01108"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa0847438b4f3f600ec61d6d544755a29"> 1108</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="l01110"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#ad7881779b7807c6357902bdaccfccde2"> 1110</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="l01112"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a9591e2abf6cbca0903aec582b96b4d95"> 1112</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="l01114"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a0b24615f30e4fbe69ee75c7b319735bf"> 1114</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="l01118"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#abd540887b52ba89572ad6a18b4ac739c"> 1118</a></span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#abd540887b52ba89572ad6a18b4ac739c">NDArrayFunctionReg</a>()</div> |
| <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> : num_use_vars(0),</div> |
| <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> num_mutate_vars(0),</div> |
| <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> num_scalars(0),</div> |
| <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> type_mask(0) {}</div> |
| <div class="line"><a name="l01129"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa606f0cec91a2e069553f98d7e7addcd"> 1129</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<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> &rhs,</div> |
| <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div> |
| <div class="line"><a name="l01131"></a><span class="lineno"> 1131</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="l01132"></a><span class="lineno"> 1132</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="l01133"></a><span class="lineno"> 1133</span> (*fsetvalue)(s[0], mutate_vars[0]);</div> |
| <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> };</div> |
| <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span> num_mutate_vars = 1; num_scalars = 1;</div> |
| <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span> this->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="l01137"></a><span class="lineno"> 1137</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> }</div> |
| <div class="line"><a name="l01145"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa7f4633d042179d90c067aeb8da62060"> 1145</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<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> &lhs,</div> |
| <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &mhs,</div> |
| <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &rhs,</div> |
| <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div> |
| <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> body = [fternary](<a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **used_vars,</div> |
| <div class="line"><a name="l01150"></a><span class="lineno"> 1150</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="l01151"></a><span class="lineno"> 1151</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="l01152"></a><span class="lineno"> 1152</span> (*fternary)(*used_vars[0], *used_vars[1], *used_vars[2], mutate_vars[0]);</div> |
| <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> };</div> |
| <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> num_use_vars = 3; num_mutate_vars = 1;</div> |
| <div class="line"><a name="l01155"></a><span class="lineno"> 1155</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="l01156"></a><span class="lineno"> 1156</span> this->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="l01157"></a><span class="lineno"> 1157</span> this->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="l01158"></a><span class="lineno"> 1158</span> this->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="l01159"></a><span class="lineno"> 1159</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> }</div> |
| <div class="line"><a name="l01167"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#aa57c24a22d49470496b221c72bf7a1a0"> 1167</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<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> &lhs,</div> |
| <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> <span class="keyword">const</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> &rhs,</div> |
| <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div> |
| <div class="line"><a name="l01170"></a><span class="lineno"> 1170</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="l01171"></a><span class="lineno"> 1171</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="l01172"></a><span class="lineno"> 1172</span> (*fbinary)(*used_vars[0], *used_vars[1], mutate_vars[0]);</div> |
| <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> };</div> |
| <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> num_use_vars = 2; num_mutate_vars = 1;</div> |
| <div class="line"><a name="l01175"></a><span class="lineno"> 1175</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="l01176"></a><span class="lineno"> 1176</span> this->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="l01177"></a><span class="lineno"> 1177</span> this->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="l01178"></a><span class="lineno"> 1178</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> }</div> |
| <div class="line"><a name="l01186"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#af6fc4419b30c74139eceb04e7d5758f5"> 1186</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<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> &lhs,</div> |
| <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> <span class="keyword">const</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> &rhs,</div> |
| <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div> |
| <div class="line"><a name="l01189"></a><span class="lineno"> 1189</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="l01190"></a><span class="lineno"> 1190</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="l01191"></a><span class="lineno"> 1191</span> (*fscalar)(*used_vars[0], s[0], mutate_vars[0]);</div> |
| <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> };</div> |
| <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> num_use_vars = 1; num_mutate_vars = 1; num_scalars = 1;</div> |
| <div class="line"><a name="l01194"></a><span class="lineno"> 1194</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="l01195"></a><span class="lineno"> 1195</span> this->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="l01196"></a><span class="lineno"> 1196</span> this->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="l01197"></a><span class="lineno"> 1197</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> }</div> |
| <div class="line"><a name="l01205"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a5f4c0751bc3111a8707b160d0e99e1af"> 1205</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<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> &src,</div> |
| <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> *out)) {</div> |
| <div class="line"><a name="l01207"></a><span class="lineno"> 1207</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="l01208"></a><span class="lineno"> 1208</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="l01209"></a><span class="lineno"> 1209</span> (*funary)(*used_vars[0], mutate_vars[0]);</div> |
| <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> };</div> |
| <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> num_use_vars = 1; num_mutate_vars = 1;</div> |
| <div class="line"><a name="l01212"></a><span class="lineno"> 1212</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="l01213"></a><span class="lineno"> 1213</span> this->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="l01214"></a><span class="lineno"> 1214</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> }</div> |
| <div class="line"><a name="l01222"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a220e1866bea35e103adbe23ff92855d9"> 1222</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<a class="code" href="structmxnet_1_1NDArrayFunctionReg.html#a220e1866bea35e103adbe23ff92855d9">set_function</a>(</div> |
| <div class="line"><a name="l01223"></a><span class="lineno"> 1223</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="l01224"></a><span class="lineno"> 1224</span> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a> *s,</div> |
| <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> <a class="code" href="classmxnet_1_1NDArray.html">NDArray</a> **mutate_vars,</div> |
| <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> <span class="keyword">const</span> std::map<std::string, std::string>& param)) {</div> |
| <div class="line"><a name="l01227"></a><span class="lineno"> 1227</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="l01228"></a><span class="lineno"> 1228</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="l01229"></a><span class="lineno"> 1229</span> std::map<std::string, std::string> param;</div> |
| <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < num_params; ++i) {</div> |
| <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> param[param_keys[i]] = param_vals[i];</div> |
| <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> }</div> |
| <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> fgeneric(used_vars, s, mutate_vars, param);</div> |
| <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> };</div> |
| <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> }</div> |
| <div class="line"><a name="l01242"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a970756506340ff688dbb447858b1963c"> 1242</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<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="l01243"></a><span class="lineno"> 1243</span> num_use_vars = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> }</div> |
| <div class="line"><a name="l01250"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#af0a5efd67efe9b7c14abd49652e79a14"> 1250</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<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="l01251"></a><span class="lineno"> 1251</span> num_mutate_vars = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> }</div> |
| <div class="line"><a name="l01258"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#a4f6a3ba75e30389c827b3b26a12415d1"> 1258</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<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="l01259"></a><span class="lineno"> 1259</span> num_scalars = n; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> }</div> |
| <div class="line"><a name="l01266"></a><span class="lineno"><a class="line" href="structmxnet_1_1NDArrayFunctionReg.html#acc3656ba948c28d3d155736ce064a3f4"> 1266</a></span> <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1NDArrayFunctionReg.html">NDArrayFunctionReg</a> &<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="l01267"></a><span class="lineno"> 1267</span> type_mask = tmask; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div> |
| <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> }</div> |
| <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> }; <span class="comment">// NDArrayFunctionReg</span></div> |
| <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> </div> |
| <div class="line"><a name="l01282"></a><span class="lineno"><a class="line" href="ndarray_8h.html#a21d0a394bdf34194b9954252d9476d56"> 1282</a></span> <span class="preprocessor">#define MXNET_REGISTER_NDARRAY_FUN(name) \</span></div> |
| <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span> <span class="preprocessor"> DMLC_REGISTRY_REGISTER(::mxnet::NDArrayFunctionReg, NDArrayFunctionReg, name)</span></div> |
| <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> <span class="preprocessor"></span></div> |
| <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> } <span class="comment">// namespace mxnet</span></div> |
| <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> </div> |
| <div class="line"><a name="l01287"></a><span class="lineno"><a class="line" href="namespacedmlc.html"> 1287</a></span> <span class="keyword">namespace </span>dmlc {</div> |
| <div class="line"><a name="l01289"></a><span class="lineno"> 1289</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="l01290"></a><span class="lineno"> 1290</span> } <span class="comment">// namespace dmlc</span></div> |
| <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> <span class="preprocessor">#endif // MXNET_NDARRAY_H_</span></div> |
| <div class="ttc" id="namespacemxnet_html_ace60510752753f459193f95cab0e9e1aa7636cc230df4abe46f3210846faac799"><div class="ttname"><a href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa7636cc230df4abe46f3210846faac799">mxnet::kRSPIdxErr</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:72</div></div> |
| <div class="ttc" id="namespacemxnet_html_a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608"><div class="ttname"><a href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aabf6395d98a9668e8066a0c0da5570608">mxnet::kDefaultStorage</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:61</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a567712180a066b783907b30f1cb2248a"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a567712180a066b783907b30f1cb2248a">mxnet::NDArray::ReshapeWithRecord</a></div><div class="ttdeci">NDArray ReshapeWithRecord(const TShape &shape)</div><div class="ttdoc">Get an reshaped NDArray. Supports autograd recording. </div></div> |
| <div class="ttc" id="namespacemxnet_html_a536b732faa980e1de446c552460ff76a"><div class="ttname"><a href="namespacemxnet.html#a536b732faa980e1de446c552460ff76a">mxnet::NDArrayStorageType</a></div><div class="ttdeci">NDArrayStorageType</div><div class="ttdef"><b>Definition:</b> ndarray.h:59</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a5203aa033a53942deaecb7bb3bf46480"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a5203aa033a53942deaecb7bb3bf46480">mxnet::NDArray::Load</a></div><div class="ttdeci">bool Load(dmlc::Stream *strm)</div><div class="ttdoc">load the content from binary stream </div></div> |
| <div class="ttc" id="namespacemxnet_1_1csr_html_a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7"><div class="ttname"><a href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42aa6ca1dbcb9c5858e0d28237ae3624ed7">mxnet::csr::kIdx</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:52</div></div> |
| <div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_af0a5efd67efe9b7c14abd49652e79a14"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#af0a5efd67efe9b7c14abd49652e79a14">mxnet::NDArrayFunctionReg::set_num_mutate_vars</a></div><div class="ttdeci">NDArrayFunctionReg & 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:1250</div></div> |
| <div class="ttc" id="namespacemxnet_html_ace60510752753f459193f95cab0e9e1a"><div class="ttname"><a href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1a">mxnet::NDArrayFormatErr</a></div><div class="ttdeci">NDArrayFormatErr</div><div class="ttdef"><b>Definition:</b> ndarray.h:66</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:364</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="classmxnet_1_1NDArray_html_a4d8f894c0306ad693ccf29278a613732"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a4d8f894c0306ad693ccf29278a613732">mxnet::NDArray::storage_type</a></div><div class="ttdeci">NDArrayStorageType storage_type() const </div><div class="ttdef"><b>Definition:</b> ndarray.h:297</div></div> |
| <div class="ttc" id="engine_8h_html"><div class="ttname"><a href="engine_8h.html">engine.h</a></div><div class="ttdoc">Engine that schedules all the operations according to dependency. </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_aebc61006705874666423c45f161df546"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aebc61006705874666423c45f161df546">mxnet::NDArray::operator/=</a></div><div class="ttdeci">NDArray & operator/=(const NDArray &src)</div><div class="ttdoc">elementwise division from current ndarray this mutate the current NDArray </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_aa2a801dd5c47b5bdd01a385d2c4327b8"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aa2a801dd5c47b5bdd01a385d2c4327b8">mxnet::NDArray::AtWithRecord</a></div><div class="ttdeci">NDArray AtWithRecord(index_t idx)</div><div class="ttdoc">Index a NDArray. </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a422c70b16646f8a273e9b4936fbe2e37"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a422c70b16646f8a273e9b4936fbe2e37">mxnet::NDArray::SyncCopyFromCPU</a></div><div class="ttdeci">void SyncCopyFromCPU(const void *data, size_t size) const </div><div class="ttdoc">Do a synchronize copy from a continugous CPU memory region. </div></div> |
| <div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_abd540887b52ba89572ad6a18b4ac739c"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#abd540887b52ba89572ad6a18b4ac739c">mxnet::NDArrayFunctionReg::NDArrayFunctionReg</a></div><div class="ttdeci">NDArrayFunctionReg()</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> ndarray.h:1118</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a15af0cf321dbe235b6900417d4847aae"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a15af0cf321dbe235b6900417d4847aae">mxnet::NDArray::ReshapeAndAlloc</a></div><div class="ttdeci">void ReshapeAndAlloc(const TShape &shape)</div><div class="ttdoc">Allocate the space if the allocation has been delayed or the requested size is bigger than the availa...</div><div class="ttdef"><b>Definition:</b> ndarray.h:588</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 &lhs, const NDArray &rhs)</div><div class="ttdoc">elementwise multiplication </div></div> |
| <div class="ttc" id="classmxnet_1_1Storage_html_a5bdbd7b3ab712cd9e087ab007bdc64dd"><div class="ttname"><a href="classmxnet_1_1Storage.html#a5bdbd7b3ab712cd9e087ab007bdc64dd">mxnet::Storage::Free</a></div><div class="ttdeci">virtual void Free(Handle handle)=0</div><div class="ttdoc">Free storage. </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a7acb6462c11e071949db2b0e1fbfd66e"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a7acb6462c11e071949db2b0e1fbfd66e">mxnet::NDArray::Slice</a></div><div class="ttdeci">NDArray Slice(index_t begin, index_t end) const </div><div class="ttdoc">Slice a NDArray. </div></div> |
| <div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_a970756506340ff688dbb447858b1963c"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#a970756506340ff688dbb447858b1963c">mxnet::NDArrayFunctionReg::set_num_use_vars</a></div><div class="ttdeci">NDArrayFunctionReg & 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:1242</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:135</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:1114</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 & set_function(void(*funary)(const NDArray &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:1205</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:563</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 & set_num_scalars(unsigned n)</div><div class="ttdoc">set the number of scalar arguments </div><div class="ttdef"><b>Definition:</b> ndarray.h:1258</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:137</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_aa3943fcf632304f6ab165b8628710609"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aa3943fcf632304f6ab165b8628710609">mxnet::NDArray::SyncCopyFromNDArray</a></div><div class="ttdeci">void SyncCopyFromNDArray(const NDArray &src, int i=-1, int j=-1)</div><div class="ttdoc">Copy from src.data()/aux_data(i) to this->data()/aux_data(j) </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a7df5a5d9956a481635fc43ca4d9a196c"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a7df5a5d9956a481635fc43ca4d9a196c">mxnet::NDArray::operator+=</a></div><div class="ttdeci">NDArray & operator+=(const NDArray &src)</div><div class="ttdoc">elementwise add to current space this mutate the current NDArray </div></div> |
| <div class="ttc" id="namespacemxnet_html_ace60510752753f459193f95cab0e9e1aaf3ee084ba1d9a6203922ff7c9ddb12e3"><div class="ttname"><a href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aaf3ee084ba1d9a6203922ff7c9ddb12e3">mxnet::kCSRIdxErr</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:70</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:1110</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:253</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a3d018c2cfcba0ad499ee5f8ac1475964"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a3d018c2cfcba0ad499ee5f8ac1475964">mxnet::NDArray::aux_ndarray</a></div><div class="ttdeci">NDArray aux_ndarray(size_t i) const </div><div class="ttdoc">Generate a deep copy of aux_data(i) returned as a default storage type NDArray. </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 & set_function(void(*fscalar)(const NDArray &lhs, const real_t &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:1186</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a4819d2e6431ccdf4b9f8efa8eb0bd1fd"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a4819d2e6431ccdf4b9f8efa8eb0bd1fd">mxnet::NDArray::SyncCopyToCPU</a></div><div class="ttdeci">void SyncCopyToCPU(void *data, size_t size) const </div><div class="ttdoc">Do a synchronize copy to a continugous CPU memory region. </div></div> |
| <div class="ttc" id="namespacemxnet_html_a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254"><div class="ttname"><a href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aa777c7ad3afa566f2e841f12c81aab254">mxnet::kCSRStorage</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:63</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a8f03aa51719b1c7d6ec8b812cdcb7f14"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a8f03aa51719b1c7d6ec8b812cdcb7f14">mxnet::NDArray::get_autograd_symbol</a></div><div class="ttdeci">nnvm::Symbol get_autograd_symbol() const </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_ad330f5e35c41078cb64cd84ae59a0bc3"><div class="ttname"><a href="classmxnet_1_1NDArray.html#ad330f5e35c41078cb64cd84ae59a0bc3">mxnet::NDArray::storage_handle</a></div><div class="ttdeci">Storage::Handle storage_handle() const </div><div class="ttdoc">get storage handle </div><div class="ttdef"><b>Definition:</b> ndarray.h:333</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:82</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:1108</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a0b212c0a0c4c83c64a6bf6d0c430602b"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a0b212c0a0c4c83c64a6bf6d0c430602b">mxnet::NDArray::LegacyLoad</a></div><div class="ttdeci">bool LegacyLoad(dmlc::Stream *strm, const uint32_t magic)</div><div class="ttdoc">load ndarrays before supporting sparse ndarrays </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 & set_function(void(*fternary)(const NDArray &lhs, const NDArray &mhs, const NDArray &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:1145</div></div> |
| <div class="ttc" id="namespacemxnet_html_a536b732faa980e1de446c552460ff76aadf6c6faf0de1e55119c679180c99e584"><div class="ttname"><a href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aadf6c6faf0de1e55119c679180c99e584">mxnet::kUndefinedStorage</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:60</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_ada618436206b59aa3ffcdb8474d5051c"><div class="ttname"><a href="classmxnet_1_1NDArray.html#ada618436206b59aa3ffcdb8474d5051c">mxnet::NDArray::Reshape</a></div><div class="ttdeci">NDArray Reshape(const TShape &shape) const </div><div class="ttdoc">Get an reshaped NDArray. </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_aee74980eb87bf7c482d15458f5194cbe"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aee74980eb87bf7c482d15458f5194cbe">mxnet::NDArray::fresh_out_grad</a></div><div class="ttdeci">bool fresh_out_grad() const </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a0d868e5303669d6ce8a5ada1c34940ac"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a0d868e5303669d6ce8a5ada1c34940ac">mxnet::NDArray::SliceWithRecord</a></div><div class="ttdeci">NDArray SliceWithRecord(index_t begin, index_t end)</div><div class="ttdoc">Slice a NDArray. Supports recording with autograd. </div></div> |
| <div class="ttc" id="namespacemxnet_1_1rowsparse_html_a0ad4c619684fa4d442c7076c18fef232"><div class="ttname"><a href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232">mxnet::rowsparse::RowSparseAuxType</a></div><div class="ttdeci">RowSparseAuxType</div><div class="ttdef"><b>Definition:</b> ndarray.h:56</div></div> |
| <div class="ttc" id="namespacemxnet_html_ace60510752753f459193f95cab0e9e1aaf64429479d4a48998e6cd122a3117628"><div class="ttname"><a href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aaf64429479d4a48998e6cd122a3117628">mxnet::kCSRShapeErr</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:68</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:301</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:1092</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_1NDArray_html_af6d456d1e9f105fe913b696fe88efdc3"><div class="ttname"><a href="classmxnet_1_1NDArray.html#af6d456d1e9f105fe913b696fe88efdc3">mxnet::NDArray::data_ndarray</a></div><div class="ttdeci">NDArray data_ndarray() const </div><div class="ttdoc">Generate a deep copy of data() returned as a default storage type NDArray. </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_1_1rowsparse_html_a0ad4c619684fa4d442c7076c18fef232ac52a46037d8cfe90ccc5da8712c7f6da"><div class="ttname"><a href="namespacemxnet_1_1rowsparse.html#a0ad4c619684fa4d442c7076c18fef232ac52a46037d8cfe90ccc5da8712c7f6da">mxnet::rowsparse::kIdx</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:56</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_aa7a198e3e4c80a48cf92a913009aab8f"><div class="ttname"><a href="classmxnet_1_1NDArray.html#aa7a198e3e4c80a48cf92a913009aab8f">mxnet::NDArray::operator=</a></div><div class="ttdeci">NDArray & operator=(real_t scalar)</div><div class="ttdoc">set all the elements in ndarray to be scalar </div></div> |
| <div class="ttc" id="namespacemxnet_html_a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd"><div class="ttname"><a href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aa334598420a4246d5412ddc346b2b57bd">mxnet::kAcceptEmptyMutateTarget</a></div><div class="ttdoc">whether this function allows the handles in the target to be empty NDArray that are not yet initializ...</div><div class="ttdef"><b>Definition:</b> ndarray.h:1101</div></div> |
| <div class="ttc" id="namespacemxnet_html_ace60510752753f459193f95cab0e9e1aa200492eeec6fa431683ef0d943bfbc2d"><div class="ttname"><a href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa200492eeec6fa431683ef0d943bfbc2d">mxnet::kRSPShapeErr</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:71</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_1Engine_html_aed51bd7f294d9f2b569764a0c151d883"><div class="ttname"><a href="classmxnet_1_1Engine.html#aed51bd7f294d9f2b569764a0c151d883">mxnet::Engine::WaitForVar</a></div><div class="ttdeci">virtual void WaitForVar(VarHandle var)=0</div><div class="ttdoc">Wait for a variable. </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_ad35ba01da6949494afe895b7429e4fc3"><div class="ttname"><a href="classmxnet_1_1NDArray.html#ad35ba01da6949494afe895b7429e4fc3">mxnet::NDArray::operator-=</a></div><div class="ttdeci">NDArray & operator-=(const NDArray &src)</div><div class="ttdoc">elementwise subtract from current ndarray this mutate the current NDArray </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a5e2eb64751872f537ae3cb25f949fff1"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a5e2eb64751872f537ae3cb25f949fff1">mxnet::NDArray::ctx</a></div><div class="ttdeci">Context ctx() const </div><div class="ttdef"><b>Definition:</b> ndarray.h:282</div></div> |
| <div class="ttc" id="namespacemxnet_html_ae7b0809624683afc59b6d7f7784d8bfb"><div class="ttname"><a href="namespacemxnet.html#ae7b0809624683afc59b6d7f7784d8bfb">mxnet::CopyFromTo</a></div><div class="ttdeci">void CopyFromTo(const NDArray &from, const 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="namespacemxnet_1_1csr_html_a74a2e3877ef7b348d5374a9d604aba42"><div class="ttname"><a href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42">mxnet::csr::CSRAuxType</a></div><div class="ttdeci">CSRAuxType</div><div class="ttdef"><b>Definition:</b> ndarray.h:52</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="namespacemxnet_1_1csr_html_a74a2e3877ef7b348d5374a9d604aba42ad9dcbaec1c8c6ca9d69648c83354aac1"><div class="ttname"><a href="namespacemxnet_1_1csr.html#a74a2e3877ef7b348d5374a9d604aba42ad9dcbaec1c8c6ca9d69648c83354aac1">mxnet::csr::kIndPtr</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:52</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:343</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:289</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a0f59c72c8caefcc069d5839d35288cd1"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a0f59c72c8caefcc069d5839d35288cd1">mxnet::NDArray::storage_initialized</a></div><div class="ttdeci">bool storage_initialized() const </div><div class="ttdoc">Returns true if a sparse ndarray's aux_data and storage are initialized Throws an exception if the in...</div><div class="ttdef"><b>Definition:</b> ndarray.h:312</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:41</div></div> |
| <div class="ttc" id="structmxnet_1_1Context_html_a8e090b1fcc96b682512bcc22fc521f80"><div class="ttname"><a href="structmxnet_1_1Context.html#a8e090b1fcc96b682512bcc22fc521f80">mxnet::Context::CPUShared</a></div><div class="ttdeci">static Context CPUShared(int32_t dev_id=0)</div></div> |
| <div class="ttc" id="namespacemxnet_html_a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3"><div class="ttname"><a href="namespacemxnet.html#a536b732faa980e1de446c552460ff76aac095f52c31076adc7207f4a4f17d7aa3">mxnet::kRowSparseStorage</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:62</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="classmxnet_1_1NDArray_html_adcccfd3a4e7a334274677dfc0748d8fe"><div class="ttname"><a href="classmxnet_1_1NDArray.html#adcccfd3a4e7a334274677dfc0748d8fe">mxnet::NDArray::CheckAndAllocData</a></div><div class="ttdeci">void CheckAndAllocData(const TShape &storage_shape) const </div><div class="ttdef"><b>Definition:</b> ndarray.h:604</div></div> |
| <div class="ttc" id="namespacemxnet_html_ae4143fe21881cbf0174bba638e8e0330"><div class="ttname"><a href="namespacemxnet.html#ae4143fe21881cbf0174bba638e8e0330">mxnet::num_aux_data</a></div><div class="ttdeci">size_t num_aux_data(NDArrayStorageType stype)</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 & set_type_mask(int tmask)</div><div class="ttdoc">set type mask </div><div class="ttdef"><b>Definition:</b> ndarray.h:1266</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:105</div></div> |
| <div class="ttc" id="classmxnet_1_1Engine_html_ac71feb4f966cd4573452bd148b850c82"><div class="ttname"><a href="classmxnet_1_1Engine.html#ac71feb4f966cd4573452bd148b850c82">mxnet::Engine::PushAsync</a></div><div class="ttdeci">virtual void PushAsync(AsyncFn exec_fun, Context exec_ctx, std::vector< VarHandle > const &const_vars, std::vector< VarHandle > const &mutable_vars, FnProperty prop=FnProperty::kNormal, int priority=0, const char *opr_name=nullptr)=0</div><div class="ttdoc">Push an asynchronous operation to the engine. </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:351</div></div> |
| <div class="ttc" id="classmxnet_1_1Storage_html_a8ac978f345ba93f26b11ae4331406561"><div class="ttname"><a href="classmxnet_1_1Storage.html#a8ac978f345ba93f26b11ae4331406561">mxnet::Storage::Alloc</a></div><div class="ttdeci">Handle Alloc(size_t size, Context ctx)</div><div class="ttdoc">Allocate a new contiguous memory for a given size. </div><div class="ttdef"><b>Definition:</b> storage.h:66</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 &lhs, const NDArray &rhs)</div><div class="ttdoc">elementwise subtraction </div></div> |
| <div class="ttc" id="namespacemxnet_html_ace60510752753f459193f95cab0e9e1aa11ce5dbb8ad355e9ee5a678f2f51a5bb"><div class="ttname"><a href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa11ce5dbb8ad355e9ee5a678f2f51a5bb">mxnet::kCSRIndPtrErr</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:69</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 & set_function(void(*fsetvalue)(const real_t &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:1129</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 &lhs, const NDArray &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:1104</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a3b615512a8fb89b9edc99b35064ead95"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a3b615512a8fb89b9edc99b35064ead95">mxnet::NDArray::At</a></div><div class="ttdeci">NDArray At(index_t idx) const </div><div class="ttdoc">Index a NDArray. </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a09ff97852143fdd75dd1e071d0d53266"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a09ff97852143fdd75dd1e071d0d53266">mxnet::NDArray::entry_</a></div><div class="ttdeci">entry_({nullptr, 0, 0})</div><div class="ttdef"><b>Definition:</b> ndarray.h:110</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 & set_function(void(*fbinary)(const NDArray &lhs, const NDArray &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:1167</div></div> |
| <div class="ttc" id="structmxnet_1_1Context_html_a4bb231d70623fde216de51589347e513"><div class="ttname"><a href="structmxnet_1_1Context.html#a4bb231d70623fde216de51589347e513">mxnet::Context::CPU</a></div><div class="ttdeci">static Context CPU(int32_t dev_id=0)</div></div> |
| <div class="ttc" id="classmxnet_1_1Imperative_html"><div class="ttname"><a href="classmxnet_1_1Imperative.html">mxnet::Imperative</a></div><div class="ttdoc">runtime functions for NDArray </div><div class="ttdef"><b>Definition:</b> imperative.h:56</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a02fe304d3498632571fea1a7c1fd91d6"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a02fe304d3498632571fea1a7c1fd91d6">mxnet::NDArray::aux_type</a></div><div class="ttdeci">int aux_type(size_t i) const </div><div class="ttdef"><b>Definition:</b> ndarray.h:292</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a4a00e2868ad8b9ccb0a48079635b110f"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a4a00e2868ad8b9ccb0a48079635b110f">mxnet::NDArray::Copy</a></div><div class="ttdeci">NDArray Copy(Context ctx) const </div><div class="ttdoc">return a new copy this NDArray </div></div> |
| <div class="ttc" id="classmxnet_1_1engine_1_1CallbackOnComplete_html"><div class="ttname"><a href="classmxnet_1_1engine_1_1CallbackOnComplete.html">mxnet::engine::CallbackOnComplete</a></div><div class="ttdoc">OnComplete Callback to the engine, called by AsyncFn when action completes. </div><div class="ttdef"><b>Definition:</b> engine.h:56</div></div> |
| <div class="ttc" id="base_8h_html"><div class="ttname"><a href="base_8h.html">base.h</a></div><div class="ttdoc">configuation of mxnet as well as basic data structure. </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a1b47078a60bf0369ff0a7df893caf65b"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a1b47078a60bf0369ff0a7df893caf65b">mxnet::NDArray::operator*=</a></div><div class="ttdeci">NDArray & operator*=(const NDArray &src)</div><div class="ttdoc">elementwise multiplication to current ndarray this mutate the current NDArray </div></div> |
| <div class="ttc" id="namespacemxnet_html_a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51"><div class="ttname"><a href="namespacemxnet.html#a89a5f0f5cfd9e1e94604a7b42dda818aabbc1ba0bb3f8647dcfd8bad69efdbb51">mxnet::kNDArrayArgBeforeScalar</a></div><div class="ttdoc">all the use_vars should go before scalar </div><div class="ttdef"><b>Definition:</b> ndarray.h:1090</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 &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:531</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a557fe59b005fc7040db02882b12c3ff5"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a557fe59b005fc7040db02882b12c3ff5">mxnet::NDArray::CheckAndAlloc</a></div><div class="ttdeci">void CheckAndAlloc(const std::vector< TShape > &aux_shapes) const </div><div class="ttdef"><b>Definition:</b> ndarray.h:599</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:1112</div></div> |
| <div class="ttc" id="classmxnet_1_1Engine_html_ae0a23da15ef63d9479c7468e1f2f825f"><div class="ttname"><a href="classmxnet_1_1Engine.html#ae0a23da15ef63d9479c7468e1f2f825f">mxnet::Engine::Get</a></div><div class="ttdeci">static Engine * Get()</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a524662078483f8f46c6c71714fbfde0b"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a524662078483f8f46c6c71714fbfde0b">mxnet::NDArray::Save</a></div><div class="ttdeci">void Save(dmlc::Stream *strm) const </div><div class="ttdoc">save the content into binary stream </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a15809565dc2e38b3a8f62226b086fd29"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a15809565dc2e38b3a8f62226b086fd29">mxnet::NDArray::CheckAndAllocAuxData</a></div><div class="ttdeci">void CheckAndAllocAuxData(size_t i, const TShape &aux_shape) const </div><div class="ttdef"><b>Definition:</b> ndarray.h:609</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a6bdd6008f99b9f05ae45d44fa13d013e"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a6bdd6008f99b9f05ae45d44fa13d013e">mxnet::NDArray::NDArray</a></div><div class="ttdeci">NDArray(const NDArrayStorageType stype, const TShape &shape, const TBlob &data, const std::vector< TBlob > &aux_data, int dev_id)</div><div class="ttdoc">constructing a static NDArray of non-default storage that shares data with TBlob Use with caution: al...</div><div class="ttdef"><b>Definition:</b> ndarray.h:183</div></div> |
| <div class="ttc" id="namespacemxnet_html_ace60510752753f459193f95cab0e9e1aa322b8b178929b43f1b4b16c8cb9003ef"><div class="ttname"><a href="namespacemxnet.html#ace60510752753f459193f95cab0e9e1aa322b8b178929b43f1b4b16c8cb9003ef">mxnet::kNormalErr</a></div><div class="ttdef"><b>Definition:</b> ndarray.h:67</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:574</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:133</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_ad8194805eabb65d8a9d33fda840b66a9"><div class="ttname"><a href="classmxnet_1_1NDArray.html#ad8194805eabb65d8a9d33fda840b66a9">mxnet::NDArray::aux_data</a></div><div class="ttdeci">TBlob aux_data(size_t i) const </div><div class="ttdef"><b>Definition:</b> ndarray.h:263</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:142</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:79</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 &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:156</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< NDArray > &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< void(NDArray **used_vars, real_t *scalars, NDArray **mutate_vars, int num_params, char **param_keys, char **param_vals)> NDArrayAPIFunction</div><div class="ttdoc">definition of NDArray function </div><div class="ttdef"><b>Definition:</b> ndarray.h:1086</div></div> |
| <div class="ttc" id="namespacemxnet_html_ae82f70918b2d946f7ad66a158b1733dc"><div class="ttname"><a href="namespacemxnet.html#ae82f70918b2d946f7ad66a158b1733dc">mxnet::SampleNegBinomial</a></div><div class="ttdeci">void SampleNegBinomial(int32_t k, real_t p, NDArray *out)</div><div class="ttdoc">Sample negative binomial distribution for each elements of out. </div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_a32ed2be4ecf94c58b19bd43b48f2b1fa"><div class="ttname"><a href="classmxnet_1_1NDArray.html#a32ed2be4ecf94c58b19bd43b48f2b1fa">mxnet::NDArray::set_fresh_out_grad</a></div><div class="ttdeci">void set_fresh_out_grad(bool state) const </div></div> |
| <div class="ttc" id="structmxnet_1_1NDArrayFunctionReg_html_a220e1866bea35e103adbe23ff92855d9"><div class="ttname"><a href="structmxnet_1_1NDArrayFunctionReg.html#a220e1866bea35e103adbe23ff92855d9">mxnet::NDArrayFunctionReg::set_function</a></div><div class="ttdeci">NDArrayFunctionReg & set_function(void(*fgeneric)(NDArray **used_vars, real_t *s, NDArray **mutate_vars, const std::map< std::string, std::string > &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:1222</div></div> |
| <div class="ttc" id="classmxnet_1_1NDArray_html_ade97bd4e93028ede123f6ccec5b3b038"><div class="ttname"><a href="classmxnet_1_1NDArray.html#ade97bd4e93028ede123f6ccec5b3b038">mxnet::NDArray::SyncCheckFormat</a></div><div class="ttdeci">void SyncCheckFormat(const bool full_check) const </div><div class="ttdoc">check whether the NDArray format is valid </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:59</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 &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:94</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 &lhs, const NDArray &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:1088</div></div> |
| </div><!-- fragment --></div><!-- contents --> |
| <!-- start footer part --> |
| <hr class="footer"/><address class="footer"><small> |
| Generated on Sun Jan 28 2018 04:50:57 for mxnet by <a href="http://www.doxygen.org/index.html"> |
| <img alt="doxygen" class="footer" src="doxygen.png"/> |
| </a> 1.8.6 |
| </small></address> |
| </body> |
| </html> |