cutlass/docs/igemm__epilogue_8h_source.html
2018-10-26 14:54:58 -07:00

169 lines
94 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Cutlass: igemm_epilogue.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>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" async src="http://cdn.mathjax.org/mathjax/latest/MathJax.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">Cutlass
</div>
<div id="projectbrief">CUDA Templates for Linear Algebra Subroutines and Solvers</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<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_1417ee5ebebc309c36b7962f26a92c39.html">cutlass</a></li><li class="navelem"><a class="el" href="dir_18d6a367a3982a494d65599933fc67a3.html">gemm</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">igemm_epilogue.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="igemm__epilogue_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"> * Copyright (c) 2017-2018, NVIDIA CORPORATION. All rights reserved.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Redistribution and use in source and binary forms, with or without modification, are permitted</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * provided that the following conditions are met:</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * * Redistributions of source code must retain the above copyright notice, this list of</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * conditions and the following disclaimer.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * * Redistributions in binary form must reproduce the above copyright notice, this list of</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * conditions and the following disclaimer in the documentation and/or other materials</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * provided with the distribution.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * * Neither the name of the NVIDIA CORPORATION nor the names of its contributors may be used</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * to endorse or promote products derived from this software without specific prior written</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * permission.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * STRICT LIABILITY, OR TOR (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> **************************************************************************************************/</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="convert_8h.html">cutlass/convert.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="fragment_8h.html">cutlass/fragment.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="gemm__global__stream_8h.html">cutlass/gemm/gemm_global_stream.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="gemm__shared__stream_8h.html">cutlass/gemm/gemm_shared_stream.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="igemm__global__tile_8h.html">cutlass/gemm/igemm_global_tile.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="reshape__tile_8h.html">cutlass/reshape_tile.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="tile__iterator_8h.html">cutlass/tile_iterator.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecutlass.html">cutlass</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">namespace </span>gemm {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">int</span> kElements_&gt;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html"> 45</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html">IgemmFloatToInt8Converter</a> {</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#aa9a4b05f9fc28b80a4ae4aabb2ce1e8c"> 47</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1Fragment.html">Fragment&lt;float, kElements_&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#aa9a4b05f9fc28b80a4ae4aabb2ce1e8c">InputFragment</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a3d89bfc0d94cd695cbe4a61859e5e553"> 49</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1Fragment.html">Fragment&lt;int8_t, kElements_&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a3d89bfc0d94cd695cbe4a61859e5e553">OutputFragment</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// We are packing 4 floats into int32 registers so we need kElements to be multiple of 4.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="platform_8h.html#adde4c9ea91b753491851361a4198c009">static_assert</a>(kElements_ % 4 == 0, <span class="stringliteral">&quot;kElements must be multiple of 4&quot;</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#ac65f020e93584b1bd3cdb849ff625026"> 55</a></span>&#160; CUTLASS_DEVICE <a class="code" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#ac65f020e93584b1bd3cdb849ff625026">IgemmFloatToInt8Converter</a>() {}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a91ad48362b99a5f96ac1e92e95104f7b"> 58</a></span>&#160; CUTLASS_DEVICE <span class="keywordtype">void</span> <a class="code" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a91ad48362b99a5f96ac1e92e95104f7b">transform</a>(<a class="code" href="structcutlass_1_1Fragment.html">InputFragment</a> <span class="keyword">const</span>&amp; src, <a class="code" href="structcutlass_1_1Fragment.html">OutputFragment</a>&amp; dst) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a91ad48362b99a5f96ac1e92e95104f7b">transform</a>(src, 0, dst);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Fragment_&gt;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a819fd33db88a68521108bab2641d73fd"> 64</a></span>&#160; CUTLASS_DEVICE <span class="keywordtype">void</span> <a class="code" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a819fd33db88a68521108bab2641d73fd">transform</a>(Fragment_ <span class="keyword">const</span>&amp; src, <span class="keywordtype">int</span> offset, <a class="code" href="structcutlass_1_1Fragment.html">OutputFragment</a>&amp; dst) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// The inputs.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; float4 <span class="keyword">const</span>* src_f4 = <span class="keyword">reinterpret_cast&lt;</span>float4 const*<span class="keyword">&gt;</span>(&amp;src[0]);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// The outputs.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">int</span>* dst_int = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">int</span>*<span class="keyword">&gt;</span>(&amp;dst[0]);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// Iterate over the floats and pack them together to produce ints.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; kElements_ / 4; ++i) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// Read the float4.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; float4 f4 = src_f4[i];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// Clamp the 4 elements of the floats to the [-128, +127] range.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">float</span> x = fmaxf(-128.f, fminf(127.f, f4.x));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">float</span> y = fmaxf(-128.f, fminf(127.f, f4.y));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">float</span> z = fmaxf(-128.f, fminf(127.f, f4.z));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">float</span> w = fmaxf(-128.f, fminf(127.f, f4.w));</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// Convert to integers.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">int</span> ix = (int)x;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">int</span> iy = (int)y;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">int</span> iz = (int)z;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">int</span> iw = (int)w;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// Extract the lower bytes to build an int32 with 4 int8.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;prmt.b32 %0, %0, %1, 0x1140;&quot;</span> : <span class="stringliteral">&quot;+r&quot;</span>(ix) : <span class="stringliteral">&quot;r&quot;</span>(iy));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;prmt.b32 %0, %0, %1, 0x1140;&quot;</span> : <span class="stringliteral">&quot;+r&quot;</span>(iz) : <span class="stringliteral">&quot;r&quot;</span>(iw));</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;prmt.b32 %0, %0, %1, 0x5410;&quot;</span> : <span class="stringliteral">&quot;+r&quot;</span>(ix) : <span class="stringliteral">&quot;r&quot;</span>(iz));</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// Store the int.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; dst_int[i] = ix;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;};</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"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputScalar_, <span class="keyword">typename</span> OutputFragment_&gt;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer.html"> 101</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer.html">IgemmGlobalStoreTransformer</a> {</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer.html#a98aefa95117dbfdf2e577890318a6c13"> 102</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1Convert.html">Convert&lt;Fragment&lt;InputScalar_, OutputFragment_::kElements&gt;</a>, OutputFragment_&gt; <a class="code" href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer.html#a98aefa95117dbfdf2e577890318a6c13">Transformer</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;};</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">int</span> kElements_&gt;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer_3_01float_00_01Fragment_3_01int8__t_00_01kElements___01_4_01_4.html"> 106</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer.html">IgemmGlobalStoreTransformer</a>&lt;float, <a class="code" href="structcutlass_1_1Fragment.html">Fragment</a>&lt;int8_t, kElements_&gt; &gt; {</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer_3_01float_00_01Fragment_3_01int8__t_00_01kElements___01_4_01_4.html#a52ecdfd8b94d8d7f4881048e11a33aba"> 107</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html">IgemmFloatToInt8Converter&lt;kElements_&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer_3_01float_00_01Fragment_3_01int8__t_00_01kElements___01_4_01_4.html#a52ecdfd8b94d8d7f4881048e11a33aba">Transformer</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;};</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">int</span> kElements_&gt;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html"> 113</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html">IgemmInt8ToFloatConverter</a> {</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a702ca51abc077355a2d7343976a0cfdb"> 115</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1Fragment.html">Fragment&lt;int8_t, kElements_&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a702ca51abc077355a2d7343976a0cfdb">InputFragment</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a66ac385a1cd771b95f70ee36cd74e8f7"> 117</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1Fragment.html">Fragment&lt;float, kElements_&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a66ac385a1cd771b95f70ee36cd74e8f7">OutputFragment</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// We are unpacking 4 int8s from int32.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="platform_8h.html#adde4c9ea91b753491851361a4198c009">static_assert</a>(kElements_ % 4 == 0, <span class="stringliteral">&quot;kElements must be multiple of 4&quot;</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a88a55a494d3a30d50477d50bf6a8804d"> 123</a></span>&#160; CUTLASS_DEVICE <a class="code" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a88a55a494d3a30d50477d50bf6a8804d">IgemmInt8ToFloatConverter</a>() {}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#aca8a61e8eb1ab33b9c61e2e7d342379d"> 126</a></span>&#160; CUTLASS_DEVICE <span class="keywordtype">void</span> <a class="code" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#aca8a61e8eb1ab33b9c61e2e7d342379d">transform</a>(<a class="code" href="structcutlass_1_1Fragment.html">InputFragment</a> <span class="keyword">const</span>&amp; src, <a class="code" href="structcutlass_1_1Fragment.html">OutputFragment</a>&amp; dst) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#aca8a61e8eb1ab33b9c61e2e7d342379d">transform</a>(src, 0, dst);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Fragment_&gt;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a89e078dbf376da872c3993ccbaf744d3"> 132</a></span>&#160; CUTLASS_DEVICE <span class="keywordtype">void</span> <a class="code" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a89e078dbf376da872c3993ccbaf744d3">transform</a>(Fragment_ <span class="keyword">const</span>&amp; src, <span class="keywordtype">int</span> offset, <a class="code" href="structcutlass_1_1Fragment.html">OutputFragment</a>&amp; dst) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// The inputs.</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">int</span> <span class="keyword">const</span>* src_int = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">int</span> const*<span class="keyword">&gt;</span>(&amp;src[0]);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// The outputs.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; float4* dst_f4 = <span class="keyword">reinterpret_cast&lt;</span>float4*<span class="keyword">&gt;</span>(&amp;dst[0]);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// Iterate over the int8 and unpack them together to produce floats.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; kElements_ / 4; ++i) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// Read the int.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordtype">int</span> ix, iy, iz, iw = src_int[i];</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// Extract the 4 bytes.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;prmt.b32 %0, 0x0, %1, 0x4440;&quot;</span> : <span class="stringliteral">&quot;=r&quot;</span>(ix) : <span class="stringliteral">&quot;r&quot;</span>(iw));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;prmt.b32 %0, 0x0, %1, 0x4441;&quot;</span> : <span class="stringliteral">&quot;=r&quot;</span>(iy) : <span class="stringliteral">&quot;r&quot;</span>(iw));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;prmt.b32 %0, 0x0, %1, 0x4442;&quot;</span> : <span class="stringliteral">&quot;=r&quot;</span>(iz) : <span class="stringliteral">&quot;r&quot;</span>(iw));</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;prmt.b32 %0, 0x0, %1, 0x4443;&quot;</span> : <span class="stringliteral">&quot;=r&quot;</span>(iw) : <span class="stringliteral">&quot;r&quot;</span>(iw));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// The floats.</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">float</span> fx, fy, fz, fw;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// Convert to floats (make sure we generate I2F.F32.S8).</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;cvt.rn.f32.s8 %0, %1;&quot;</span> : <span class="stringliteral">&quot;=f&quot;</span>(fx) : <span class="stringliteral">&quot;r&quot;</span>(ix));</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;cvt.rn.f32.s8 %0, %1;&quot;</span> : <span class="stringliteral">&quot;=f&quot;</span>(fy) : <span class="stringliteral">&quot;r&quot;</span>(iy));</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;cvt.rn.f32.s8 %0, %1;&quot;</span> : <span class="stringliteral">&quot;=f&quot;</span>(fz) : <span class="stringliteral">&quot;r&quot;</span>(iz));</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">&quot;cvt.rn.f32.s8 %0, %1;&quot;</span> : <span class="stringliteral">&quot;=f&quot;</span>(fw) : <span class="stringliteral">&quot;r&quot;</span>(iw));</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// Store the float4.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; dst_f4[i] = make_float4(fx, fy, fz, fw);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;};</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputFragment_, <span class="keyword">typename</span> OutputScalar_&gt;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer.html"> 167</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer.html">IgemmGlobalLoadTransformer</a> {</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer.html#ad3190650741cef20c1aca919eddd9d72"> 168</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1Convert.html">Convert&lt;InputFragment_, Fragment&lt;OutputScalar_, InputFragment_::kElements&gt;</a> &gt; <a class="code" href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer.html#ad3190650741cef20c1aca919eddd9d72">Transformer</a>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;};</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">int</span> kElements_&gt;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer_3_01Fragment_3_01int8__t_00_01kElements___01_4_00_01float_01_4.html"> 172</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer.html">IgemmGlobalLoadTransformer</a>&lt;<a class="code" href="structcutlass_1_1Fragment.html">Fragment</a>&lt;int8_t, kElements_&gt;, float&gt; {</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer_3_01Fragment_3_01int8__t_00_01kElements___01_4_00_01float_01_4.html#a49c249026be24ec8a66f5eda99cb855c"> 173</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html">IgemmInt8ToFloatConverter&lt;kElements_&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer_3_01Fragment_3_01int8__t_00_01kElements___01_4_00_01float_01_4.html#a49c249026be24ec8a66f5eda99cb855c">Transformer</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;};</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputScalar_, <span class="keyword">typename</span> OutputFragment_&gt;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer.html"> 179</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer.html">IgemmSharedStoreTransformer</a> {</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer.html#a9edd08d595327a8cc3b8da50622b3bd2"> 180</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1Convert.html">Convert&lt;Fragment&lt;InputScalar_, OutputFragment_::kElements&gt;</a>, OutputFragment_&gt; <a class="code" href="structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer.html#a9edd08d595327a8cc3b8da50622b3bd2">Transformer</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;};</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> IgemmConfig_, <span class="keyword">typename</span> EpilogueFunctor_, <span class="keyword">typename</span> Index_&gt;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html"> 186</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html">IgemmEpilogueTraitsHelper</a></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; : <span class="keyword">public</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogueTraitsHelper.html">GemmEpilogueTraitsHelper</a>&lt;IgemmConfig_, EpilogueFunctor_, Index_&gt; {</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a4b23ba8c14e26672a516aa43063250c2"> 189</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogueTraitsHelper.html">GemmEpilogueTraitsHelper&lt;IgemmConfig_, EpilogueFunctor_, Index_&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a4b23ba8c14e26672a516aa43063250c2">Base</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a5a52727bb9b5d5f8afa7d0384f564036"> 191</a></span>&#160; <span class="keyword">typedef</span> IgemmConfig_ <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a5a52727bb9b5d5f8afa7d0384f564036">IgemmConfig</a>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ae4128bba3f1df6ef7824e2db79745b00"> 194</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogueTraitsHelper.html#ae2b82b9b62aefa15005091bb84ac20e8">Base::Scalar</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ae4128bba3f1df6ef7824e2db79745b00">Scalar</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a0b9b2b7838cb13a61a16501a2662fa51"> 196</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1Shape.html">Base::Iterations</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a0b9b2b7838cb13a61a16501a2662fa51">Iterations</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#aed055504ec5f09657e059416150188a9"> 198</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1Shape.html">Base::Delta</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#aed055504ec5f09657e059416150188a9">Delta</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#aaa009025dcd6360ead1dc18005688821"> 201</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmGlobalTileCdTraits.html">Base::GlobalLoadTileTraits</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#aaa009025dcd6360ead1dc18005688821">GlobalLoadTileTraits</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a24826f99d097eea0298e6be12a6327b9"> 203</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmGlobalIteratorCd.html">GemmGlobalIteratorCd&lt;GlobalLoadTileTraits&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a24826f99d097eea0298e6be12a6327b9">GlobalLoadIteratorC</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad8e5337f3d19437e9c4cafcfcc3e3d3e"> 205</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1TileIteratorBase.html#a9ffa12dcd7ed1e96845e1cd273d9f219">GlobalLoadIteratorC::Fragment</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad8e5337f3d19437e9c4cafcfcc3e3d3e">GlobalFragmentC</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">typedef</span></div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad0116b2e7b2ca1526246e2ff7e73fd2f"> 208</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1Convert.html">IgemmGlobalLoadTransformer&lt;GlobalFragmentC, Scalar&gt;::Transformer</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad0116b2e7b2ca1526246e2ff7e73fd2f">GlobalTransformerC</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a16b06a1611dbd22adaa0c9ee5e1b15bd"> 211</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmGlobalTileCdTraits.html">Base::GlobalStoreTileTraits</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a16b06a1611dbd22adaa0c9ee5e1b15bd">GlobalStoreTileTraits</a>;</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad3e937c15bfac443b0e3b94d702f46b2"> 213</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmGlobalIteratorCd.html">GemmGlobalIteratorCd&lt;GlobalStoreTileTraits&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad3e937c15bfac443b0e3b94d702f46b2">GlobalStoreIteratorD</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a723cd69ee4d5c26579b36e02c531ea88"> 215</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1TileIteratorBase.html#a9ffa12dcd7ed1e96845e1cd273d9f219">GlobalStoreIteratorD::Fragment</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a723cd69ee4d5c26579b36e02c531ea88">GlobalFragmentD</a>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">typedef</span></div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a880293ef6a48a0f4941c8f984c36f591"> 218</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1Convert.html">IgemmGlobalStoreTransformer&lt;Scalar, GlobalFragmentD&gt;::Transformer</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a880293ef6a48a0f4941c8f984c36f591">GlobalTransformerD</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad7659dc0eaa491447ad127ef7098924f"> 221</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmSharedStoreTileDTraits.html">Base::SharedStoreTileTraits</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad7659dc0eaa491447ad127ef7098924f">SharedStoreTileTraits</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1TileStoreIterator.html">TileStoreIterator</a>&lt;<a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad7659dc0eaa491447ad127ef7098924f">SharedStoreTileTraits</a>,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmSharedStoreTileDTraits.html#a9a2218b570dada2f1e3ccd8004c47856">SharedStoreTileTraits::Scalar</a>,</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="structcutlass_1_1IteratorAdvance.html#a9ad9c2302ddffa148d47cdcf6c738ddaacfe756fca665eb1bbf389850915c1b81">IteratorAdvance::kH</a>,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="structcutlass_1_1MemorySpace.html#a1e031ec41668015a8fe4ba2c1145d03cac4bd4070cc396d698beb7ca2e3bbff37">MemorySpace::kGlobal</a>&gt;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#af7024128202d642d3535e1ae5cf5f43d"> 227</a></span>&#160; <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#af7024128202d642d3535e1ae5cf5f43d">SharedStoreIteratorD</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a5e64440830b36899f9c0ed8b369665c8"> 229</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1TileStoreIterator.html#aa5386367e805cdaf47a5e7564bedc2fb">SharedStoreIteratorD::Fragment</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a5e64440830b36899f9c0ed8b369665c8">SharedStoreFragmentD</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer.html">IgemmSharedStoreTransformer</a>&lt;<span class="keyword">typename</span> <a class="code" href="structcutlass_1_1Fragment.html#a9c67fa5bbd0b8b49bd6ec002dee3cbab">IgemmConfig::Accumulators::Element</a>,</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a5e64440830b36899f9c0ed8b369665c8">SharedStoreFragmentD</a>&gt;::Transformer</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a00000e0cd14b9e6e242eafb5133af8cf"> 233</a></span>&#160; <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a00000e0cd14b9e6e242eafb5133af8cf">SharedStoreTransformerD</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a851113bffb5b656c5c649845852b3b8d"> 235</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmSharedLoadTileDTraits.html">Base::SharedLoadTileTraits</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a851113bffb5b656c5c649845852b3b8d">SharedLoadTileTraits</a>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1TileLoadIterator.html">TileLoadIterator</a>&lt;<a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a851113bffb5b656c5c649845852b3b8d">SharedLoadTileTraits</a>,</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmSharedLoadTileDTraits.html#a1b025cb056729706f36469e74a9799dc">SharedLoadTileTraits::Scalar</a>,</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="structcutlass_1_1IteratorAdvance.html#a9ad9c2302ddffa148d47cdcf6c738ddaacfe756fca665eb1bbf389850915c1b81">IteratorAdvance::kH</a>,</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="structcutlass_1_1MemorySpace.html#a1e031ec41668015a8fe4ba2c1145d03ca2804339b2be64ff68ae3042073aaa7cc">MemorySpace::kShared</a>&gt;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad33ee44527a7fcfd41b4e677927fd4fa"> 241</a></span>&#160; <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad33ee44527a7fcfd41b4e677927fd4fa">SharedLoadIteratorD</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;};</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keyword">template</span> &lt;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">typename</span> IgemmConfig_,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">typename</span> EpilogueFunctor_,</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">typename</span> Index_ = int,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">typename</span> Helper_ = <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html">IgemmEpilogueTraitsHelper&lt;IgemmConfig_, EpilogueFunctor_, Index_&gt;</a> &gt;</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraits.html"> 255</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraits.html">IgemmEpilogueTraits</a> : <span class="keyword">public</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogueTraits.html">GemmEpilogueTraits</a>&lt;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// The output tile.</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; typename IgemmConfig_::OutputTile,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">// The accumulators.</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; typename IgemmConfig_::Accumulators,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// The global iterator for C.</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; typename Helper_::GlobalLoadIteratorC,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// The transformer for C.</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; typename Helper_::GlobalTransformerC,</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// The transformer for D.</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; typename Helper_::GlobalTransformerD,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="comment">// The global iterator for D.</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; typename Helper_::GlobalStoreIteratorD,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="comment">// The iterator to store D to shared memory.</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; typename Helper_::SharedStoreIteratorD,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// The shared store transformer for D.</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; typename Helper_::SharedStoreTransformerD,</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">// The stream to load D from shared memory.</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; typename Helper_::SharedLoadStreamD,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="comment">// The iterations.</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; typename Helper_::Iterations,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">// The strides between iterations.</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; typename Helper_::Delta,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// The functor to be used in the epilogue.</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; EpilogueFunctor_,</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="comment">// The index.</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; Index_&gt; {</div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraits.html#a8609af98d1e43cd25688bae6f33feed4"> 283</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogueTraits.html#a8609af98d1e43cd25688bae6f33feed4">kInt8Output</a> =</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="structcutlass_1_1platform_1_1is__same.html">platform::is_same&lt;typename IgemmConfig_::ScalarC, int8_t&gt;::value</a> != 0;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;};</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> GemmEpilogueTraits_, <span class="keywordtype">bool</span> = GemmEpilogueTraits_::kInt8Output&gt;</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogue.html"> 290</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogue.html">IgemmEpilogue</a> : <span class="keyword">public</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html">GemmEpilogue</a>&lt;GemmEpilogueTraits_&gt; {</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogue.html#a07f9a934f04610db41aa1aac2f4cdf04"> 292</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html">GemmEpilogue&lt;GemmEpilogueTraits_&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogue.html#a07f9a934f04610db41aa1aac2f4cdf04">Base</a>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogue.html#a599a50becefed561d063c1b834188aca"> 295</a></span>&#160; CUTLASS_DEVICE <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogue.html#a599a50becefed561d063c1b834188aca">IgemmEpilogue</a>(<span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html#ae5209fa80705442693833c63d535161e">Base::Params</a> <span class="keyword">const</span>&amp; params_,</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html#ac36dad8a7b6bc7fc6ef88e44068468dc">Base::SharedStorage</a>&amp; shared_storage_,</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="structcutlass_1_1Coord.html">Coord&lt;3&gt;</a> <span class="keyword">const</span>&amp; _problem_size)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; : <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html">Base</a>(params_, shared_storage_, _problem_size) {}</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;};</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> GemmEpilogueTraits_&gt;</div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4.html"> 304</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogue.html">IgemmEpilogue</a>&lt;GemmEpilogueTraits_, true&gt; : <span class="keyword">public</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html">GemmEpilogue</a>&lt;GemmEpilogueTraits_&gt; {</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4.html#a98b415dbe6f7b6cb0c41a4e6b3ad5abf"> 306</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html">GemmEpilogue&lt;GemmEpilogueTraits_&gt;</a> <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4.html#a98b415dbe6f7b6cb0c41a4e6b3ad5abf">Base</a>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4.html#a0a1be1aab827127161406871ca75cbe0"> 309</a></span>&#160; CUTLASS_DEVICE <a class="code" href="structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4.html#a0a1be1aab827127161406871ca75cbe0">IgemmEpilogue</a>(<span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html#ae5209fa80705442693833c63d535161e">Base::Params</a> <span class="keyword">const</span>&amp; params_,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">typename</span> <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html#ac36dad8a7b6bc7fc6ef88e44068468dc">Base::SharedStorage</a>&amp; shared_storage_,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="structcutlass_1_1Coord.html">Coord&lt;3&gt;</a> <span class="keyword">const</span>&amp; _problem_size)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; : <a class="code" href="structcutlass_1_1gemm_1_1GemmEpilogue.html">Base</a>(params_, shared_storage_, _problem_size) {}</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;};</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;} <span class="comment">// namespace gemm</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;} <span class="comment">// namespace cutlass</span></div><div class="ttc" id="structcutlass_1_1gemm_1_1GemmGlobalTileCdTraits_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmGlobalTileCdTraits.html">cutlass::gemm::GemmGlobalTileCdTraits</a></div><div class="ttdef"><b>Definition:</b> gemm_global_tile.h:120</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraits_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraits.html">cutlass::gemm::IgemmEpilogueTraits</a></div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:255</div></div>
<div class="ttc" id="structcutlass_1_1MemorySpace_html_a1e031ec41668015a8fe4ba2c1145d03ca2804339b2be64ff68ae3042073aaa7cc"><div class="ttname"><a href="structcutlass_1_1MemorySpace.html#a1e031ec41668015a8fe4ba2c1145d03ca2804339b2be64ff68ae3042073aaa7cc">cutlass::MemorySpace::kShared</a></div><div class="ttdef"><b>Definition:</b> load_store.h:41</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_aed055504ec5f09657e059416150188a9"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#aed055504ec5f09657e059416150188a9">cutlass::gemm::IgemmEpilogueTraitsHelper::Delta</a></div><div class="ttdeci">Base::Delta Delta</div><div class="ttdoc">The iterations strides. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:198</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_ad7659dc0eaa491447ad127ef7098924f"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad7659dc0eaa491447ad127ef7098924f">cutlass::gemm::IgemmEpilogueTraitsHelper::SharedStoreTileTraits</a></div><div class="ttdeci">Base::SharedStoreTileTraits SharedStoreTileTraits</div><div class="ttdoc">The traits class for the shared iterator to store D to shared memory. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:221</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a880293ef6a48a0f4941c8f984c36f591"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a880293ef6a48a0f4941c8f984c36f591">cutlass::gemm::IgemmEpilogueTraitsHelper::GlobalTransformerD</a></div><div class="ttdeci">IgemmGlobalStoreTransformer&lt; Scalar, GlobalFragmentD &gt;::Transformer GlobalTransformerD</div><div class="ttdoc">The transformer from accumulators to shared memory fragments. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:218</div></div>
<div class="ttc" id="namespacecutlass_html"><div class="ttname"><a href="namespacecutlass.html">cutlass</a></div><div class="ttdef"><b>Definition:</b> convert.h:33</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a851113bffb5b656c5c649845852b3b8d"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a851113bffb5b656c5c649845852b3b8d">cutlass::gemm::IgemmEpilogueTraitsHelper::SharedLoadTileTraits</a></div><div class="ttdeci">Base::SharedLoadTileTraits SharedLoadTileTraits</div><div class="ttdoc">The traits class for the shared iterator to load D from shared memory. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:235</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_ad33ee44527a7fcfd41b4e677927fd4fa"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad33ee44527a7fcfd41b4e677927fd4fa">cutlass::gemm::IgemmEpilogueTraitsHelper::SharedLoadIteratorD</a></div><div class="ttdeci">TileLoadIterator&lt; SharedLoadTileTraits, typename SharedLoadTileTraits::Scalar, IteratorAdvance::kH, MemorySpace::kShared &gt; SharedLoadIteratorD</div><div class="ttdoc">The shared iterator to load D from shared memory. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:241</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmEpilogueTraitsHelper_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmEpilogueTraitsHelper.html">cutlass::gemm::GemmEpilogueTraitsHelper</a></div><div class="ttdef"><b>Definition:</b> gemm_epilogue_traits.h:203</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogue_html_a07f9a934f04610db41aa1aac2f4cdf04"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogue.html#a07f9a934f04610db41aa1aac2f4cdf04">cutlass::gemm::IgemmEpilogue::Base</a></div><div class="ttdeci">GemmEpilogue&lt; GemmEpilogueTraits_ &gt; Base</div><div class="ttdoc">The base class. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:292</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmEpilogue_html_ae5209fa80705442693833c63d535161e"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmEpilogue.html#ae5209fa80705442693833c63d535161e">cutlass::gemm::GemmEpilogue::Params</a></div><div class="ttdeci">Traits::Params Params</div><div class="ttdoc">The params. </div><div class="ttdef"><b>Definition:</b> gemm_epilogue.h:46</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmEpilogue_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmEpilogue.html">cutlass::gemm::GemmEpilogue</a></div><div class="ttdef"><b>Definition:</b> gemm_epilogue.h:42</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer.html">cutlass::gemm::IgemmGlobalLoadTransformer</a></div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:167</div></div>
<div class="ttc" id="structcutlass_1_1platform_1_1is__same_html"><div class="ttname"><a href="structcutlass_1_1platform_1_1is__same.html">cutlass::platform::is_same</a></div><div class="ttdoc">std::is_same (false specialization) </div><div class="ttdef"><b>Definition:</b> platform.h:420</div></div>
<div class="ttc" id="tile__iterator_8h_html"><div class="ttname"><a href="tile__iterator_8h.html">tile_iterator.h</a></div><div class="ttdoc">Defines the Tile Traits concept and iterators for loading and storing to tiles efficiently. </div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter_html_a88a55a494d3a30d50477d50bf6a8804d"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a88a55a494d3a30d50477d50bf6a8804d">cutlass::gemm::IgemmInt8ToFloatConverter::IgemmInt8ToFloatConverter</a></div><div class="ttdeci">CUTLASS_DEVICE IgemmInt8ToFloatConverter()</div><div class="ttdoc">Ctor. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:123</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a5e64440830b36899f9c0ed8b369665c8"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a5e64440830b36899f9c0ed8b369665c8">cutlass::gemm::IgemmEpilogueTraitsHelper::SharedStoreFragmentD</a></div><div class="ttdeci">SharedStoreIteratorD::Fragment SharedStoreFragmentD</div><div class="ttdoc">The fragment that needs to be passed to that store iterator. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:229</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmEpilogueTraitsHelper_html_ae2b82b9b62aefa15005091bb84ac20e8"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmEpilogueTraitsHelper.html#ae2b82b9b62aefa15005091bb84ac20e8">cutlass::gemm::GemmEpilogueTraitsHelper&lt; IgemmConfig_, EpilogueFunctor_, Index_ &gt;::Scalar</a></div><div class="ttdeci">EpilogueFunctor_::Scalar Scalar</div><div class="ttdoc">The scalar. </div><div class="ttdef"><b>Definition:</b> gemm_epilogue_traits.h:205</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html">cutlass::gemm::IgemmEpilogueTraitsHelper</a></div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:186</div></div>
<div class="ttc" id="structcutlass_1_1MemorySpace_html_a1e031ec41668015a8fe4ba2c1145d03cac4bd4070cc396d698beb7ca2e3bbff37"><div class="ttname"><a href="structcutlass_1_1MemorySpace.html#a1e031ec41668015a8fe4ba2c1145d03cac4bd4070cc396d698beb7ca2e3bbff37">cutlass::MemorySpace::kGlobal</a></div><div class="ttdef"><b>Definition:</b> load_store.h:42</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter_html_a702ca51abc077355a2d7343976a0cfdb"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a702ca51abc077355a2d7343976a0cfdb">cutlass::gemm::IgemmInt8ToFloatConverter::InputFragment</a></div><div class="ttdeci">Fragment&lt; int8_t, kElements_ &gt; InputFragment</div><div class="ttdoc">The input fragment. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:115</div></div>
<div class="ttc" id="structcutlass_1_1TileIteratorBase_html_a9ffa12dcd7ed1e96845e1cd273d9f219"><div class="ttname"><a href="structcutlass_1_1TileIteratorBase.html#a9ffa12dcd7ed1e96845e1cd273d9f219">cutlass::TileIteratorBase&lt; TileTraits_, TileTraits_::Scalar, IteratorAdvance::kH, MemorySpace::kGlobal, Index_ &gt;::Fragment</a></div><div class="ttdeci">Fragment&lt; FragmentElement, ShapeCount&lt; Iterations &gt;::kCount *kAccessSize &gt; Fragment</div><div class="ttdoc">The fragment. </div><div class="ttdef"><b>Definition:</b> tile_iterator.h:199</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogue_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogue.html">cutlass::gemm::IgemmEpilogue</a></div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:290</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html">cutlass::gemm::IgemmFloatToInt8Converter</a></div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:45</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter_html_a819fd33db88a68521108bab2641d73fd"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a819fd33db88a68521108bab2641d73fd">cutlass::gemm::IgemmFloatToInt8Converter::transform</a></div><div class="ttdeci">CUTLASS_DEVICE void transform(Fragment_ const &amp;src, int offset, OutputFragment &amp;dst)</div><div class="ttdoc">Transform a fragment. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:64</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmEpilogue_html_ac36dad8a7b6bc7fc6ef88e44068468dc"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmEpilogue.html#ac36dad8a7b6bc7fc6ef88e44068468dc">cutlass::gemm::GemmEpilogue::SharedStorage</a></div><div class="ttdeci">Traits::SharedStorage SharedStorage</div><div class="ttdoc">The shared storage. </div><div class="ttdef"><b>Definition:</b> gemm_epilogue.h:48</div></div>
<div class="ttc" id="structcutlass_1_1Fragment_html"><div class="ttname"><a href="structcutlass_1_1Fragment.html">cutlass::Fragment</a></div><div class="ttdoc">A template defining Fragment Concept. </div><div class="ttdef"><b>Definition:</b> fragment.h:99</div></div>
<div class="ttc" id="structcutlass_1_1IteratorAdvance_html_a9ad9c2302ddffa148d47cdcf6c738ddaacfe756fca665eb1bbf389850915c1b81"><div class="ttname"><a href="structcutlass_1_1IteratorAdvance.html#a9ad9c2302ddffa148d47cdcf6c738ddaacfe756fca665eb1bbf389850915c1b81">cutlass::IteratorAdvance::kH</a></div><div class="ttdef"><b>Definition:</b> tile_iterator.h:65</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter_html_aca8a61e8eb1ab33b9c61e2e7d342379d"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#aca8a61e8eb1ab33b9c61e2e7d342379d">cutlass::gemm::IgemmInt8ToFloatConverter::transform</a></div><div class="ttdeci">CUTLASS_DEVICE void transform(InputFragment const &amp;src, OutputFragment &amp;dst)</div><div class="ttdoc">Transform a fragment. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:126</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_ae4128bba3f1df6ef7824e2db79745b00"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ae4128bba3f1df6ef7824e2db79745b00">cutlass::gemm::IgemmEpilogueTraitsHelper::Scalar</a></div><div class="ttdeci">Base::Scalar Scalar</div><div class="ttdoc">The scalar type of the epilogue. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:194</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogue_html_a599a50becefed561d063c1b834188aca"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogue.html#a599a50becefed561d063c1b834188aca">cutlass::gemm::IgemmEpilogue::IgemmEpilogue</a></div><div class="ttdeci">CUTLASS_DEVICE IgemmEpilogue(typename Base::Params const &amp;params_, typename Base::SharedStorage &amp;shared_storage_, Coord&lt; 3 &gt; const &amp;_problem_size)</div><div class="ttdoc">Ctor. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:295</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_ad8e5337f3d19437e9c4cafcfcc3e3d3e"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad8e5337f3d19437e9c4cafcfcc3e3d3e">cutlass::gemm::IgemmEpilogueTraitsHelper::GlobalFragmentC</a></div><div class="ttdeci">GlobalLoadIteratorC::Fragment GlobalFragmentC</div><div class="ttdoc">The fragment that needs to be produced by the load iterator. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:205</div></div>
<div class="ttc" id="structcutlass_1_1TileStoreIterator_html_aa5386367e805cdaf47a5e7564bedc2fb"><div class="ttname"><a href="structcutlass_1_1TileStoreIterator.html#aa5386367e805cdaf47a5e7564bedc2fb">cutlass::TileStoreIterator::Fragment</a></div><div class="ttdeci">Base::Fragment Fragment</div><div class="ttdoc">Fragment definition. </div><div class="ttdef"><b>Definition:</b> tile_iterator.h:909</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter_html_a91ad48362b99a5f96ac1e92e95104f7b"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a91ad48362b99a5f96ac1e92e95104f7b">cutlass::gemm::IgemmFloatToInt8Converter::transform</a></div><div class="ttdeci">CUTLASS_DEVICE void transform(InputFragment const &amp;src, OutputFragment &amp;dst)</div><div class="ttdoc">Transform a fragment. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:58</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter_html_a3d89bfc0d94cd695cbe4a61859e5e553"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#a3d89bfc0d94cd695cbe4a61859e5e553">cutlass::gemm::IgemmFloatToInt8Converter::OutputFragment</a></div><div class="ttdeci">Fragment&lt; int8_t, kElements_ &gt; OutputFragment</div><div class="ttdoc">The output fragment. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:49</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_ad3e937c15bfac443b0e3b94d702f46b2"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad3e937c15bfac443b0e3b94d702f46b2">cutlass::gemm::IgemmEpilogueTraitsHelper::GlobalStoreIteratorD</a></div><div class="ttdeci">GemmGlobalIteratorCd&lt; GlobalStoreTileTraits &gt; GlobalStoreIteratorD</div><div class="ttdoc">The iterator to store to shared memory. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:213</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a00000e0cd14b9e6e242eafb5133af8cf"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a00000e0cd14b9e6e242eafb5133af8cf">cutlass::gemm::IgemmEpilogueTraitsHelper::SharedStoreTransformerD</a></div><div class="ttdeci">IgemmSharedStoreTransformer&lt; typename IgemmConfig::Accumulators::Element, SharedStoreFragmentD &gt;::Transformer SharedStoreTransformerD</div><div class="ttdoc">The transformer from accumulators to shared memory fragments. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:233</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraits_html_a8609af98d1e43cd25688bae6f33feed4"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraits.html#a8609af98d1e43cd25688bae6f33feed4">cutlass::gemm::IgemmEpilogueTraits::kInt8Output</a></div><div class="ttdeci">static bool const kInt8Output</div><div class="ttdoc">Do we output in int8? </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:283</div></div>
<div class="ttc" id="structcutlass_1_1TileLoadIterator_html"><div class="ttname"><a href="structcutlass_1_1TileLoadIterator.html">cutlass::TileLoadIterator</a></div><div class="ttdoc">An iterator implementing Tile Load Iterator Concept for loading a tile from memory. </div><div class="ttdef"><b>Definition:</b> tile_iterator.h:402</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer_html_a9edd08d595327a8cc3b8da50622b3bd2"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer.html#a9edd08d595327a8cc3b8da50622b3bd2">cutlass::gemm::IgemmSharedStoreTransformer::Transformer</a></div><div class="ttdeci">Convert&lt; Fragment&lt; InputScalar_, OutputFragment_::kElements &gt;, OutputFragment_ &gt; Transformer</div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:180</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4_html_a98b415dbe6f7b6cb0c41a4e6b3ad5abf"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4.html#a98b415dbe6f7b6cb0c41a4e6b3ad5abf">cutlass::gemm::IgemmEpilogue&lt; GemmEpilogueTraits_, true &gt;::Base</a></div><div class="ttdeci">GemmEpilogue&lt; GemmEpilogueTraits_ &gt; Base</div><div class="ttdoc">The base class. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:306</div></div>
<div class="ttc" id="reshape__tile_8h_html"><div class="ttname"><a href="reshape__tile_8h.html">reshape_tile.h</a></div><div class="ttdoc">Defines a type for restructuring a tile. </div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_aaa009025dcd6360ead1dc18005688821"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#aaa009025dcd6360ead1dc18005688821">cutlass::gemm::IgemmEpilogueTraitsHelper::GlobalLoadTileTraits</a></div><div class="ttdeci">Base::GlobalLoadTileTraits GlobalLoadTileTraits</div><div class="ttdoc">The traits class for the iterator. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:201</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter_html_a66ac385a1cd771b95f70ee36cd74e8f7"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a66ac385a1cd771b95f70ee36cd74e8f7">cutlass::gemm::IgemmInt8ToFloatConverter::OutputFragment</a></div><div class="ttdeci">Fragment&lt; float, kElements_ &gt; OutputFragment</div><div class="ttdoc">The output fragment. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:117</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a4b23ba8c14e26672a516aa43063250c2"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a4b23ba8c14e26672a516aa43063250c2">cutlass::gemm::IgemmEpilogueTraitsHelper::Base</a></div><div class="ttdeci">GemmEpilogueTraitsHelper&lt; IgemmConfig_, EpilogueFunctor_, Index_ &gt; Base</div><div class="ttdoc">The base class. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:189</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmSharedLoadTileDTraits_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmSharedLoadTileDTraits.html">cutlass::gemm::GemmSharedLoadTileDTraits</a></div><div class="ttdef"><b>Definition:</b> gemm_shared_tile.h:339</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a723cd69ee4d5c26579b36e02c531ea88"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a723cd69ee4d5c26579b36e02c531ea88">cutlass::gemm::IgemmEpilogueTraitsHelper::GlobalFragmentD</a></div><div class="ttdeci">GlobalStoreIteratorD::Fragment GlobalFragmentD</div><div class="ttdoc">The fragment that needs to be passed to that store iterator. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:215</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a24826f99d097eea0298e6be12a6327b9"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a24826f99d097eea0298e6be12a6327b9">cutlass::gemm::IgemmEpilogueTraitsHelper::GlobalLoadIteratorC</a></div><div class="ttdeci">GemmGlobalIteratorCd&lt; GlobalLoadTileTraits &gt; GlobalLoadIteratorC</div><div class="ttdoc">The iterator to store to shared memory. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:203</div></div>
<div class="ttc" id="platform_8h_html_adde4c9ea91b753491851361a4198c009"><div class="ttname"><a href="platform_8h.html#adde4c9ea91b753491851361a4198c009">static_assert</a></div><div class="ttdeci">#define static_assert(__e, __m)</div><div class="ttdef"><b>Definition:</b> platform.h:153</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a5a52727bb9b5d5f8afa7d0384f564036"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a5a52727bb9b5d5f8afa7d0384f564036">cutlass::gemm::IgemmEpilogueTraitsHelper::IgemmConfig</a></div><div class="ttdeci">IgemmConfig_ IgemmConfig</div><div class="ttdoc">The config. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:191</div></div>
<div class="ttc" id="structcutlass_1_1Shape_html"><div class="ttname"><a href="structcutlass_1_1Shape.html">cutlass::Shape</a></div><div class="ttdoc">A Shape implementing Layout Concept describing the dimensions of a cube. </div><div class="ttdef"><b>Definition:</b> shape.h:64</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter_html_ac65f020e93584b1bd3cdb849ff625026"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#ac65f020e93584b1bd3cdb849ff625026">cutlass::gemm::IgemmFloatToInt8Converter::IgemmFloatToInt8Converter</a></div><div class="ttdeci">CUTLASS_DEVICE IgemmFloatToInt8Converter()</div><div class="ttdoc">Ctor. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:55</div></div>
<div class="ttc" id="structcutlass_1_1Fragment_html_a9c67fa5bbd0b8b49bd6ec002dee3cbab"><div class="ttname"><a href="structcutlass_1_1Fragment.html#a9c67fa5bbd0b8b49bd6ec002dee3cbab">cutlass::Fragment::Element</a></div><div class="ttdeci">Element_ Element</div><div class="ttdoc">The element. </div><div class="ttdef"><b>Definition:</b> fragment.h:108</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter_html_aa9a4b05f9fc28b80a4ae4aabb2ce1e8c"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmFloatToInt8Converter.html#aa9a4b05f9fc28b80a4ae4aabb2ce1e8c">cutlass::gemm::IgemmFloatToInt8Converter::InputFragment</a></div><div class="ttdeci">Fragment&lt; float, kElements_ &gt; InputFragment</div><div class="ttdoc">The input fragment. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:47</div></div>
<div class="ttc" id="structcutlass_1_1Coord_html"><div class="ttname"><a href="structcutlass_1_1Coord.html">cutlass::Coord&lt; 3 &gt;</a></div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmEpilogueTraits_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmEpilogueTraits.html">cutlass::gemm::GemmEpilogueTraits</a></div><div class="ttdef"><b>Definition:</b> gemm_epilogue_traits.h:70</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmGlobalIteratorCd_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmGlobalIteratorCd.html">cutlass::gemm::GemmGlobalIteratorCd</a></div><div class="ttdef"><b>Definition:</b> gemm_global_tile.h:366</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmSharedStoreTransformer.html">cutlass::gemm::IgemmSharedStoreTransformer</a></div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:179</div></div>
<div class="ttc" id="gemm__global__stream_8h_html"><div class="ttname"><a href="gemm__global__stream_8h.html">gemm_global_stream.h</a></div><div class="ttdoc">Implements efficient loading of the thread block-level tile from global memory and storing to shared ...</div></div>
<div class="ttc" id="structcutlass_1_1Convert_html"><div class="ttname"><a href="structcutlass_1_1Convert.html">cutlass::Convert</a></div><div class="ttdef"><b>Definition:</b> convert.h:38</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer_3_01float_00_01Fragment_3_01int8__t_00_01kElements___01_4_01_4_html_a52ecdfd8b94d8d7f4881048e11a33aba"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer_3_01float_00_01Fragment_3_01int8__t_00_01kElements___01_4_01_4.html#a52ecdfd8b94d8d7f4881048e11a33aba">cutlass::gemm::IgemmGlobalStoreTransformer&lt; float, Fragment&lt; int8_t, kElements_ &gt; &gt;::Transformer</a></div><div class="ttdeci">IgemmFloatToInt8Converter&lt; kElements_ &gt; Transformer</div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:107</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a0b9b2b7838cb13a61a16501a2662fa51"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a0b9b2b7838cb13a61a16501a2662fa51">cutlass::gemm::IgemmEpilogueTraitsHelper::Iterations</a></div><div class="ttdeci">Base::Iterations Iterations</div><div class="ttdoc">The iterations. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:196</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_ad0116b2e7b2ca1526246e2ff7e73fd2f"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#ad0116b2e7b2ca1526246e2ff7e73fd2f">cutlass::gemm::IgemmEpilogueTraitsHelper::GlobalTransformerC</a></div><div class="ttdeci">IgemmGlobalLoadTransformer&lt; GlobalFragmentC, Scalar &gt;::Transformer GlobalTransformerC</div><div class="ttdoc">The transformer from loaded data to math fragment. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:208</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_a16b06a1611dbd22adaa0c9ee5e1b15bd"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#a16b06a1611dbd22adaa0c9ee5e1b15bd">cutlass::gemm::IgemmEpilogueTraitsHelper::GlobalStoreTileTraits</a></div><div class="ttdeci">Base::GlobalStoreTileTraits GlobalStoreTileTraits</div><div class="ttdoc">The traits class for the iterator. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:211</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer_html_ad3190650741cef20c1aca919eddd9d72"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer.html#ad3190650741cef20c1aca919eddd9d72">cutlass::gemm::IgemmGlobalLoadTransformer::Transformer</a></div><div class="ttdeci">Convert&lt; InputFragment_, Fragment&lt; OutputScalar_, InputFragment_::kElements &gt; &gt; Transformer</div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:168</div></div>
<div class="ttc" id="fragment_8h_html"><div class="ttname"><a href="fragment_8h.html">fragment.h</a></div><div class="ttdoc">Defines Fragment, a statically-sized array for storing parts of matrices within a thread&amp;#39;s registers...</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmSharedStoreTileDTraits_html_a9a2218b570dada2f1e3ccd8004c47856"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmSharedStoreTileDTraits.html#a9a2218b570dada2f1e3ccd8004c47856">cutlass::gemm::GemmSharedStoreTileDTraits::Scalar</a></div><div class="ttdeci">platform::remove_const&lt; Scalar_ &gt;::type Scalar</div><div class="ttdoc">The scalar. </div><div class="ttdef"><b>Definition:</b> gemm_shared_tile.h:272</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter_html_a89e078dbf376da872c3993ccbaf744d3"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html#a89e078dbf376da872c3993ccbaf744d3">cutlass::gemm::IgemmInt8ToFloatConverter::transform</a></div><div class="ttdeci">CUTLASS_DEVICE void transform(Fragment_ const &amp;src, int offset, OutputFragment &amp;dst)</div><div class="ttdoc">Transform a fragment. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:132</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer_html_a98aefa95117dbfdf2e577890318a6c13"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer.html#a98aefa95117dbfdf2e577890318a6c13">cutlass::gemm::IgemmGlobalStoreTransformer::Transformer</a></div><div class="ttdeci">Convert&lt; Fragment&lt; InputScalar_, OutputFragment_::kElements &gt;, OutputFragment_ &gt; Transformer</div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:102</div></div>
<div class="ttc" id="gemm__shared__stream_8h_html"><div class="ttname"><a href="gemm__shared__stream_8h.html">gemm_shared_stream.h</a></div><div class="ttdoc">Defines abstractions for managing loading and storing fragments to shared memory in the efficient GEM...</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmGlobalStoreTransformer.html">cutlass::gemm::IgemmGlobalStoreTransformer</a></div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:101</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper_html_af7024128202d642d3535e1ae5cf5f43d"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogueTraitsHelper.html#af7024128202d642d3535e1ae5cf5f43d">cutlass::gemm::IgemmEpilogueTraitsHelper::SharedStoreIteratorD</a></div><div class="ttdeci">TileStoreIterator&lt; SharedStoreTileTraits, typename SharedStoreTileTraits::Scalar, IteratorAdvance::kH, MemorySpace::kGlobal &gt; SharedStoreIteratorD</div><div class="ttdoc">The shared iterator to store D to shared memory. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:227</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer_3_01Fragment_3_01int8__t_00_01kElements___01_4_00_01float_01_4_html_a49c249026be24ec8a66f5eda99cb855c"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmGlobalLoadTransformer_3_01Fragment_3_01int8__t_00_01kElements___01_4_00_01float_01_4.html#a49c249026be24ec8a66f5eda99cb855c">cutlass::gemm::IgemmGlobalLoadTransformer&lt; Fragment&lt; int8_t, kElements_ &gt;, float &gt;::Transformer</a></div><div class="ttdeci">IgemmInt8ToFloatConverter&lt; kElements_ &gt; Transformer</div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:173</div></div>
<div class="ttc" id="convert_8h_html"><div class="ttname"><a href="convert_8h.html">convert.h</a></div><div class="ttdoc">Defines conversion operations among Fragments of different base type. </div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmInt8ToFloatConverter.html">cutlass::gemm::IgemmInt8ToFloatConverter</a></div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:113</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmSharedLoadTileDTraits_html_a1b025cb056729706f36469e74a9799dc"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmSharedLoadTileDTraits.html#a1b025cb056729706f36469e74a9799dc">cutlass::gemm::GemmSharedLoadTileDTraits::Scalar</a></div><div class="ttdeci">platform::remove_const&lt; Scalar_ &gt;::type Scalar</div><div class="ttdoc">The scalar. </div><div class="ttdef"><b>Definition:</b> gemm_shared_tile.h:341</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4_html_a0a1be1aab827127161406871ca75cbe0"><div class="ttname"><a href="structcutlass_1_1gemm_1_1IgemmEpilogue_3_01GemmEpilogueTraits___00_01true_01_4.html#a0a1be1aab827127161406871ca75cbe0">cutlass::gemm::IgemmEpilogue&lt; GemmEpilogueTraits_, true &gt;::IgemmEpilogue</a></div><div class="ttdeci">CUTLASS_DEVICE IgemmEpilogue(typename Base::Params const &amp;params_, typename Base::SharedStorage &amp;shared_storage_, Coord&lt; 3 &gt; const &amp;_problem_size)</div><div class="ttdoc">Ctor. </div><div class="ttdef"><b>Definition:</b> igemm_epilogue.h:309</div></div>
<div class="ttc" id="igemm__global__tile_8h_html"><div class="ttname"><a href="igemm__global__tile_8h.html">igemm_global_tile.h</a></div><div class="ttdoc">Implements tile iterators to partition the thread block tile into 2D subtiles and efficiently load ea...</div></div>
<div class="ttc" id="structcutlass_1_1gemm_1_1GemmSharedStoreTileDTraits_html"><div class="ttname"><a href="structcutlass_1_1gemm_1_1GemmSharedStoreTileDTraits.html">cutlass::gemm::GemmSharedStoreTileDTraits</a></div><div class="ttdef"><b>Definition:</b> gemm_shared_tile.h:270</div></div>
<div class="ttc" id="structcutlass_1_1TileStoreIterator_html"><div class="ttname"><a href="structcutlass_1_1TileStoreIterator.html">cutlass::TileStoreIterator</a></div><div class="ttdoc">An iterator implementing Tile Store Iterator Concept for storing a tile to memory. </div><div class="ttdef"><b>Definition:</b> tile_iterator.h:841</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 26 2018 14:53:33 for Cutlass by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>