blob: 0bf6ff50be72601ae17ee3e0e281747fa1baac88 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mxnet: /work/mxnet/include/mxnet/base.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">mxnet
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1143c7affb9ebd026cb6818dd282def7.html">mxnet</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">base.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="include_2mxnet_2base_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<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>&#160;<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>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<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>&#160;<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>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<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>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<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>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<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>&#160;<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>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<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>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * under the License.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef MXNET_BASE_H_</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define MXNET_BASE_H_</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="3rdparty_2dmlc-core_2include_2dmlc_2base_8h.html">dmlc/base.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="3rdparty_2dmlc-core_2include_2dmlc_2io_8h.html">dmlc/io.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="type__traits_8h.html">dmlc/type_traits.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="parameter_8h.html">dmlc/parameter.h</a>&quot;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="tensor_8h.html">mshadow/tensor.h</a>&quot;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">// nnvm headers for symbolic construction.</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="op_8h.html">nnvm/op.h</a>&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="symbolic_8h.html">nnvm/symbolic.h</a>&quot;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="libinfo_8h.html">libinfo.h</a>&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="include_2mxnet_2tuple_8h.html">tuple.h</a>&quot;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#ifdef MXNET_EXPORTS</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#define MXNET_API __declspec(dllexport)</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#define MXNET_API __declspec(dllimport)</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="include_2mxnet_2base_8h.html#a91a09948aaaffa1eb64508db79009a05"> 49</a></span>&#160;<span class="preprocessor">#define MXNET_API</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#ifndef MXNET_PREDICT_ONLY</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="include_2mxnet_2base_8h.html#a966330f8fb9e6e7bd65ab3603beb49db"> 56</a></span>&#160;<span class="preprocessor">#define MXNET_PREDICT_ONLY 0</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="include_2mxnet_2base_8h.html#aee5302444d57230419d0cd77bf72770d"> 60</a></span>&#160;<span class="preprocessor">#define MXNET_MAJOR 2</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="include_2mxnet_2base_8h.html#aea13dab0ddd61ec142feb0b6759c6acf"> 62</a></span>&#160;<span class="preprocessor">#define MXNET_MINOR 0</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="include_2mxnet_2base_8h.html#a76b95738a0fa0478cd508f324d2ac49d"> 64</a></span>&#160;<span class="preprocessor">#define MXNET_PATCH 0</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="include_2mxnet_2base_8h.html#a18d0da52a992a3360eaa481b43094e80"> 66</a></span>&#160;<span class="preprocessor">#define MXNET_VERSION (MXNET_MAJOR * 10000 + MXNET_MINOR * 100 + MXNET_PATCH)</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="include_2mxnet_2base_8h.html#a4a85852d8252d23300a8364d48a1c8ea"> 68</a></span>&#160;<span class="preprocessor">#define MXNET_MAKE_VERSION(major, minor, patch) ((major)*10000 + (minor)*100 + patch)</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="include_2mxnet_2base_8h.html#ae34be2bf889657a1452b87fd36f034c3"> 72</a></span>&#160;<span class="preprocessor">#define PROFILER_MESSAGE_FUNCNAME (__FUNCTION__)</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemxnet.html">mxnet</a> {</div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a850af9d76d9d4beaeb5234c1434973e3"> 77</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="structmshadow_1_1cpu.html">mshadow::cpu</a> <a class="code" href="namespacemxnet.html#a850af9d76d9d4beaeb5234c1434973e3">cpu</a>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a31ef33571a4f6ba8847eeee1f4907141"> 79</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="structmshadow_1_1gpu.html">mshadow::gpu</a> <a class="code" href="namespacemxnet.html#a31ef33571a4f6ba8847eeee1f4907141">gpu</a>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef"> 81</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">mshadow::index_t</a> <a class="code" href="namespacemxnet.html#abadedc1b42ee3e5b8852e63783b982ef">index_t</a>;</div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a91873a0f8f5b49fb21c872197e727f08"> 83</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespacemshadow.html#a8b60ab0b7ba58978695b4ab7e63268b9">mshadow::lapack_index_t</a> <a class="code" href="namespacemxnet.html#a91873a0f8f5b49fb21c872197e727f08">lapack_index_t</a>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4"> 85</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespacemshadow.html#a10a73dbdb4a2b833495c2315b6da69ce">mshadow::default_real_t</a> <a class="code" href="namespacemxnet.html#a4421326e33f2a848cb2fa3e70ab24ff4">real_t</a>;</div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="namespacemxnet.html#ac2fb286fd7ddfbc7af1456f6c7a7ee52"> 87</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classnnvm_1_1Op.html">Op</a> = <a class="code" href="namespacemxnet.html#ac2fb286fd7ddfbc7af1456f6c7a7ee52">nnvm::Op</a>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html"> 90</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmxnet_1_1Context.html">Context</a> {</div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60e"> 92</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60e">DeviceType</a> {</div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea1aced5778bb0d64d4ce6bd4c0a86d140"> 93</a></span>&#160; <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea1aced5778bb0d64d4ce6bd4c0a86d140">kCPU</a> = <a class="code" href="structmshadow_1_1cpu.html#a57f74b500825e21c0c246ad5b4e5016b">cpu::kDevMask</a>,</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eab21bed4d5cee411db15283d7529f28cf"> 94</a></span>&#160; <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eab21bed4d5cee411db15283d7529f28cf">kGPU</a> = <a class="code" href="structmshadow_1_1gpu.html#a15467f39ddeed96fa259efda7c988f05">gpu::kDevMask</a>,</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eaa2e12b86e0f957dc14d45863eaa47f34"> 95</a></span>&#160; <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eaa2e12b86e0f957dc14d45863eaa47f34">kCPUPinned</a> = 3,</div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea80c6f8f13908c5805cf12784fca77e78"> 96</a></span>&#160; <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea80c6f8f13908c5805cf12784fca77e78">kCPUShared</a> = 5,</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; };</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3"> 99</a></span>&#160; <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60e">DeviceType</a> <a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>;</div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9"> 101</a></span>&#160; int32_t <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>;</div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a290642a21363bef82bcb32cf7f98b884"> 103</a></span>&#160; <a class="code" href="structmxnet_1_1Context.html#a290642a21363bef82bcb32cf7f98b884">Context</a>() : <a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>(<a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea1aced5778bb0d64d4ce6bd4c0a86d140">kCPU</a>), <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>(0) {}</div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a41f5317543ececa2d0feeea1093e219c"> 108</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60e">DeviceType</a> <a class="code" href="structmxnet_1_1Context.html#a41f5317543ececa2d0feeea1093e219c">dev_mask</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a> == <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eaa2e12b86e0f957dc14d45863eaa47f34">kCPUPinned</a> || <a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a> == <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea80c6f8f13908c5805cf12784fca77e78">kCPUShared</a>)</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea1aced5778bb0d64d4ce6bd4c0a86d140">kCPU</a>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#af2514ea43328d921a74423b7670a3fad"> 116</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="structmxnet_1_1Context.html#af2514ea43328d921a74423b7670a3fad">real_dev_id</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a> == <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eaa2e12b86e0f957dc14d45863eaa47f34">kCPUPinned</a> || <a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a> == <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eab21bed4d5cee411db15283d7529f28cf">kGPU</a>)</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structmxnet_1_1Context.html#afd07473e20810635cb3fffc216d76494">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="structmxnet_1_1Context.html">Context</a>&amp; b) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a8b8d414a429c12ab55cfa9ed13539393"> 132</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structmxnet_1_1Context.html#a8b8d414a429c12ab55cfa9ed13539393">operator==</a>(<span class="keyword">const</span> <a class="code" href="structmxnet_1_1Context.html">Context</a>&amp; b)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a> == b.<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a> &amp;&amp; <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a> == b.<a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a7e84dc72147472e72b50e8545780fd1e"> 140</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structmxnet_1_1Context.html#a7e84dc72147472e72b50e8545780fd1e">operator!=</a>(<span class="keyword">const</span> <a class="code" href="structmxnet_1_1Context.html">Context</a>&amp; b)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == b);</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a9ea910ddb7e15d51320806b1666bf6c5"> 147</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="structmxnet_1_1Context.html#a9ea910ddb7e15d51320806b1666bf6c5">Save</a>(<a class="code" href="classdmlc_1_1Stream.html">dmlc::Stream</a>* strm)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; strm-&gt;<a class="code" href="classdmlc_1_1Stream.html#a622f1377a64e841ca80c2dd8e1fa5ffd">Write</a>(&amp;<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>, <span class="keyword">sizeof</span>(<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>));</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; strm-&gt;<a class="code" href="classdmlc_1_1Stream.html#a622f1377a64e841ca80c2dd8e1fa5ffd">Write</a>(&amp;<a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>, <span class="keyword">sizeof</span>(<a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>));</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a882305327a53b9b9a82f5802b4b013e3"> 156</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structmxnet_1_1Context.html#a882305327a53b9b9a82f5802b4b013e3">Load</a>(<a class="code" href="classdmlc_1_1Stream.html">dmlc::Stream</a>* strm) {</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (strm-&gt;<a class="code" href="classdmlc_1_1Stream.html#a747da13b990ff68dc9bf9ea5224ad174">Read</a>(&amp;<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>, <span class="keyword">sizeof</span>(<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>)) != <span class="keyword">sizeof</span>(<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>))</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (strm-&gt;<a class="code" href="classdmlc_1_1Stream.html#a747da13b990ff68dc9bf9ea5224ad174">Read</a>(&amp;<a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>, <span class="keyword">sizeof</span>(int32_t)) != <span class="keyword">sizeof</span>(int32_t))</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a7433936d1daf38f7dced0de49fbe6a4b"> 164</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> int32_t <a class="code" href="structmxnet_1_1Context.html#a7433936d1daf38f7dced0de49fbe6a4b">kMaxDevType</a> = 6;</div>
<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="structmxnet_1_1Context.html#a958219ae412395685ef1d82af0dbbe67"> 166</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> int32_t <a class="code" href="structmxnet_1_1Context.html#a958219ae412395685ef1d82af0dbbe67">kMaxDevID</a> = 16;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="structmxnet_1_1Context.html#a7cea13406ae21ae557d3455f54670a4a">Create</a>(<a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60e">DeviceType</a> <a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>, int32_t <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a> = -1);</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="structmxnet_1_1Context.html#a4bb231d70623fde216de51589347e513">CPU</a>(int32_t <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a> = 0);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="structmxnet_1_1Context.html#a39d1a2b59bce135da127475995a58671">GPU</a>(int32_t <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a> = -1);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> int32_t <a class="code" href="structmxnet_1_1Context.html#adde995df8e2b9871151921a932788cd2">GetGPUCount</a>();</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structmxnet_1_1Context.html#ab50bb4c3439d200f5e82702cec587aef">GPUDriverPresent</a>();</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> int32_t <a class="code" href="structmxnet_1_1Context.html#a8368603622d6af4609fe78f572387b59">GetGPUStreamsPerWorker</a>();</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structmxnet_1_1Context.html#a7e1512621b22a14035f740703d3eb006">GetGPUMemoryInformation</a>(<span class="keywordtype">int</span> dev, uint64_t* free, uint64_t* total);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="structmxnet_1_1Context.html#a420d4e662a5129b202507f42c991391c">CPUPinned</a>(int32_t <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a> = -1);</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="structmxnet_1_1Context.html#a8e090b1fcc96b682512bcc22fc521f80">CPUShared</a>(int32_t <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a> = 0);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="structmxnet_1_1Context.html#a4b7e2c87496a90b6b0ed06eab61956c4">FromString</a>(<span class="keyword">const</span> std::string&amp; str);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; </div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDA</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> CudaLibChecks();</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDNN</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> CuDNNLibChecks();</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;};</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDA</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classmxnet_1_1GPUAuxStream.html"> 234</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmxnet_1_1GPUAuxStream.html">GPUAuxStream</a> {</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classmxnet_1_1GPUAuxStream.html#aaf171cedf3d88ab52b94df5fdaa391bf"> 240</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classmxnet_1_1GPUAuxStream.html#aaf171cedf3d88ab52b94df5fdaa391bf">GPUAuxStream</a>(<a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html">mshadow::Stream&lt;gpu&gt;</a>* primary_stream)</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; : primary_stream_(primary_stream),</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; aux_stream_(primary_stream),</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; gpu_stream_sync_event_(nullptr) {</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structmxnet_1_1Context.html#a8368603622d6af4609fe78f572387b59">Context::GetGPUStreamsPerWorker</a>() &gt;= 2) {</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// Create auxiliary stream on the same device with the same properties as the primary stream</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordtype">bool</span> primary_has_blas_handle =</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; primary_stream-&gt;<a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html#a19575a11766ad1de72a5d174300e79a6">blas_handle_ownership_</a> == <a class="code" href="structmshadow_1_1Stream.html">mshadow::Stream&lt;gpu&gt;::OwnHandle</a>;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordtype">bool</span> primary_has_dnn_handle =</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; primary_stream-&gt;<a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html#a5a71ddbac6b9e29728b13a384ca6af98">dnn_handle_ownership_</a> == <a class="code" href="structmshadow_1_1Stream.html">mshadow::Stream&lt;gpu&gt;::OwnHandle</a>;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; aux_stream_ = <a class="code" href="namespacemshadow.html#a89b0009770915378c66bc9647040776d">mshadow::NewStream&lt;gpu&gt;</a>(</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; primary_has_blas_handle, primary_has_dnn_handle, primary_stream-&gt;<a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html#a08409eff15849ff7abec6efe8019e396">dev_id</a>);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#a8f433b4dd005a854eec58178ffd3d4bd">MSHADOW_CUDA_CALL</a>(cudaEventCreateWithFlags(&amp;gpu_stream_sync_event_, cudaEventDisableTiming));</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classmxnet_1_1GPUAuxStream.html#af47783e8d21ce90a42e1f4fc74b01119"> 256</a></span>&#160; <a class="code" href="classmxnet_1_1GPUAuxStream.html#af47783e8d21ce90a42e1f4fc74b01119">~GPUAuxStream</a>() {</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// If the aux_stream_ == primary_stream_, then we created no new streams to destroy.</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (aux_stream_ != primary_stream_) {</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#a144171091678fc9f3cbc8a9612db899d">MSHADOW_CATCH_ERROR</a>(<a class="code" href="namespacemshadow.html#a5d8687821fd6ecf8e271b996df51415c">mshadow::DeleteStream&lt;gpu&gt;</a>(aux_stream_));</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#a144171091678fc9f3cbc8a9612db899d">MSHADOW_CATCH_ERROR</a>(cudaEventDestroy(gpu_stream_sync_event_));</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div>
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classmxnet_1_1GPUAuxStream.html#a2add80e8e23386df1646434630f405f4"> 266</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1GPUAuxStream.html#a2add80e8e23386df1646434630f405f4">PreAuxStreamUseSync</a>() {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="comment">// If the aux_stream_ == primary_stream_, then no synchronization is necessary.</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (aux_stream_ != primary_stream_)</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="classmxnet_1_1GPUAuxStream.html#a6976536b11894e584f72678213aba993">StreamSync</a>(primary_stream_, aux_stream_, gpu_stream_sync_event_);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div>
<div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classmxnet_1_1GPUAuxStream.html#a3f103abfadfb2f6d637430b2d92cce7b"> 274</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1GPUAuxStream.html#a3f103abfadfb2f6d637430b2d92cce7b">PostAuxStreamUseSync</a>() {</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="comment">// If the aux_stream_ == primary_stream_, then no synchronization is necessary.</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (aux_stream_ != primary_stream_)</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="classmxnet_1_1GPUAuxStream.html#a6976536b11894e584f72678213aba993">StreamSync</a>(aux_stream_, primary_stream_, gpu_stream_sync_event_);</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classmxnet_1_1GPUAuxStream.html#adb9e0d791fdc2370b946e95007385bb0"> 280</a></span>&#160; <a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html">mshadow::Stream&lt;gpu&gt;</a>* <a class="code" href="classmxnet_1_1GPUAuxStream.html#adb9e0d791fdc2370b946e95007385bb0">GetStream</a>() {</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> aux_stream_;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div>
<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classmxnet_1_1GPUAuxStream.html#a6976536b11894e584f72678213aba993"> 289</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1GPUAuxStream.html#a6976536b11894e584f72678213aba993">StreamSync</a>(<a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html">mshadow::Stream&lt;gpu&gt;</a>* s1, <a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html">mshadow::Stream&lt;gpu&gt;</a>* s2, cudaEvent_t event) {</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#a8f433b4dd005a854eec58178ffd3d4bd">MSHADOW_CUDA_CALL</a>(cudaEventRecord(event, s1-&gt;<a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html#a07e51e51721e2561c26dd93bbd03da18">stream_</a>));</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="3rdparty_2mshadow_2mshadow_2base_8h.html#a8f433b4dd005a854eec58178ffd3d4bd">MSHADOW_CUDA_CALL</a>(cudaStreamWaitEvent(s2-&gt;<a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html#a07e51e51721e2561c26dd93bbd03da18">stream_</a>, event, 0));</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; </div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html">mshadow::Stream&lt;gpu&gt;</a>* primary_stream_;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html">mshadow::Stream&lt;gpu&gt;</a>* aux_stream_;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; cudaEvent_t gpu_stream_sync_event_;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;};</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
<div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classmxnet_1_1SyncedGPUAuxStream.html"> 308</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html">SyncedGPUAuxStream</a> {</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classmxnet_1_1SyncedGPUAuxStream.html#aea10f57259cf765e22e48d3b58777f78"> 314</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html#aea10f57259cf765e22e48d3b58777f78">SyncedGPUAuxStream</a>(<a class="code" href="classmxnet_1_1GPUAuxStream.html">GPUAuxStream</a>* gpu_aux_stream) : gpu_aux_stream_(gpu_aux_stream) {</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; gpu_aux_stream_-&gt;<a class="code" href="classmxnet_1_1GPUAuxStream.html#a2add80e8e23386df1646434630f405f4">PreAuxStreamUseSync</a>();</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div>
<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classmxnet_1_1SyncedGPUAuxStream.html#a5cb6f54e19a02b05d94daf4454a4d032"> 318</a></span>&#160; <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html#a5cb6f54e19a02b05d94daf4454a4d032">~SyncedGPUAuxStream</a>() {</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; gpu_aux_stream_-&gt;<a class="code" href="classmxnet_1_1GPUAuxStream.html#a3f103abfadfb2f6d637430b2d92cce7b">PostAuxStreamUseSync</a>();</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html#aea10f57259cf765e22e48d3b58777f78">SyncedGPUAuxStream</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html">SyncedGPUAuxStream</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html#a94c6f671ba3e70974690002be4fd631a">operator=</a>(<span class="keyword">const</span> <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html">SyncedGPUAuxStream</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html#aea10f57259cf765e22e48d3b58777f78">SyncedGPUAuxStream</a>(<a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html">SyncedGPUAuxStream</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html">SyncedGPUAuxStream</a>&amp; <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html#a94c6f671ba3e70974690002be4fd631a">operator=</a>(<a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html">SyncedGPUAuxStream</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classmxnet_1_1SyncedGPUAuxStream.html#a0638a0d262d28d7719dfe23b603a6d2f"> 330</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmshadow_1_1Stream_3_01gpu_01_4.html">mshadow::Stream&lt;gpu&gt;</a>* <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html#a0638a0d262d28d7719dfe23b603a6d2f">GetStream</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> gpu_aux_stream_-&gt;<a class="code" href="classmxnet_1_1GPUAuxStream.html#adb9e0d791fdc2370b946e95007385bb0">GetStream</a>();</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; </div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classmxnet_1_1GPUAuxStream.html">GPUAuxStream</a>* gpu_aux_stream_;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;};</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="preprocessor">#endif // MXNET_USE_CUDA</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
<div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="structmxnet_1_1RunContext.html"> 343</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmxnet_1_1RunContext.html">RunContext</a> {</div>
<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="structmxnet_1_1RunContext.html#ace5970ed7c25ccc98ffd0dcf35fd3c88"> 345</a></span>&#160; <a class="code" href="structmxnet_1_1Context.html">Context</a> <a class="code" href="structmxnet_1_1RunContext.html#ace5970ed7c25ccc98ffd0dcf35fd3c88">ctx</a>;</div>
<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="structmxnet_1_1RunContext.html#a5c4294a44199f4056915e32a7f70fe0e"> 349</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="structmxnet_1_1RunContext.html#a5c4294a44199f4056915e32a7f70fe0e">stream</a>;</div>
<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="structmxnet_1_1RunContext.html#aefb2816ee8261ff91c733073da897611"> 353</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="structmxnet_1_1RunContext.html#aefb2816ee8261ff91c733073da897611">aux_stream</a>;</div>
<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="structmxnet_1_1RunContext.html#a4c391bc87743c0c0bd47e7011dd5a9f6"> 357</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="structmxnet_1_1RunContext.html#a4c391bc87743c0c0bd47e7011dd5a9f6">event_pool</a> = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> xpu&gt;</div>
<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="structmxnet_1_1RunContext.html#a9901db00632774aef42081ceda0d23f1"> 364</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="structmshadow_1_1Stream.html">mshadow::Stream&lt;xpu&gt;</a>* <a class="code" href="structmxnet_1_1RunContext.html#a9901db00632774aef42081ceda0d23f1">get_stream</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="structmshadow_1_1Stream.html">mshadow::Stream&lt;xpu&gt;</a>*<span class="keyword">&gt;</span>(<a class="code" href="structmxnet_1_1RunContext.html#a5c4294a44199f4056915e32a7f70fe0e">stream</a>);</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDA</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; </div>
<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="structmxnet_1_1RunContext.html#a5591cfe410da5ab004c4733a8a2fb0c7"> 372</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html">SyncedGPUAuxStream</a> <a class="code" href="structmxnet_1_1RunContext.html#a5591cfe410da5ab004c4733a8a2fb0c7">get_gpu_aux_stream</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classmxnet_1_1SyncedGPUAuxStream.html">SyncedGPUAuxStream</a>(<span class="keyword">static_cast&lt;</span><a class="code" href="classmxnet_1_1GPUAuxStream.html">GPUAuxStream</a>*<span class="keyword">&gt;</span>(<a class="code" href="structmxnet_1_1RunContext.html#aefb2816ee8261ff91c733073da897611">aux_stream</a>));</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; </div>
<div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="structmxnet_1_1RunContext.html#a323fa88ecd7bfb7d5f7d9ca727101d3e"> 377</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="structmxnet_1_1Context.html">Context</a>&amp; <a class="code" href="structmxnet_1_1RunContext.html#a323fa88ecd7bfb7d5f7d9ca727101d3e">get_ctx</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1RunContext.html#ace5970ed7c25ccc98ffd0dcf35fd3c88">ctx</a>;</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;};</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;} <span class="comment">// namespace mxnet</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; </div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemxnet.html">mxnet</a> {</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment">// implementing Context</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structmxnet_1_1Context.html#afd07473e20810635cb3fffc216d76494">Context::operator&lt;</a>(<span class="keyword">const</span> Context&amp; b)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a> == b.dev_type) {</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a> &lt; b.dev_id;</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a> &lt; b.dev_type;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;}</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="keyword">inline</span> Context <a class="code" href="structmxnet_1_1Context.html#a7cea13406ae21ae557d3455f54670a4a">Context::Create</a>(<a class="code" href="namespacemxnet_1_1cpp.html#a65c3def958cbb9d09c7f56082a5257d6">DeviceType</a> dev_type, int32_t dev_id) {</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="structmxnet_1_1Context.html#a290642a21363bef82bcb32cf7f98b884">Context</a> ctx;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; ctx.dev_type = <a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; ctx.dev_id = <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a> &lt; 0 ? 0 : <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a> &amp; <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eab21bed4d5cee411db15283d7529f28cf">kGPU</a>) {</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDA</span></div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; CudaLibChecks();</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDNN</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; CuDNNLibChecks();</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a> &lt; 0) {</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDA</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; CHECK_EQ(cudaGetDevice(&amp;ctx.dev_id), cudaSuccess);</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; LOG(FATAL) &lt;&lt; <span class="stringliteral">&quot;Please compile with CUDA enabled for cuda features&quot;</span>;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">return</span> ctx;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;}</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="keyword">inline</span> Context <a class="code" href="structmxnet_1_1Context.html#a4bb231d70623fde216de51589347e513">Context::CPU</a>(int32_t dev_id) {</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a7cea13406ae21ae557d3455f54670a4a">Create</a>(<a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea1aced5778bb0d64d4ce6bd4c0a86d140">kCPU</a>, <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>);</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;}</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; </div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="keyword">inline</span> Context <a class="code" href="structmxnet_1_1Context.html#a420d4e662a5129b202507f42c991391c">Context::CPUPinned</a>(int32_t dev_id) {</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a7cea13406ae21ae557d3455f54670a4a">Create</a>(<a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eaa2e12b86e0f957dc14d45863eaa47f34">kCPUPinned</a>, <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>);</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;}</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; </div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="keyword">inline</span> Context <a class="code" href="structmxnet_1_1Context.html#a8e090b1fcc96b682512bcc22fc521f80">Context::CPUShared</a>(int32_t dev_id) {</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a7cea13406ae21ae557d3455f54670a4a">Create</a>(<a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea80c6f8f13908c5805cf12784fca77e78">kCPUShared</a>, <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>);</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;}</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; </div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="keyword">inline</span> Context <a class="code" href="structmxnet_1_1Context.html#a39d1a2b59bce135da127475995a58671">Context::GPU</a>(int32_t dev_id) {</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structmxnet_1_1Context.html#a7cea13406ae21ae557d3455f54670a4a">Create</a>(<a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eab21bed4d5cee411db15283d7529f28cf">kGPU</a>, <a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>);</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;}</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; </div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structmxnet_1_1Context.html#ab50bb4c3439d200f5e82702cec587aef">Context::GPUDriverPresent</a>() {</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDA</span></div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordtype">int</span> cuda_driver_version = 0;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; CHECK_EQ(cudaDriverGetVersion(&amp;cuda_driver_version), cudaSuccess);</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> cuda_driver_version &gt; 0;</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;}</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; </div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="keyword">inline</span> int32_t <a class="code" href="structmxnet_1_1Context.html#adde995df8e2b9871151921a932788cd2">Context::GetGPUCount</a>() {</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDA</span></div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structmxnet_1_1Context.html#ab50bb4c3439d200f5e82702cec587aef">GPUDriverPresent</a>()) {</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; int32_t count;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; cudaError_t e = cudaGetDeviceCount(&amp;count);</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="comment">// TODO(junwu): Remove e == cudaErrorInsufficientDriver</span></div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="comment">// This is skipped for working around wheel build system with older CUDA driver.</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (e == cudaErrorNoDevice || e == cudaErrorInsufficientDriver) {</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; CHECK_EQ(e, cudaSuccess) &lt;&lt; <span class="stringliteral">&quot; CUDA: &quot;</span> &lt;&lt; cudaGetErrorString(e);</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> count;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;}</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; </div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="keyword">inline</span> int32_t <a class="code" href="structmxnet_1_1Context.html#a8368603622d6af4609fe78f572387b59">Context::GetGPUStreamsPerWorker</a>() {</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="comment">// The default number of streams available if the user has not set MXNET_GPU_WORKER_NSTREAMS.</span></div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keyword">const</span> int32_t default_num_streams = 1;</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="comment">// The get_aux_stream() interface can supply one additional stream beyond the standard one.</span></div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keyword">static</span> int32_t num_streams =</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; dmlc::GetEnv(<span class="stringliteral">&quot;MXNET_GPU_WORKER_NSTREAMS&quot;</span>, default_num_streams) &gt;= 2 ? 2 : 1;</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">return</span> num_streams;</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;}</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; </div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="structmxnet_1_1Context.html#a7e1512621b22a14035f740703d3eb006">Context::GetGPUMemoryInformation</a>(<span class="keywordtype">int</span> dev, uint64_t* free_mem, uint64_t* total_mem) {</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor">#if MXNET_USE_CUDA</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; </div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordtype">size_t</span> memF, memT;</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; cudaError_t e;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordtype">int</span> curDevice;</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; e = cudaGetDevice(&amp;curDevice);</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; CHECK_EQ(e, cudaSuccess) &lt;&lt; <span class="stringliteral">&quot; CUDA: &quot;</span> &lt;&lt; cudaGetErrorString(e);</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; </div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; e = cudaSetDevice(dev);</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; CHECK_EQ(e, cudaSuccess) &lt;&lt; <span class="stringliteral">&quot; CUDA: &quot;</span> &lt;&lt; cudaGetErrorString(e);</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; e = cudaMemGetInfo(&amp;memF, &amp;memT);</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; CHECK_EQ(e, cudaSuccess) &lt;&lt; <span class="stringliteral">&quot; CUDA: &quot;</span> &lt;&lt; cudaGetErrorString(e);</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; e = cudaSetDevice(curDevice);</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; CHECK_EQ(e, cudaSuccess) &lt;&lt; <span class="stringliteral">&quot; CUDA: &quot;</span> &lt;&lt; cudaGetErrorString(e);</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; </div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; *free_mem = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(memF);</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; *total_mem = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(memT);</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; </div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; LOG(FATAL) &lt;&lt; <span class="stringliteral">&quot;This call is only supported for MXNet built with CUDA support.&quot;</span>;</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;}</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; </div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="keyword">inline</span> Context <a class="code" href="structmxnet_1_1Context.html#a4b7e2c87496a90b6b0ed06eab61956c4">Context::FromString</a>(<span class="keyword">const</span> std::string&amp; str) {</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="structmxnet_1_1Context.html#a290642a21363bef82bcb32cf7f98b884">Context</a> ret;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">const</span> std::string::size_type l = str.find(<span class="charliteral">&#39;(&#39;</span>);</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; CHECK_NE(l, std::string::npos);</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keyword">const</span> std::string::size_type r = str.find(<span class="charliteral">&#39;)&#39;</span>);</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; CHECK_EQ(r, str.length() - 1);</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; </div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">const</span> std::string type = str.substr(0, l);</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordtype">int</span> <span class="keywordtype">id</span> = std::stoi(str.substr(l + 1, r - l - 1));</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (type == <span class="stringliteral">&quot;cpu&quot;</span>) {</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; ret = <a class="code" href="structmxnet_1_1Context.html#a4bb231d70623fde216de51589347e513">CPU</a>(<span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == <span class="stringliteral">&quot;gpu&quot;</span>) {</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; ret = <a class="code" href="structmxnet_1_1Context.html#a39d1a2b59bce135da127475995a58671">GPU</a>(<span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == <span class="stringliteral">&quot;cpu_pinned&quot;</span>) {</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; ret = <a class="code" href="structmxnet_1_1Context.html#a420d4e662a5129b202507f42c991391c">CPUPinned</a>(<span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == <span class="stringliteral">&quot;cpu_shared&quot;</span>) {</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; ret = <a class="code" href="structmxnet_1_1Context.html#a8e090b1fcc96b682512bcc22fc521f80">CPUShared</a>(<span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; LOG(FATAL) &lt;&lt; <span class="stringliteral">&quot;Invalid context string &quot;</span> &lt;&lt; str;</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; } <span class="keywordflow">catch</span> (...) {</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; LOG(FATAL) &lt;&lt; <span class="stringliteral">&quot;Invalid context string &quot;</span> &lt;&lt; str;</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;}</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; </div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="keyword">inline</span> std::ostream&amp; <a class="code" href="namespacedmlc.html#acf31f99192b5ed0d5d77398d58023912">operator&lt;&lt;</a>(std::ostream&amp; out, <span class="keyword">const</span> Context&amp; ctx) {</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (ctx.dev_type == <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea1aced5778bb0d64d4ce6bd4c0a86d140">Context::kCPU</a>) {</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; out &lt;&lt; <span class="stringliteral">&quot;cpu(&quot;</span>;</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ctx.dev_type == <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eab21bed4d5cee411db15283d7529f28cf">Context::kGPU</a>) {</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; out &lt;&lt; <span class="stringliteral">&quot;gpu(&quot;</span>;</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ctx.dev_type == <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eaa2e12b86e0f957dc14d45863eaa47f34">Context::kCPUPinned</a>) {</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; out &lt;&lt; <span class="stringliteral">&quot;cpu_pinned(&quot;</span>;</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ctx.dev_type == <a class="code" href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea80c6f8f13908c5805cf12784fca77e78">Context::kCPUShared</a>) {</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; out &lt;&lt; <span class="stringliteral">&quot;cpu_shared(&quot;</span>;</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; out &lt;&lt; <span class="stringliteral">&quot;unknown(&quot;</span>;</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; out &lt;&lt; ctx.dev_id &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">return</span> out;</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;}</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; </div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="comment">// describe op registration point</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="preprocessor">#define STRINGIZE_DETAIL(x) #x</span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="preprocessor">#define STRINGIZE(x) STRINGIZE_DETAIL(x)</span></div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="preprocessor">#define MXNET_DESCRIBE(...) describe(__VA_ARGS__ &quot;\n\nFrom:&quot; __FILE__ &quot;:&quot; STRINGIZE(__LINE__))</span></div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="preprocessor">#define ADD_FILELINE &quot;\n\nDefined in &quot; __FILE__ &quot;:L&quot; STRINGIZE(__LINE__)</span></div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; </div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor">#if MXNET_USE_ONEDNN == 1 || MXNET_USE_INTGEMM == 1</span></div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;constexpr <span class="keywordtype">size_t</span> kDNNLAlign = 64;</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; </div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;} <span class="comment">// namespace mxnet</span></div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; </div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a> {</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="keyword">template</span> &lt;&gt;</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="keyword">struct </span>hash&lt;<a class="code" href="namespacemxnet.html">mxnet</a>::Context&gt; {</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordtype">size_t</span> operator()(<span class="keyword">const</span> <a class="code" href="structmxnet_1_1Context.html">mxnet::Context</a>&amp; ctx)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordtype">size_t</span> res = 0;</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; res = <a class="code" href="namespacedmlc.html#a8620a9c7572cd3aab1ed3135b7a8e137">dmlc::HashCombine</a>(res, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(ctx.<a class="code" href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">dev_type</a>));</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; res = <a class="code" href="namespacedmlc.html#a8620a9c7572cd3aab1ed3135b7a8e137">dmlc::HashCombine</a>(res, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(ctx.<a class="code" href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">dev_id</a>));</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;};</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; </div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="preprocessor">#if __cplusplus &lt; 201402L &amp;&amp; !defined(_MSC_VER)</span></div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="keyword">inline</span> std::unique_ptr&lt;T&gt; make_unique(Args&amp;&amp;... args) {</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">return</span> std::unique_ptr&lt;T&gt;(<span class="keyword">new</span> T(std::forward&lt;Args&gt;(args)...));</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;}</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;} <span class="comment">// namespace std</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="tensor__blob_8h.html">./tensor_blob.h</a>&quot;</span></div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor">#endif // MXNET_BASE_H_</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="anamespacemxnet_html"><div class="ttname"><a href="namespacemxnet.html">mxnet</a></div><div class="ttdoc">namespace of mxnet</div><div class="ttdef"><b>Definition:</b> api_registry.h:33</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a611c227b5e04a2777c3e4507bb76f60ea1aced5778bb0d64d4ce6bd4c0a86d140"><div class="ttname"><a href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea1aced5778bb0d64d4ce6bd4c0a86d140">mxnet::Context::kCPU</a></div><div class="ttdeci">@ kCPU</div><div class="ttdef"><b>Definition:</b> base.h:93</div></div>
<div class="ttc" id="aclassmxnet_1_1SyncedGPUAuxStream_html_a94c6f671ba3e70974690002be4fd631a"><div class="ttname"><a href="classmxnet_1_1SyncedGPUAuxStream.html#a94c6f671ba3e70974690002be4fd631a">mxnet::SyncedGPUAuxStream::operator=</a></div><div class="ttdeci">void operator=(const SyncedGPUAuxStream &amp;)=delete</div><div class="ttdoc">copy assignment operator deleted to prevent unexpected synchronizations.</div></div>
<div class="ttc" id="astructmshadow_1_1Stream_html"><div class="ttname"><a href="structmshadow_1_1Stream.html">mshadow::Stream</a></div><div class="ttdoc">computaion stream structure, used for asynchronous computations</div><div class="ttdef"><b>Definition:</b> tensor.h:488</div></div>
<div class="ttc" id="aclassmxnet_1_1SyncedGPUAuxStream_html"><div class="ttname"><a href="classmxnet_1_1SyncedGPUAuxStream.html">mxnet::SyncedGPUAuxStream</a></div><div class="ttdoc">Provides automatic coordination of an auxilary stream with a primary one. This object,...</div><div class="ttdef"><b>Definition:</b> base.h:308</div></div>
<div class="ttc" id="anamespacemshadow_html_a5d8687821fd6ecf8e271b996df51415c"><div class="ttname"><a href="namespacemshadow.html#a5d8687821fd6ecf8e271b996df51415c">mshadow::DeleteStream&lt; gpu &gt;</a></div><div class="ttdeci">void DeleteStream&lt; gpu &gt;(Stream&lt; gpu &gt; *stream)</div><div class="ttdef"><b>Definition:</b> stream_gpu-inl.h:255</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a7e1512621b22a14035f740703d3eb006"><div class="ttname"><a href="structmxnet_1_1Context.html#a7e1512621b22a14035f740703d3eb006">mxnet::Context::GetGPUMemoryInformation</a></div><div class="ttdeci">static void GetGPUMemoryInformation(int dev, uint64_t *free, uint64_t *total)</div><div class="ttdoc">get the free and total available memory on a GPU</div></div>
<div class="ttc" id="aclassmxnet_1_1GPUAuxStream_html_af47783e8d21ce90a42e1f4fc74b01119"><div class="ttname"><a href="classmxnet_1_1GPUAuxStream.html#af47783e8d21ce90a42e1f4fc74b01119">mxnet::GPUAuxStream::~GPUAuxStream</a></div><div class="ttdeci">~GPUAuxStream()</div><div class="ttdoc">destructor</div><div class="ttdef"><b>Definition:</b> base.h:256</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a7433936d1daf38f7dced0de49fbe6a4b"><div class="ttname"><a href="structmxnet_1_1Context.html#a7433936d1daf38f7dced0de49fbe6a4b">mxnet::Context::kMaxDevType</a></div><div class="ttdeci">static const int32_t kMaxDevType</div><div class="ttdoc">the maximal device type</div><div class="ttdef"><b>Definition:</b> base.h:164</div></div>
<div class="ttc" id="alibinfo_8h_html"><div class="ttname"><a href="libinfo_8h.html">libinfo.h</a></div><div class="ttdoc">get features of the MXNet library at runtime</div></div>
<div class="ttc" id="atensor__blob_8h_html"><div class="ttname"><a href="tensor__blob_8h.html">tensor_blob.h</a></div><div class="ttdoc">TBlob class that holds common representation of arbirary dimension tensor, can be used to transformed...</div></div>
<div class="ttc" id="astructmshadow_1_1Stream_3_01gpu_01_4_html_a07e51e51721e2561c26dd93bbd03da18"><div class="ttname"><a href="structmshadow_1_1Stream_3_01gpu_01_4.html#a07e51e51721e2561c26dd93bbd03da18">mshadow::Stream&lt; gpu &gt;::stream_</a></div><div class="ttdeci">cudaStream_t stream_</div><div class="ttdoc">cudaStream</div><div class="ttdef"><b>Definition:</b> stream_gpu-inl.h:44</div></div>
<div class="ttc" id="a3rdparty_2mshadow_2mshadow_2base_8h_html_a8f433b4dd005a854eec58178ffd3d4bd"><div class="ttname"><a href="3rdparty_2mshadow_2mshadow_2base_8h.html#a8f433b4dd005a854eec58178ffd3d4bd">MSHADOW_CUDA_CALL</a></div><div class="ttdeci">#define MSHADOW_CUDA_CALL(func)</div><div class="ttdoc">Protected cuda call in mshadow.</div><div class="ttdef"><b>Definition:</b> base.h:264</div></div>
<div class="ttc" id="aparameter_8h_html"><div class="ttname"><a href="parameter_8h.html">parameter.h</a></div><div class="ttdoc">Provide lightweight util to do parameter setup and checking.</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a66040df23c2a5663f29bc50aa0bbace3"><div class="ttname"><a href="structmxnet_1_1Context.html#a66040df23c2a5663f29bc50aa0bbace3">mxnet::Context::dev_type</a></div><div class="ttdeci">DeviceType dev_type</div><div class="ttdoc">the device type we run the op on</div><div class="ttdef"><b>Definition:</b> base.h:99</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_adde995df8e2b9871151921a932788cd2"><div class="ttname"><a href="structmxnet_1_1Context.html#adde995df8e2b9871151921a932788cd2">mxnet::Context::GetGPUCount</a></div><div class="ttdeci">static int32_t GetGPUCount()</div></div>
<div class="ttc" id="aop_8h_html"><div class="ttname"><a href="op_8h.html">op.h</a></div><div class="ttdoc">Operator information structor.</div></div>
<div class="ttc" id="a3rdparty_2dmlc-core_2include_2dmlc_2base_8h_html"><div class="ttname"><a href="3rdparty_2dmlc-core_2include_2dmlc_2base_8h.html">base.h</a></div><div class="ttdoc">defines configuration macros</div></div>
<div class="ttc" id="aclassmxnet_1_1GPUAuxStream_html"><div class="ttname"><a href="classmxnet_1_1GPUAuxStream.html">mxnet::GPUAuxStream</a></div><div class="ttdoc">Holds an auxiliary mshadow gpu stream that can be synced with a primary stream.</div><div class="ttdef"><b>Definition:</b> base.h:234</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a8b8d414a429c12ab55cfa9ed13539393"><div class="ttname"><a href="structmxnet_1_1Context.html#a8b8d414a429c12ab55cfa9ed13539393">mxnet::Context::operator==</a></div><div class="ttdeci">bool operator==(const Context &amp;b) const</div><div class="ttdoc">check if current context equals another one</div><div class="ttdef"><b>Definition:</b> base.h:132</div></div>
<div class="ttc" id="astructmxnet_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:343</div></div>
<div class="ttc" id="astructmshadow_1_1cpu_html_a57f74b500825e21c0c246ad5b4e5016b"><div class="ttname"><a href="structmshadow_1_1cpu.html#a57f74b500825e21c0c246ad5b4e5016b">mshadow::cpu::kDevMask</a></div><div class="ttdeci">static const int kDevMask</div><div class="ttdoc">device flag number, identifies this device</div><div class="ttdef"><b>Definition:</b> tensor.h:43</div></div>
<div class="ttc" id="astructmshadow_1_1Stream_3_01gpu_01_4_html_a08409eff15849ff7abec6efe8019e396"><div class="ttname"><a href="structmshadow_1_1Stream_3_01gpu_01_4.html#a08409eff15849ff7abec6efe8019e396">mshadow::Stream&lt; gpu &gt;::dev_id</a></div><div class="ttdeci">int dev_id</div><div class="ttdoc">dev id</div><div class="ttdef"><b>Definition:</b> stream_gpu-inl.h:71</div></div>
<div class="ttc" id="astructmxnet_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="astructmxnet_1_1Context_html_a8368603622d6af4609fe78f572387b59"><div class="ttname"><a href="structmxnet_1_1Context.html#a8368603622d6af4609fe78f572387b59">mxnet::Context::GetGPUStreamsPerWorker</a></div><div class="ttdeci">static int32_t GetGPUStreamsPerWorker()</div></div>
<div class="ttc" id="aclassdmlc_1_1Stream_html_a622f1377a64e841ca80c2dd8e1fa5ffd"><div class="ttname"><a href="classdmlc_1_1Stream.html#a622f1377a64e841ca80c2dd8e1fa5ffd">dmlc::Stream::Write</a></div><div class="ttdeci">virtual void Write(const void *ptr, size_t size)=0</div><div class="ttdoc">writes data to a stream</div></div>
<div class="ttc" id="aclassmxnet_1_1SyncedGPUAuxStream_html_a0638a0d262d28d7719dfe23b603a6d2f"><div class="ttname"><a href="classmxnet_1_1SyncedGPUAuxStream.html#a0638a0d262d28d7719dfe23b603a6d2f">mxnet::SyncedGPUAuxStream::GetStream</a></div><div class="ttdeci">mshadow::Stream&lt; gpu &gt; * GetStream() const</div><div class="ttdoc">Getter for underlying mshadow::Stream&lt;gpu&gt;.</div><div class="ttdef"><b>Definition:</b> base.h:330</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a882305327a53b9b9a82f5802b4b013e3"><div class="ttname"><a href="structmxnet_1_1Context.html#a882305327a53b9b9a82f5802b4b013e3">mxnet::Context::Load</a></div><div class="ttdeci">bool Load(dmlc::Stream *strm)</div><div class="ttdoc">load the content from binary stream</div><div class="ttdef"><b>Definition:</b> base.h:156</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a611c227b5e04a2777c3e4507bb76f60ea80c6f8f13908c5805cf12784fca77e78"><div class="ttname"><a href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60ea80c6f8f13908c5805cf12784fca77e78">mxnet::Context::kCPUShared</a></div><div class="ttdeci">@ kCPUShared</div><div class="ttdef"><b>Definition:</b> base.h:96</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a41f5317543ececa2d0feeea1093e219c"><div class="ttname"><a href="structmxnet_1_1Context.html#a41f5317543ececa2d0feeea1093e219c">mxnet::Context::dev_mask</a></div><div class="ttdeci">DeviceType dev_mask() const</div><div class="ttdoc">Get corresponding device mask.</div><div class="ttdef"><b>Definition:</b> base.h:108</div></div>
<div class="ttc" id="astructmshadow_1_1gpu_html"><div class="ttname"><a href="structmshadow_1_1gpu.html">mshadow::gpu</a></div><div class="ttdoc">device name GPU</div><div class="ttdef"><b>Definition:</b> tensor.h:46</div></div>
<div class="ttc" id="astructmshadow_1_1cpu_html"><div class="ttname"><a href="structmshadow_1_1cpu.html">mshadow::cpu</a></div><div class="ttdoc">device name CPU</div><div class="ttdef"><b>Definition:</b> tensor.h:39</div></div>
<div class="ttc" id="anamespacedmlc_html_a8620a9c7572cd3aab1ed3135b7a8e137"><div class="ttname"><a href="namespacedmlc.html#a8620a9c7572cd3aab1ed3135b7a8e137">dmlc::HashCombine</a></div><div class="ttdeci">size_t HashCombine(size_t key, const T &amp;value)</div><div class="ttdoc">hash an object and combines the key with previous keys</div><div class="ttdef"><b>Definition:</b> common.h:37</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_afd07473e20810635cb3fffc216d76494"><div class="ttname"><a href="structmxnet_1_1Context.html#afd07473e20810635cb3fffc216d76494">mxnet::Context::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const Context &amp;b) const</div><div class="ttdoc">Comparator, used to enable Context as std::map key.</div></div>
<div class="ttc" id="atensor_8h_html"><div class="ttname"><a href="tensor_8h.html">tensor.h</a></div><div class="ttdoc">header file of tensor data structure and functions This lib requires explicit memory allocation and d...</div></div>
<div class="ttc" id="anamespacemxnet_html_a91873a0f8f5b49fb21c872197e727f08"><div class="ttname"><a href="namespacemxnet.html#a91873a0f8f5b49fb21c872197e727f08">mxnet::lapack_index_t</a></div><div class="ttdeci">mshadow::lapack_index_t lapack_index_t</div><div class="ttdoc">index type for blas library.</div><div class="ttdef"><b>Definition:</b> base.h:83</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a611c227b5e04a2777c3e4507bb76f60e"><div class="ttname"><a href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60e">mxnet::Context::DeviceType</a></div><div class="ttdeci">DeviceType</div><div class="ttdoc">Type of device.</div><div class="ttdef"><b>Definition:</b> base.h:92</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a611c227b5e04a2777c3e4507bb76f60eaa2e12b86e0f957dc14d45863eaa47f34"><div class="ttname"><a href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eaa2e12b86e0f957dc14d45863eaa47f34">mxnet::Context::kCPUPinned</a></div><div class="ttdeci">@ kCPUPinned</div><div class="ttdef"><b>Definition:</b> base.h:95</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_ab50bb4c3439d200f5e82702cec587aef"><div class="ttname"><a href="structmxnet_1_1Context.html#ab50bb4c3439d200f5e82702cec587aef">mxnet::Context::GPUDriverPresent</a></div><div class="ttdeci">static bool GPUDriverPresent()</div></div>
<div class="ttc" id="astructmxnet_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="astructmshadow_1_1Stream_3_01gpu_01_4_html"><div class="ttname"><a href="structmshadow_1_1Stream_3_01gpu_01_4.html">mshadow::Stream&lt; gpu &gt;</a></div><div class="ttdef"><b>Definition:</b> stream_gpu-inl.h:37</div></div>
<div class="ttc" id="anamespacemshadow_html_a89b0009770915378c66bc9647040776d"><div class="ttname"><a href="namespacemshadow.html#a89b0009770915378c66bc9647040776d">mshadow::NewStream&lt; gpu &gt;</a></div><div class="ttdeci">Stream&lt; gpu &gt; * NewStream&lt; gpu &gt;(bool create_blas_handle, bool create_dnn_handle, int dev_id)</div><div class="ttdef"><b>Definition:</b> stream_gpu-inl.h:266</div></div>
<div class="ttc" id="aclassmxnet_1_1SyncedGPUAuxStream_html_a5cb6f54e19a02b05d94daf4454a4d032"><div class="ttname"><a href="classmxnet_1_1SyncedGPUAuxStream.html#a5cb6f54e19a02b05d94daf4454a4d032">mxnet::SyncedGPUAuxStream::~SyncedGPUAuxStream</a></div><div class="ttdeci">~SyncedGPUAuxStream()</div><div class="ttdoc">destructor</div><div class="ttdef"><b>Definition:</b> base.h:318</div></div>
<div class="ttc" id="anamespacedmlc_html_acf31f99192b5ed0d5d77398d58023912"><div class="ttname"><a href="namespacedmlc.html#acf31f99192b5ed0d5d77398d58023912">dmlc::operator&lt;&lt;</a></div><div class="ttdeci">std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const optional&lt; T &gt; &amp;t)</div><div class="ttdoc">serialize an optional object to string.</div><div class="ttdef"><b>Definition:</b> optional.h:151</div></div>
<div class="ttc" id="asymbolic_8h_html"><div class="ttname"><a href="symbolic_8h.html">symbolic.h</a></div><div class="ttdoc">Symbolic graph construction API.</div></div>
<div class="ttc" id="aclassmxnet_1_1GPUAuxStream_html_a6976536b11894e584f72678213aba993"><div class="ttname"><a href="classmxnet_1_1GPUAuxStream.html#a6976536b11894e584f72678213aba993">mxnet::GPUAuxStream::StreamSync</a></div><div class="ttdeci">static void StreamSync(mshadow::Stream&lt; gpu &gt; *s1, mshadow::Stream&lt; gpu &gt; *s2, cudaEvent_t event)</div><div class="ttdoc">Make future work enqueued to s2 wait on completion of current work enqueued to s1.</div><div class="ttdef"><b>Definition:</b> base.h:289</div></div>
<div class="ttc" id="anamespacemshadow_html_adcbc2e1131386fccb1474b0bdf045926"><div class="ttname"><a href="namespacemshadow.html#adcbc2e1131386fccb1474b0bdf045926">mshadow::index_t</a></div><div class="ttdeci">int32_t index_t</div><div class="ttdoc">type that will be used for index</div><div class="ttdef"><b>Definition:</b> base.h:328</div></div>
<div class="ttc" id="aclassmxnet_1_1GPUAuxStream_html_aaf171cedf3d88ab52b94df5fdaa391bf"><div class="ttname"><a href="classmxnet_1_1GPUAuxStream.html#aaf171cedf3d88ab52b94df5fdaa391bf">mxnet::GPUAuxStream::GPUAuxStream</a></div><div class="ttdeci">GPUAuxStream(mshadow::Stream&lt; gpu &gt; *primary_stream)</div><div class="ttdoc">constructor.</div><div class="ttdef"><b>Definition:</b> base.h:240</div></div>
<div class="ttc" id="astructmshadow_1_1Stream_3_01gpu_01_4_html_a19575a11766ad1de72a5d174300e79a6"><div class="ttname"><a href="structmshadow_1_1Stream_3_01gpu_01_4.html#a19575a11766ad1de72a5d174300e79a6">mshadow::Stream&lt; gpu &gt;::blas_handle_ownership_</a></div><div class="ttdeci">HandleState blas_handle_ownership_</div><div class="ttdoc">cudnn handle</div><div class="ttdef"><b>Definition:</b> stream_gpu-inl.h:60</div></div>
<div class="ttc" id="astructmxnet_1_1RunContext_html_a9901db00632774aef42081ceda0d23f1"><div class="ttname"><a href="structmxnet_1_1RunContext.html#a9901db00632774aef42081ceda0d23f1">mxnet::RunContext::get_stream</a></div><div class="ttdeci">mshadow::Stream&lt; xpu &gt; * get_stream() const</div><div class="ttdoc">get mshadow stream from Context</div><div class="ttdef"><b>Definition:</b> base.h:364</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a8486dcc599dffe447e2f098b170d3db9"><div class="ttname"><a href="structmxnet_1_1Context.html#a8486dcc599dffe447e2f098b170d3db9">mxnet::Context::dev_id</a></div><div class="ttdeci">int32_t dev_id</div><div class="ttdoc">device id we are going to run it on</div><div class="ttdef"><b>Definition:</b> base.h:101</div></div>
<div class="ttc" id="anamespacemshadow_html_a8b60ab0b7ba58978695b4ab7e63268b9"><div class="ttname"><a href="namespacemshadow.html#a8b60ab0b7ba58978695b4ab7e63268b9">mshadow::lapack_index_t</a></div><div class="ttdeci">int lapack_index_t</div><div class="ttdef"><b>Definition:</b> base.h:344</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a611c227b5e04a2777c3e4507bb76f60eab21bed4d5cee411db15283d7529f28cf"><div class="ttname"><a href="structmxnet_1_1Context.html#a611c227b5e04a2777c3e4507bb76f60eab21bed4d5cee411db15283d7529f28cf">mxnet::Context::kGPU</a></div><div class="ttdeci">@ kGPU</div><div class="ttdef"><b>Definition:</b> base.h:94</div></div>
<div class="ttc" id="a3rdparty_2dmlc-core_2include_2dmlc_2io_8h_html"><div class="ttname"><a href="3rdparty_2dmlc-core_2include_2dmlc_2io_8h.html">io.h</a></div><div class="ttdoc">defines serializable interface of dmlc</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a420d4e662a5129b202507f42c991391c"><div class="ttname"><a href="structmxnet_1_1Context.html#a420d4e662a5129b202507f42c991391c">mxnet::Context::CPUPinned</a></div><div class="ttdeci">static Context CPUPinned(int32_t dev_id=-1)</div></div>
<div class="ttc" id="a3rdparty_2mshadow_2mshadow_2base_8h_html_a144171091678fc9f3cbc8a9612db899d"><div class="ttname"><a href="3rdparty_2mshadow_2mshadow_2base_8h.html#a144171091678fc9f3cbc8a9612db899d">MSHADOW_CATCH_ERROR</a></div><div class="ttdeci">#define MSHADOW_CATCH_ERROR(func)</div><div class="ttdoc">Run function and catch error, log unknown error.</div><div class="ttdef"><b>Definition:</b> base.h:278</div></div>
<div class="ttc" id="aclassmxnet_1_1GPUAuxStream_html_adb9e0d791fdc2370b946e95007385bb0"><div class="ttname"><a href="classmxnet_1_1GPUAuxStream.html#adb9e0d791fdc2370b946e95007385bb0">mxnet::GPUAuxStream::GetStream</a></div><div class="ttdeci">mshadow::Stream&lt; gpu &gt; * GetStream()</div><div class="ttdoc">Getter for created auxiliary stream.</div><div class="ttdef"><b>Definition:</b> base.h:280</div></div>
<div class="ttc" id="astructmxnet_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:90</div></div>
<div class="ttc" id="aclassdmlc_1_1Stream_html_a747da13b990ff68dc9bf9ea5224ad174"><div class="ttname"><a href="classdmlc_1_1Stream.html#a747da13b990ff68dc9bf9ea5224ad174">dmlc::Stream::Read</a></div><div class="ttdeci">virtual size_t Read(void *ptr, size_t size)=0</div><div class="ttdoc">reads data from a stream</div></div>
<div class="ttc" id="anamespacemxnet_html_a850af9d76d9d4beaeb5234c1434973e3"><div class="ttname"><a href="namespacemxnet.html#a850af9d76d9d4beaeb5234c1434973e3">mxnet::cpu</a></div><div class="ttdeci">mshadow::cpu cpu</div><div class="ttdoc">mxnet cpu</div><div class="ttdef"><b>Definition:</b> base.h:77</div></div>
<div class="ttc" id="anamespacemshadow_html_a10a73dbdb4a2b833495c2315b6da69ce"><div class="ttname"><a href="namespacemshadow.html#a10a73dbdb4a2b833495c2315b6da69ce">mshadow::default_real_t</a></div><div class="ttdeci">float default_real_t</div><div class="ttdoc">float point type that will be used in default by mshadow</div><div class="ttdef"><b>Definition:</b> base.h:348</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a9ea910ddb7e15d51320806b1666bf6c5"><div class="ttname"><a href="structmxnet_1_1Context.html#a9ea910ddb7e15d51320806b1666bf6c5">mxnet::Context::Save</a></div><div class="ttdeci">void Save(dmlc::Stream *strm) const</div><div class="ttdoc">save the content into binary stream</div><div class="ttdef"><b>Definition:</b> base.h:147</div></div>
<div class="ttc" id="astructmshadow_1_1Stream_3_01gpu_01_4_html_a5a71ddbac6b9e29728b13a384ca6af98"><div class="ttname"><a href="structmshadow_1_1Stream_3_01gpu_01_4.html#a5a71ddbac6b9e29728b13a384ca6af98">mshadow::Stream&lt; gpu &gt;::dnn_handle_ownership_</a></div><div class="ttdeci">HandleState dnn_handle_ownership_</div><div class="ttdoc">cudnn handle ownership</div><div class="ttdef"><b>Definition:</b> stream_gpu-inl.h:64</div></div>
<div class="ttc" id="anamespacemxnet_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:81</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_af2514ea43328d921a74423b7670a3fad"><div class="ttname"><a href="structmxnet_1_1Context.html#af2514ea43328d921a74423b7670a3fad">mxnet::Context::real_dev_id</a></div><div class="ttdeci">int real_dev_id() const</div><div class="ttdoc">Returns dev_id for kGPU and kCPUPinned, 0 otherwise.</div><div class="ttdef"><b>Definition:</b> base.h:116</div></div>
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> optional.h:251</div></div>
<div class="ttc" id="atype__traits_8h_html"><div class="ttname"><a href="type__traits_8h.html">type_traits.h</a></div><div class="ttdoc">type traits information header</div></div>
<div class="ttc" id="astructmxnet_1_1RunContext_html_a5591cfe410da5ab004c4733a8a2fb0c7"><div class="ttname"><a href="structmxnet_1_1RunContext.html#a5591cfe410da5ab004c4733a8a2fb0c7">mxnet::RunContext::get_gpu_aux_stream</a></div><div class="ttdeci">SyncedGPUAuxStream get_gpu_aux_stream() const</div><div class="ttdoc">get an RAII object that transparently handles the syncing of the auxiliary stream.</div><div class="ttdef"><b>Definition:</b> base.h:372</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a4b7e2c87496a90b6b0ed06eab61956c4"><div class="ttname"><a href="structmxnet_1_1Context.html#a4b7e2c87496a90b6b0ed06eab61956c4">mxnet::Context::FromString</a></div><div class="ttdeci">static Context FromString(const std::string &amp;str)</div></div>
<div class="ttc" id="astructmxnet_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="astructmxnet_1_1RunContext_html_a5c4294a44199f4056915e32a7f70fe0e"><div class="ttname"><a href="structmxnet_1_1RunContext.html#a5c4294a44199f4056915e32a7f70fe0e">mxnet::RunContext::stream</a></div><div class="ttdeci">void * stream</div><div class="ttdoc">the stream of the device, can be nullptr or Stream&lt;gpu&gt;* in GPU mode</div><div class="ttdef"><b>Definition:</b> base.h:349</div></div>
<div class="ttc" id="astructmxnet_1_1RunContext_html_ace5970ed7c25ccc98ffd0dcf35fd3c88"><div class="ttname"><a href="structmxnet_1_1RunContext.html#ace5970ed7c25ccc98ffd0dcf35fd3c88">mxnet::RunContext::ctx</a></div><div class="ttdeci">Context ctx</div><div class="ttdoc">base Context</div><div class="ttdef"><b>Definition:</b> base.h:345</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a7e84dc72147472e72b50e8545780fd1e"><div class="ttname"><a href="structmxnet_1_1Context.html#a7e84dc72147472e72b50e8545780fd1e">mxnet::Context::operator!=</a></div><div class="ttdeci">bool operator!=(const Context &amp;b) const</div><div class="ttdoc">check if current context not equals another one</div><div class="ttdef"><b>Definition:</b> base.h:140</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a7cea13406ae21ae557d3455f54670a4a"><div class="ttname"><a href="structmxnet_1_1Context.html#a7cea13406ae21ae557d3455f54670a4a">mxnet::Context::Create</a></div><div class="ttdeci">static Context Create(DeviceType dev_type, int32_t dev_id=-1)</div><div class="ttdoc">Create a new context.</div></div>
<div class="ttc" id="ainclude_2mxnet_2tuple_8h_html"><div class="ttname"><a href="include_2mxnet_2tuple_8h.html">tuple.h</a></div><div class="ttdoc">Data structure Tuple and TShape to store dynamic sized shapes.</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a290642a21363bef82bcb32cf7f98b884"><div class="ttname"><a href="structmxnet_1_1Context.html#a290642a21363bef82bcb32cf7f98b884">mxnet::Context::Context</a></div><div class="ttdeci">Context()</div><div class="ttdoc">default constructor</div><div class="ttdef"><b>Definition:</b> base.h:103</div></div>
<div class="ttc" id="aclassmxnet_1_1GPUAuxStream_html_a2add80e8e23386df1646434630f405f4"><div class="ttname"><a href="classmxnet_1_1GPUAuxStream.html#a2add80e8e23386df1646434630f405f4">mxnet::GPUAuxStream::PreAuxStreamUseSync</a></div><div class="ttdeci">void PreAuxStreamUseSync()</div><div class="ttdoc">Makes future aux stream work wait on the completion of existing primary stream work.</div><div class="ttdef"><b>Definition:</b> base.h:266</div></div>
<div class="ttc" id="anamespacemxnet_html_a31ef33571a4f6ba8847eeee1f4907141"><div class="ttname"><a href="namespacemxnet.html#a31ef33571a4f6ba8847eeee1f4907141">mxnet::gpu</a></div><div class="ttdeci">mshadow::gpu gpu</div><div class="ttdoc">mxnet gpu</div><div class="ttdef"><b>Definition:</b> base.h:79</div></div>
<div class="ttc" id="aclassmxnet_1_1GPUAuxStream_html_a3f103abfadfb2f6d637430b2d92cce7b"><div class="ttname"><a href="classmxnet_1_1GPUAuxStream.html#a3f103abfadfb2f6d637430b2d92cce7b">mxnet::GPUAuxStream::PostAuxStreamUseSync</a></div><div class="ttdeci">void PostAuxStreamUseSync()</div><div class="ttdoc">Makes future primary stream work wait on the completion of existing aux stream work.</div><div class="ttdef"><b>Definition:</b> base.h:274</div></div>
<div class="ttc" id="astructmshadow_1_1gpu_html_a15467f39ddeed96fa259efda7c988f05"><div class="ttname"><a href="structmshadow_1_1gpu.html#a15467f39ddeed96fa259efda7c988f05">mshadow::gpu::kDevMask</a></div><div class="ttdeci">static const int kDevMask</div><div class="ttdoc">device flag number, identifies this device</div><div class="ttdef"><b>Definition:</b> tensor.h:50</div></div>
<div class="ttc" id="astructmxnet_1_1RunContext_html_a323fa88ecd7bfb7d5f7d9ca727101d3e"><div class="ttname"><a href="structmxnet_1_1RunContext.html#a323fa88ecd7bfb7d5f7d9ca727101d3e">mxnet::RunContext::get_ctx</a></div><div class="ttdeci">const Context &amp; get_ctx() const</div><div class="ttdoc">get the base Context from RunContext</div><div class="ttdef"><b>Definition:</b> base.h:377</div></div>
<div class="ttc" id="anamespacemxnet_html_ac2fb286fd7ddfbc7af1456f6c7a7ee52"><div class="ttname"><a href="namespacemxnet.html#ac2fb286fd7ddfbc7af1456f6c7a7ee52">mxnet::Op</a></div><div class="ttdeci">nnvm::Op Op</div><div class="ttdoc">operator structure from NNVM</div><div class="ttdef"><b>Definition:</b> base.h:87</div></div>
<div class="ttc" id="astructmxnet_1_1RunContext_html_aefb2816ee8261ff91c733073da897611"><div class="ttname"><a href="structmxnet_1_1RunContext.html#aefb2816ee8261ff91c733073da897611">mxnet::RunContext::aux_stream</a></div><div class="ttdeci">void * aux_stream</div><div class="ttdoc">the auxiliary stream of the device, can be nullptr or Stream&lt;gpu&gt;* in GPU mode</div><div class="ttdef"><b>Definition:</b> base.h:353</div></div>
<div class="ttc" id="aclassnnvm_1_1Op_html"><div class="ttname"><a href="classnnvm_1_1Op.html">nnvm::Op</a></div><div class="ttdoc">Operator structure.</div><div class="ttdef"><b>Definition:</b> op.h:105</div></div>
<div class="ttc" id="aclassdmlc_1_1Stream_html"><div class="ttname"><a href="classdmlc_1_1Stream.html">dmlc::Stream</a></div><div class="ttdoc">interface of stream I/O for serialization</div><div class="ttdef"><b>Definition:</b> io.h:30</div></div>
<div class="ttc" id="astructmxnet_1_1Context_html_a958219ae412395685ef1d82af0dbbe67"><div class="ttname"><a href="structmxnet_1_1Context.html#a958219ae412395685ef1d82af0dbbe67">mxnet::Context::kMaxDevID</a></div><div class="ttdeci">static const int32_t kMaxDevID</div><div class="ttdoc">the maximal device index</div><div class="ttdef"><b>Definition:</b> base.h:166</div></div>
<div class="ttc" id="anamespacemxnet_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:85</div></div>
<div class="ttc" id="astructmxnet_1_1RunContext_html_a4c391bc87743c0c0bd47e7011dd5a9f6"><div class="ttname"><a href="structmxnet_1_1RunContext.html#a4c391bc87743c0c0bd47e7011dd5a9f6">mxnet::RunContext::event_pool</a></div><div class="ttdeci">void * event_pool</div><div class="ttdoc">pointer to the cuda event pool used by the dependency engine</div><div class="ttdef"><b>Definition:</b> base.h:357</div></div>
<div class="ttc" id="anamespacemxnet_1_1cpp_html_a65c3def958cbb9d09c7f56082a5257d6"><div class="ttname"><a href="namespacemxnet_1_1cpp.html#a65c3def958cbb9d09c7f56082a5257d6">mxnet::cpp::DeviceType</a></div><div class="ttdeci">DeviceType</div><div class="ttdef"><b>Definition:</b> ndarray.h:40</div></div>
<div class="ttc" id="aclassmxnet_1_1SyncedGPUAuxStream_html_aea10f57259cf765e22e48d3b58777f78"><div class="ttname"><a href="classmxnet_1_1SyncedGPUAuxStream.html#aea10f57259cf765e22e48d3b58777f78">mxnet::SyncedGPUAuxStream::SyncedGPUAuxStream</a></div><div class="ttdeci">SyncedGPUAuxStream(GPUAuxStream *gpu_aux_stream)</div><div class="ttdoc">constructor.</div><div class="ttdef"><b>Definition:</b> base.h:314</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 5 2023 03:47:39 for mxnet by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>