blob: af30af576a6c264f34a1bed5733b6892219aacbd [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: nnvm::Layout Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">mxnet
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacennvm.html">nnvm</a></li><li class="navelem"><a class="el" href="classnnvm_1_1Layout.html">Layout</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classnnvm_1_1Layout-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">nnvm::Layout Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="layout_8h_source.html">layout.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for nnvm::Layout:</div>
<div class="dyncontent">
<div class="center"><img src="classnnvm_1_1Layout__coll__graph.png" border="0" usemap="#nnvm_1_1Layout_coll__map" alt="Collaboration graph"/></div>
<!-- MAP 0 -->
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:ac8b8f4ea758b7e1dcb60f79e5e5044b6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> = char</td></tr>
<tr class="separator:ac8b8f4ea758b7e1dcb60f79e5e5044b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d1c92053c80bf1e7df7978335208f8d"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a2d1c92053c80bf1e7df7978335208f8d">iterator</a> = std::vector&lt; <a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> &gt;::const_iterator</td></tr>
<tr class="separator:a2d1c92053c80bf1e7df7978335208f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a271f83387eac34590453e672f9b6d5e3"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a271f83387eac34590453e672f9b6d5e3">reverse_iterator</a> = std::vector&lt; <a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> &gt;::const_reverse_iterator</td></tr>
<tr class="separator:a271f83387eac34590453e672f9b6d5e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3974e613522c73cc3e859d3a1231c660"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a3974e613522c73cc3e859d3a1231c660">Layout</a> ()</td></tr>
<tr class="memdesc:a3974e613522c73cc3e859d3a1231c660"><td class="mdescLeft">&#160;</td><td class="mdescRight">default constructor <a href="classnnvm_1_1Layout.html#a3974e613522c73cc3e859d3a1231c660">More...</a><br /></td></tr>
<tr class="separator:a3974e613522c73cc3e859d3a1231c660"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2628d06acb37cd8e831ce23a6cd39cbb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a2628d06acb37cd8e831ce23a6cd39cbb">Layout</a> (const std::string &amp;layout)</td></tr>
<tr class="memdesc:a2628d06acb37cd8e831ce23a6cd39cbb"><td class="mdescLeft">&#160;</td><td class="mdescRight">construct from a string. <a href="classnnvm_1_1Layout.html#a2628d06acb37cd8e831ce23a6cd39cbb">More...</a><br /></td></tr>
<tr class="separator:a2628d06acb37cd8e831ce23a6cd39cbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c21035d54b767ddbd8c5e0d3ff58be8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a8c21035d54b767ddbd8c5e0d3ff58be8">Layout</a> (const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;s)</td></tr>
<tr class="memdesc:a8c21035d54b767ddbd8c5e0d3ff58be8"><td class="mdescLeft">&#160;</td><td class="mdescRight">copy constructor from another layout <a href="classnnvm_1_1Layout.html#a8c21035d54b767ddbd8c5e0d3ff58be8">More...</a><br /></td></tr>
<tr class="separator:a8c21035d54b767ddbd8c5e0d3ff58be8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27b89d7fcae5e28feff9b5af2a19c7fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a27b89d7fcae5e28feff9b5af2a19c7fc">Layout</a> (<a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:a27b89d7fcae5e28feff9b5af2a19c7fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">move constructor from <a class="el" href="classnnvm_1_1Layout.html">Layout</a> <a href="classnnvm_1_1Layout.html#a27b89d7fcae5e28feff9b5af2a19c7fc">More...</a><br /></td></tr>
<tr class="separator:a27b89d7fcae5e28feff9b5af2a19c7fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc21c0babf7c637dcd47a6bc355bce00"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#adc21c0babf7c637dcd47a6bc355bce00">operator=</a> (const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;src)</td></tr>
<tr class="memdesc:adc21c0babf7c637dcd47a6bc355bce00"><td class="mdescLeft">&#160;</td><td class="mdescRight">assignment from another layout. <a href="classnnvm_1_1Layout.html#adc21c0babf7c637dcd47a6bc355bce00">More...</a><br /></td></tr>
<tr class="separator:adc21c0babf7c637dcd47a6bc355bce00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad80db01d64ab25e3c3fc35ab5ce712b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#ad80db01d64ab25e3c3fc35ab5ce712b8">operator=</a> (<a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:ad80db01d64ab25e3c3fc35ab5ce712b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">assignment from rvalue of another layout. <a href="classnnvm_1_1Layout.html#ad80db01d64ab25e3c3fc35ab5ce712b8">More...</a><br /></td></tr>
<tr class="separator:ad80db01d64ab25e3c3fc35ab5ce712b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb73e54ae6f7eb7f3d9240cbf495be7b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#afb73e54ae6f7eb7f3d9240cbf495be7b">operator=</a> (const std::string &amp;src)</td></tr>
<tr class="memdesc:afb73e54ae6f7eb7f3d9240cbf495be7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">assignment from string. <a href="classnnvm_1_1Layout.html#afb73e54ae6f7eb7f3d9240cbf495be7b">More...</a><br /></td></tr>
<tr class="separator:afb73e54ae6f7eb7f3d9240cbf495be7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4832c343f98c4c289b4b12663773d1dd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a4832c343f98c4c289b4b12663773d1dd">operator==</a> (const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;s) const</td></tr>
<tr class="separator:a4832c343f98c4c289b4b12663773d1dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad496e053156b298ebb9dc9953317272b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#ad496e053156b298ebb9dc9953317272b">operator!=</a> (const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;s) const</td></tr>
<tr class="separator:ad496e053156b298ebb9dc9953317272b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd9c3dcaeb1eceba2a919e75b3e25484"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html">Layout</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#acd9c3dcaeb1eceba2a919e75b3e25484">operator+</a> (const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;other) const</td></tr>
<tr class="memdesc:acd9c3dcaeb1eceba2a919e75b3e25484"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append the current layout by another. <a href="classnnvm_1_1Layout.html#acd9c3dcaeb1eceba2a919e75b3e25484">More...</a><br /></td></tr>
<tr class="separator:acd9c3dcaeb1eceba2a919e75b3e25484"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f694302cc1cf60f52b2ce4c462761f3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a8f694302cc1cf60f52b2ce4c462761f3">swap</a> (<a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;other)</td></tr>
<tr class="memdesc:a8f694302cc1cf60f52b2ce4c462761f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swap current object with other. <a href="classnnvm_1_1Layout.html#a8f694302cc1cf60f52b2ce4c462761f3">More...</a><br /></td></tr>
<tr class="separator:a8f694302cc1cf60f52b2ce4c462761f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7dfc3d7f52539abc61ce7ef9a294a41"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#ae7dfc3d7f52539abc61ce7ef9a294a41">convertible</a> (const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;dst) const</td></tr>
<tr class="memdesc:ae7dfc3d7f52539abc61ce7ef9a294a41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Two layouts are convertible only if they have same set of super-dimensions. e.g., NCHW, NCHW16c, NHWC are convertible between each other, but NCHW, CHW, OIHW are not. <a href="classnnvm_1_1Layout.html#ae7dfc3d7f52539abc61ce7ef9a294a41">More...</a><br /></td></tr>
<tr class="separator:ae7dfc3d7f52539abc61ce7ef9a294a41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ff1a4882c320219f906261a62734d92"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html">Layout</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a8ff1a4882c320219f906261a62734d92">sublayout</a> (size_t pos, size_t len) const</td></tr>
<tr class="memdesc:a8ff1a4882c320219f906261a62734d92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a sublayout which is the portion of the object that starts at dimension <code>pos</code> and spans <code>len</code> dimensions (or until the end of the layout, whichever comes first). <a href="classnnvm_1_1Layout.html#a8ff1a4882c320219f906261a62734d92">More...</a><br /></td></tr>
<tr class="separator:a8ff1a4882c320219f906261a62734d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af78f3b503edb99fa691af2d2b7e68d38"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html">Layout</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#af78f3b503edb99fa691af2d2b7e68d38">reverse</a> () const</td></tr>
<tr class="separator:af78f3b503edb99fa691af2d2b7e68d38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb03256e0dc56a6d9ffb4ca9849d42ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html">Layout</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#afb03256e0dc56a6d9ffb4ca9849d42ab">split</a> (<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> dim, size_t target_pos, uint32_t size) const</td></tr>
<tr class="memdesc:afb03256e0dc56a6d9ffb4ca9849d42ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Split <code>dim</code> by <code>size</code> and put the sub-dimension to position <code>target_pos</code>. <a href="classnnvm_1_1Layout.html#afb03256e0dc56a6d9ffb4ca9849d42ab">More...</a><br /></td></tr>
<tr class="separator:afb03256e0dc56a6d9ffb4ca9849d42ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a925587899b40b6cccd0ae999a3e80e9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html#a2d1c92053c80bf1e7df7978335208f8d">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a925587899b40b6cccd0ae999a3e80e9f">begin</a> () const</td></tr>
<tr class="separator:a925587899b40b6cccd0ae999a3e80e9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae112d4eb849302a5d894bce072b5518f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html#a2d1c92053c80bf1e7df7978335208f8d">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#ae112d4eb849302a5d894bce072b5518f">end</a> () const</td></tr>
<tr class="separator:ae112d4eb849302a5d894bce072b5518f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a723955d7f43f3cb456664c685506eb44"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html#a271f83387eac34590453e672f9b6d5e3">reverse_iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a723955d7f43f3cb456664c685506eb44">rbegin</a> () const</td></tr>
<tr class="separator:a723955d7f43f3cb456664c685506eb44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abacaf11090ff1566a0bda4f34d456e97"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html#a271f83387eac34590453e672f9b6d5e3">reverse_iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#abacaf11090ff1566a0bda4f34d456e97">rend</a> () const</td></tr>
<tr class="separator:abacaf11090ff1566a0bda4f34d456e97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e6802481b5a33a7bed0769621876e9b"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a8e6802481b5a33a7bed0769621876e9b">ndim</a> () const</td></tr>
<tr class="separator:a8e6802481b5a33a7bed0769621876e9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cad0ce27cbbe2e5965df00a4183707b"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a9cad0ce27cbbe2e5965df00a4183707b">at</a> (size_t i) const</td></tr>
<tr class="memdesc:a9cad0ce27cbbe2e5965df00a4183707b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The description of the <code>i-th</code> dimension. If it is a sub-dimension, the size will be returned as well, e.g., 16c. Otherwise a single character is returned, e.g., C. <a href="classnnvm_1_1Layout.html#a9cad0ce27cbbe2e5965df00a4183707b">More...</a><br /></td></tr>
<tr class="separator:a9cad0ce27cbbe2e5965df00a4183707b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02ebe8b16d23e4ad54688538a1661276"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a02ebe8b16d23e4ad54688538a1661276">indexof</a> (<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> dim) const</td></tr>
<tr class="memdesc:a02ebe8b16d23e4ad54688538a1661276"><td class="mdescLeft">&#160;</td><td class="mdescRight">return the index of the input dimension. If it is not found in the layout or the layout is undefined, return -1. <a href="classnnvm_1_1Layout.html#a02ebe8b16d23e4ad54688538a1661276">More...</a><br /></td></tr>
<tr class="separator:a02ebe8b16d23e4ad54688538a1661276"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25e4133e756af2b8561729603b30d54f"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a25e4133e756af2b8561729603b30d54f">subsizeof</a> (<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> dim) const</td></tr>
<tr class="separator:a25e4133e756af2b8561729603b30d54f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a631985ba6aa27602645c5fad35cd9cdf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a631985ba6aa27602645c5fad35cd9cdf">contains</a> (<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> dim) const</td></tr>
<tr class="memdesc:a631985ba6aa27602645c5fad35cd9cdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether the layout contains a dimension. <a href="classnnvm_1_1Layout.html#a631985ba6aa27602645c5fad35cd9cdf">More...</a><br /></td></tr>
<tr class="separator:a631985ba6aa27602645c5fad35cd9cdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0954585a0fe9b198e128e07f4df56310"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a0954585a0fe9b198e128e07f4df56310">operator[]</a> (size_t i) const</td></tr>
<tr class="separator:a0954585a0fe9b198e128e07f4df56310"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b50139abbd1c1f7dddcb79ddd81213f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a1b50139abbd1c1f7dddcb79ddd81213f">defined</a> () const</td></tr>
<tr class="separator:a1b50139abbd1c1f7dddcb79ddd81213f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae47f9b8d2422340c9626831393e0741f"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#ae47f9b8d2422340c9626831393e0741f">name</a> () const</td></tr>
<tr class="separator:ae47f9b8d2422340c9626831393e0741f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6d6ad8ad40e89925690cc29fb97d336"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#aa6d6ad8ad40e89925690cc29fb97d336">Save</a> (<a class="el" href="classdmlc_1_1JSONWriter.html">dmlc::JSONWriter</a> *writer) const</td></tr>
<tr class="memdesc:aa6d6ad8ad40e89925690cc29fb97d336"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write layout in JSON format. <a href="classnnvm_1_1Layout.html#aa6d6ad8ad40e89925690cc29fb97d336">More...</a><br /></td></tr>
<tr class="separator:aa6d6ad8ad40e89925690cc29fb97d336"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb7e3caf0383e8f81ffc091b025672d3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#abb7e3caf0383e8f81ffc091b025672d3">Load</a> (<a class="el" href="classdmlc_1_1JSONReader.html">dmlc::JSONReader</a> *reader)</td></tr>
<tr class="memdesc:abb7e3caf0383e8f81ffc091b025672d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load layout from JSON. <a href="classnnvm_1_1Layout.html#abb7e3caf0383e8f81ffc091b025672d3">More...</a><br /></td></tr>
<tr class="separator:abb7e3caf0383e8f81ffc091b025672d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a1c7b4849b5b2e0b585bddac7de35e5d3"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a1c7b4849b5b2e0b585bddac7de35e5d3">is_superdim</a> (<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> dim)</td></tr>
<tr class="memdesc:a1c7b4849b5b2e0b585bddac7de35e5d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a given dimension is a super-dimension. <a href="classnnvm_1_1Layout.html#a1c7b4849b5b2e0b585bddac7de35e5d3">More...</a><br /></td></tr>
<tr class="separator:a1c7b4849b5b2e0b585bddac7de35e5d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae049046dad65a594a3f2fb9e4ddffaeb"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#ae049046dad65a594a3f2fb9e4ddffaeb">is_subdim</a> (<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> dim)</td></tr>
<tr class="memdesc:ae049046dad65a594a3f2fb9e4ddffaeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a given dimension is a sub-dimension. <a href="classnnvm_1_1Layout.html#ae049046dad65a594a3f2fb9e4ddffaeb">More...</a><br /></td></tr>
<tr class="separator:ae049046dad65a594a3f2fb9e4ddffaeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81e43b5394f69ccfc7c4e5c3066e999e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a81e43b5394f69ccfc7c4e5c3066e999e">to_superdim</a> (<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> dim)</td></tr>
<tr class="memdesc:a81e43b5394f69ccfc7c4e5c3066e999e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a given dimension to super-dimension. <a href="classnnvm_1_1Layout.html#a81e43b5394f69ccfc7c4e5c3066e999e">More...</a><br /></td></tr>
<tr class="separator:a81e43b5394f69ccfc7c4e5c3066e999e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ea742ae1691df9212b534c058cd3b85"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a1ea742ae1691df9212b534c058cd3b85">to_subdim</a> (<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> dim)</td></tr>
<tr class="memdesc:a1ea742ae1691df9212b534c058cd3b85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a given dimension to sub-dimension. <a href="classnnvm_1_1Layout.html#a1ea742ae1691df9212b534c058cd3b85">More...</a><br /></td></tr>
<tr class="separator:a1ea742ae1691df9212b534c058cd3b85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25f899cd1463c234085fe5a27612caba"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a25f899cd1463c234085fe5a27612caba">Undef</a> ()</td></tr>
<tr class="memdesc:a25f899cd1463c234085fe5a27612caba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return an undefined layout. <a href="classnnvm_1_1Layout.html#a25f899cd1463c234085fe5a27612caba">More...</a><br /></td></tr>
<tr class="separator:a25f899cd1463c234085fe5a27612caba"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a4d0f3b738af6b70040980e1287282377"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnnvm_1_1Layout.html#a4d0f3b738af6b70040980e1287282377">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;l)</td></tr>
<tr class="memdesc:a4d0f3b738af6b70040980e1287282377"><td class="mdescLeft">&#160;</td><td class="mdescRight">allow output string of layout to ostream <a href="classnnvm_1_1Layout.html#a4d0f3b738af6b70040980e1287282377">More...</a><br /></td></tr>
<tr class="separator:a4d0f3b738af6b70040980e1287282377"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a2d1c92053c80bf1e7df7978335208f8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d1c92053c80bf1e7df7978335208f8d">&#9670;&nbsp;</a></span>iterator</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classnnvm_1_1Layout.html#a2d1c92053c80bf1e7df7978335208f8d">nnvm::Layout::iterator</a> = std::vector&lt;<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&gt;::const_iterator</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac8b8f4ea758b7e1dcb60f79e5e5044b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8b8f4ea758b7e1dcb60f79e5e5044b6">&#9670;&nbsp;</a></span>LayoutDim</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">nnvm::Layout::LayoutDim</a> = char</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a271f83387eac34590453e672f9b6d5e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a271f83387eac34590453e672f9b6d5e3">&#9670;&nbsp;</a></span>reverse_iterator</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classnnvm_1_1Layout.html#a271f83387eac34590453e672f9b6d5e3">nnvm::Layout::reverse_iterator</a> = std::vector&lt;<a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&gt;::const_reverse_iterator</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3974e613522c73cc3e859d3a1231c660"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3974e613522c73cc3e859d3a1231c660">&#9670;&nbsp;</a></span>Layout() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">nnvm::Layout::Layout </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>default constructor </p>
</div>
</div>
<a id="a2628d06acb37cd8e831ce23a6cd39cbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2628d06acb37cd8e831ce23a6cd39cbb">&#9670;&nbsp;</a></span>Layout() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">nnvm::Layout::Layout </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>layout</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>construct from a string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">layout</td><td>input in layout convention: upper case indicates a dimension and the corresponding lower case with factor size indicates the split dimension. return undefined layout if "__undef__" is passed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8c21035d54b767ddbd8c5e0d3ff58be8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c21035d54b767ddbd8c5e0d3ff58be8">&#9670;&nbsp;</a></span>Layout() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">nnvm::Layout::Layout </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>copy constructor from another layout </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>the source layout </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a27b89d7fcae5e28feff9b5af2a19c7fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27b89d7fcae5e28feff9b5af2a19c7fc">&#9670;&nbsp;</a></span>Layout() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">nnvm::Layout::Layout </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>move constructor from <a class="el" href="classnnvm_1_1Layout.html">Layout</a> </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">src</td><td>the source layout </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a9cad0ce27cbbe2e5965df00a4183707b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cad0ce27cbbe2e5965df00a4183707b">&#9670;&nbsp;</a></span>at()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string nnvm::Layout::at </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>i</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The description of the <code>i-th</code> dimension. If it is a sub-dimension, the size will be returned as well, e.g., 16c. Otherwise a single character is returned, e.g., C. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">i</td><td>The position </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the description of the dimension. </dd></dl>
</div>
</div>
<a id="a925587899b40b6cccd0ae999a3e80e9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a925587899b40b6cccd0ae999a3e80e9f">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html#a2d1c92053c80bf1e7df7978335208f8d">iterator</a> nnvm::Layout::begin </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>begin iterator </dd></dl>
</div>
</div>
<a id="a631985ba6aa27602645c5fad35cd9cdf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a631985ba6aa27602645c5fad35cd9cdf">&#9670;&nbsp;</a></span>contains()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool nnvm::Layout::contains </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td>
<td class="paramname"><em>dim</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Whether the layout contains a dimension. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dim</td><td>dimension to be checked. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Whether the layout contains the dimension. </dd></dl>
</div>
</div>
<a id="ae7dfc3d7f52539abc61ce7ef9a294a41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7dfc3d7f52539abc61ce7ef9a294a41">&#9670;&nbsp;</a></span>convertible()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool nnvm::Layout::convertible </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td>
<td class="paramname"><em>dst</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Two layouts are convertible only if they have same set of super-dimensions. e.g., NCHW, NCHW16c, NHWC are convertible between each other, but NCHW, CHW, OIHW are not. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dst</td><td>the target layout </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Whether can be converted to dst layout. </dd></dl>
</div>
</div>
<a id="a1b50139abbd1c1f7dddcb79ddd81213f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b50139abbd1c1f7dddcb79ddd81213f">&#9670;&nbsp;</a></span>defined()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool nnvm::Layout::defined </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>whether the layout is defined </dd></dl>
</div>
</div>
<a id="ae112d4eb849302a5d894bce072b5518f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae112d4eb849302a5d894bce072b5518f">&#9670;&nbsp;</a></span>end()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html#a2d1c92053c80bf1e7df7978335208f8d">iterator</a> nnvm::Layout::end </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>end iterator </dd></dl>
</div>
</div>
<a id="a02ebe8b16d23e4ad54688538a1661276"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02ebe8b16d23e4ad54688538a1661276">&#9670;&nbsp;</a></span>indexof()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int32_t nnvm::Layout::indexof </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td>
<td class="paramname"><em>dim</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>return the index of the input dimension. If it is not found in the layout or the layout is undefined, return -1. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dim</td><td>the input dimension. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the index or -1 if not found. </dd></dl>
</div>
</div>
<a id="ae049046dad65a594a3f2fb9e4ddffaeb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae049046dad65a594a3f2fb9e4ddffaeb">&#9670;&nbsp;</a></span>is_subdim()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool nnvm::Layout::is_subdim </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td>
<td class="paramname"><em>dim</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether a given dimension is a sub-dimension. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dim</td><td>input dimension </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Whether a given dimension is a sub-dimension. </dd></dl>
</div>
</div>
<a id="a1c7b4849b5b2e0b585bddac7de35e5d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c7b4849b5b2e0b585bddac7de35e5d3">&#9670;&nbsp;</a></span>is_superdim()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool nnvm::Layout::is_superdim </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td>
<td class="paramname"><em>dim</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether a given dimension is a super-dimension. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dim</td><td>input dimension </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Whether a given dimension is a super-dimension. </dd></dl>
</div>
</div>
<a id="abb7e3caf0383e8f81ffc091b025672d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb7e3caf0383e8f81ffc091b025672d3">&#9670;&nbsp;</a></span>Load()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void nnvm::Layout::Load </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classdmlc_1_1JSONReader.html">dmlc::JSONReader</a> *&#160;</td>
<td class="paramname"><em>reader</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Load layout from JSON. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>JSONReader </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae47f9b8d2422340c9626831393e0741f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae47f9b8d2422340c9626831393e0741f">&#9670;&nbsp;</a></span>name()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::string&amp; nnvm::Layout::name </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the string description of the layout </dd></dl>
</div>
</div>
<a id="a8e6802481b5a33a7bed0769621876e9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e6802481b5a33a7bed0769621876e9b">&#9670;&nbsp;</a></span>ndim()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t nnvm::Layout::ndim </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>number of dimensions </dd></dl>
</div>
</div>
<a id="ad496e053156b298ebb9dc9953317272b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad496e053156b298ebb9dc9953317272b">&#9670;&nbsp;</a></span>operator!=()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool nnvm::Layout::operator!= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>whether two layout not equal </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>the layout to compare against </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="acd9c3dcaeb1eceba2a919e75b3e25484"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd9c3dcaeb1eceba2a919e75b3e25484">&#9670;&nbsp;</a></span>operator+()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> nnvm::Layout::operator+ </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Append the current layout by another. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">other</td><td>the layout to be appended </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a new layout </dd></dl>
</div>
</div>
<a id="adc21c0babf7c637dcd47a6bc355bce00"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc21c0babf7c637dcd47a6bc355bce00">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html">Layout</a>&amp; nnvm::Layout::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>assignment from another layout. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">src</td><td>source layout </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>reference of self </dd></dl>
</div>
</div>
<a id="afb73e54ae6f7eb7f3d9240cbf495be7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb73e54ae6f7eb7f3d9240cbf495be7b">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html">Layout</a>&amp; nnvm::Layout::operator= </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>assignment from string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">src</td><td>source layout </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>reference of self </dd></dl>
</div>
</div>
<a id="ad80db01d64ab25e3c3fc35ab5ce712b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad80db01d64ab25e3c3fc35ab5ce712b8">&#9670;&nbsp;</a></span>operator=() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html">Layout</a>&amp; nnvm::Layout::operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>src</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>assignment from rvalue of another layout. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">src</td><td>source layout </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>reference of self </dd></dl>
</div>
</div>
<a id="a4832c343f98c4c289b4b12663773d1dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4832c343f98c4c289b4b12663773d1dd">&#9670;&nbsp;</a></span>operator==()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool nnvm::Layout::operator== </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>whether two layout equals </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>the layout to compare against </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a0954585a0fe9b198e128e07f4df56310"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0954585a0fe9b198e128e07f4df56310">&#9670;&nbsp;</a></span>operator[]()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> nnvm::Layout::operator[] </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>i</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a723955d7f43f3cb456664c685506eb44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a723955d7f43f3cb456664c685506eb44">&#9670;&nbsp;</a></span>rbegin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html#a271f83387eac34590453e672f9b6d5e3">reverse_iterator</a> nnvm::Layout::rbegin </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>rbegin iterator </dd></dl>
</div>
</div>
<a id="abacaf11090ff1566a0bda4f34d456e97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abacaf11090ff1566a0bda4f34d456e97">&#9670;&nbsp;</a></span>rend()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html#a271f83387eac34590453e672f9b6d5e3">reverse_iterator</a> nnvm::Layout::rend </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>rend iterator </dd></dl>
</div>
</div>
<a id="af78f3b503edb99fa691af2d2b7e68d38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af78f3b503edb99fa691af2d2b7e68d38">&#9670;&nbsp;</a></span>reverse()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> nnvm::Layout::reverse </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A newly constructed reversed <a class="el" href="classnnvm_1_1Layout.html">Layout</a> object. </dd></dl>
</div>
</div>
<a id="aa6d6ad8ad40e89925690cc29fb97d336"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6d6ad8ad40e89925690cc29fb97d336">&#9670;&nbsp;</a></span>Save()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void nnvm::Layout::Save </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classdmlc_1_1JSONWriter.html">dmlc::JSONWriter</a> *&#160;</td>
<td class="paramname"><em>writer</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Write layout in JSON format. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>JSONWriter </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afb03256e0dc56a6d9ffb4ca9849d42ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb03256e0dc56a6d9ffb4ca9849d42ab">&#9670;&nbsp;</a></span>split()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> nnvm::Layout::split </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td>
<td class="paramname"><em>dim</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>target_pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Split <code>dim</code> by <code>size</code> and put the sub-dimension to position <code>target_pos</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dim</td><td>The source dimension to be split. It must be a super-dimension. </td></tr>
<tr><td class="paramname">target_pos</td><td>The target position of the newly split sub-dimension. </td></tr>
<tr><td class="paramname">size</td><td>size of the sub-dimension. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly constructed <a class="el" href="classnnvm_1_1Layout.html">Layout</a> object. </dd></dl>
</div>
</div>
<a id="a8ff1a4882c320219f906261a62734d92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ff1a4882c320219f906261a62734d92">&#9670;&nbsp;</a></span>sublayout()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> nnvm::Layout::sublayout </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a sublayout which is the portion of the object that starts at dimension <code>pos</code> and spans <code>len</code> dimensions (or until the end of the layout, whichever comes first). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pos</td><td>The start position. </td></tr>
<tr><td class="paramname">len</td><td>The length of the sub-layout. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly constructed <a class="el" href="classnnvm_1_1Layout.html">Layout</a> object. </dd></dl>
</div>
</div>
<a id="a25e4133e756af2b8561729603b30d54f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25e4133e756af2b8561729603b30d54f">&#9670;&nbsp;</a></span>subsizeof()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t nnvm::Layout::subsizeof </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td>
<td class="paramname"><em>dim</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dim</td><td>the input super-dimension or sub-dimension. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the size of the sub-dimension of <code>dim</code> (if <code>dim</code> is a super-dimension), or the size of <code>dim</code> itself (if <code>dim</code> is a sub-dimension). Return -1 if <code>dim</code> is not in the layout or the layout is undefined. </dd></dl>
</div>
</div>
<a id="a8f694302cc1cf60f52b2ce4c462761f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f694302cc1cf60f52b2ce4c462761f3">&#9670;&nbsp;</a></span>swap()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void nnvm::Layout::swap </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Swap current object with other. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">other</td><td>another object to be swapped. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1ea742ae1691df9212b534c058cd3b85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ea742ae1691df9212b534c058cd3b85">&#9670;&nbsp;</a></span>to_subdim()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> nnvm::Layout::to_subdim </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td>
<td class="paramname"><em>dim</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a given dimension to sub-dimension. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dim</td><td>input dimension </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The converted description. </dd></dl>
</div>
</div>
<a id="a81e43b5394f69ccfc7c4e5c3066e999e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81e43b5394f69ccfc7c4e5c3066e999e">&#9670;&nbsp;</a></span>to_superdim()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a> nnvm::Layout::to_superdim </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classnnvm_1_1Layout.html#ac8b8f4ea758b7e1dcb60f79e5e5044b6">LayoutDim</a>&#160;</td>
<td class="paramname"><em>dim</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a given dimension to super-dimension. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dim</td><td>input dimension </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The converted description. </dd></dl>
</div>
</div>
<a id="a25f899cd1463c234085fe5a27612caba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25f899cd1463c234085fe5a27612caba">&#9670;&nbsp;</a></span>Undef()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const <a class="el" href="classnnvm_1_1Layout.html">Layout</a>&amp; nnvm::Layout::Undef </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return an undefined layout. </p>
<dl class="section return"><dt>Returns</dt><dd>a (global) undefined layout. </dd></dl>
</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="a4d0f3b738af6b70040980e1287282377"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d0f3b738af6b70040980e1287282377">&#9670;&nbsp;</a></span>operator&lt;&lt;</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classnnvm_1_1Layout.html">Layout</a> &amp;&#160;</td>
<td class="paramname"><em>l</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>allow output string of layout to ostream </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">os</td><td>the output stream </td></tr>
<tr><td class="paramname">l</td><td>the layout </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the ostream </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>/work/mxnet/3rdparty/tvm/nnvm/include/nnvm/<a class="el" href="layout_8h_source.html">layout.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 5 2023 03:47:41 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>