<ahref="gemm__config_8h.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aname="l00001"></a><spanclass="lineno"> 1</span> <spanclass="comment">/***************************************************************************************************</span></div><divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="comment"> * Copyright (c) 2017-2018, NVIDIA CORPORATION. All rights reserved.</span></div><divclass="line"><aname="l00003"></a><spanclass="lineno"> 3</span> <spanclass="comment"> *</span></div><divclass="line"><aname="l00004"></a><spanclass="lineno"> 4</span> <spanclass="comment"> * Redistribution and use in source and binary forms, with or without modification, are permitted</span></div><divclass="line"><aname="l00005"></a><spanclass="lineno"> 5</span> <spanclass="comment"> * provided that the following conditions are met:</span></div><divclass="line"><aname="l00006"></a><spanclass="lineno"> 6</span> <spanclass="comment"> * * Redistributions of source code must retain the above copyright notice, this list of</span></div><divclass="line"><aname="l00007"></a><spanclass="lineno"> 7</span> <spanclass="comment"> * conditions and the following disclaimer.</span></div><divclass="line"><aname="l00008"></a><spanclass="lineno"> 8</span> <spanclass="comment"> * * Redistributions in binary form must reproduce the above copyright notice, this list of</span></div><divclass="line"><aname="l00009"></a><spanclass="lineno"> 9</span> <spanclass="comment"> * conditions and the following disclaimer in the documentation and/or other materials</span></div><divclass="line"><aname="l00010"></a><spanclass="lineno"> 10</span> <spanclass="comment"> * provided with the distribution.</span></div><divclass="line"><aname="l00011"></a><spanclass="lineno"> 11</span> <spanclass="comment"> * * Neither the name of the NVIDIA CORPORATION nor the names of its contributors may be used</span></div><divclass="line"><aname="l00012"></a><spanclass="lineno"> 12</span> <spanclass="comment"> * to endorse or promote products derived from this software without specific prior written</span></div><divclass="line"><aname="l00013"></a><spanclass="lineno"> 13</span> <spanclass="comment"> * permission.</span></div><divclass="line"><aname="l00014"></a><spanclass="lineno"> 14</span> <spanclass="comment"> *</span></div><divclass="line"><aname="l00015"></a><spanclass="lineno"> 15</span> <spanclass="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR</span></div><divclass="line"><aname="l00016"></a><spanclass="lineno"> 16</span> <spanclass="comment"> * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND</span></div><divclass="line"><aname="l00017"></a><spanclass="lineno"> 17</span> <spanclass="comment"> * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE</span></div><divclass="line"><aname="l00018"></a><spanclass="lineno"> 18</span> <spanclass="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,</span></div><divclass="line"><aname="l00019"></a><spanclass="lineno"> 19</span> <spanclass="comment"> * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;</span></div><divclass="line"><aname="l00020"></a><spanclass="lineno"> 20</span> <spanclass="comment"> * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span></div><divclass="line"><aname="l00021"></a><spanclass="lineno"> 21</span> <spanclass="comment"> * STRICT LIABILITY, OR TOR (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span></div><divclass="line"><aname="l00022"></a><spanclass
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_acf461f0ba3067cc5d66a04f0a176308f"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#acf461f0ba3067cc5d66a04f0a176308f">cutlass::gemm::GemmConfig::kThreads</a></div><divclass="ttdeci">static int const kThreads</div><divclass="ttdoc">The numnber of threads. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:103</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a9b987cfb25a32e671a47cb6376a361f3"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a9b987cfb25a32e671a47cb6376a361f3">cutlass::gemm::GemmConfig::Warps</a></div><divclass="ttdeci">ShapeDiv< OutputTile, AccumulatorsPerWarp >::Shape Warps</div><divclass="ttdoc">The number of warps. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:99</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_ad83132bd03f8bd844487d1a9da908c8b"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#ad83132bd03f8bd844487d1a9da908c8b">cutlass::gemm::GemmConfig::InstructionShape</a></div><divclass="ttdeci">MultiplyAdd::InstructionShape InstructionShape</div><divclass="ttdoc">The shape of the instruction. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:92</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_aa549183981095a3e604974e909a7d396"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#aa549183981095a3e604974e909a7d396">cutlass::gemm::GemmConfig::kWarpSize</a></div><divclass="ttdeci">static int const kWarpSize</div><divclass="ttdoc">The default warp size (32 threads per warp). </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:101</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a26942561aa111089b3ba0f12cf233951"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a26942561aa111089b3ba0f12cf233951">cutlass::gemm::GemmConfig::kScalarsPerLdsD</a></div><divclass="ttdeci">static int const kScalarsPerLdsD</div><divclass="ttdef"><b>Definition:</b> gemm_config.h:121</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_ade9d3c2aeb0e4d73e04a5e9a06ce5203"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#ade9d3c2aeb0e4d73e04a5e9a06ce5203">cutlass::gemm::GemmConfig::kScalarsPerStgD</a></div><divclass="ttdeci">static int const kScalarsPerStgD</div><divclass="ttdoc">The number of scalars per STS/LDS/STG for D. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:119</div></div>
<divclass="ttc"id="structcutlass_1_1Fragment_html"><divclass="ttname"><ahref="structcutlass_1_1Fragment.html">cutlass::Fragment</a></div><divclass="ttdoc">A template defining Fragment Concept. </div><divclass="ttdef"><b>Definition:</b> fragment.h:99</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_aff7409a9d2666159435d3b9db16443bc"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#aff7409a9d2666159435d3b9db16443bc">cutlass::gemm::GemmConfig::kScalarsPerLdgB</a></div><divclass="ttdeci">static int const kScalarsPerLdgB</div><divclass="ttdoc">The number of scalars per LDG/STS/LDS for B. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:111</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a30d9cfbbede42166e4e1964145dfe05d"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a30d9cfbbede42166e4e1964145dfe05d">cutlass::gemm::GemmConfig::ScalarC</a></div><divclass="ttdeci">ScalarC_ ScalarC</div><divclass="ttdoc">The scalar for C. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:83</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_ab26d76515e394118bfc530d6a81b9508"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#ab26d76515e394118bfc530d6a81b9508">cutlass::gemm::GemmConfig::kStages</a></div><divclass="ttdeci">static int const kStages</div><divclass="ttdoc">The number of stages in shared memory to implement double, triple, more-buffering. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:128</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1ThreadMultiplyAdd_html_a9f706e141ec3bc880fa17a5731d8370e"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1ThreadMultiplyAdd.html#a9f706e141ec3bc880fa17a5731d8370e">cutlass::gemm::ThreadMultiplyAdd::AccumulatorsPerWarp</a></div><divclass="ttdeci">ShapeMul< ThreadGemmShape, ThreadsPerWarp >::Shape AccumulatorsPerWarp</div><divclass="ttdoc">The number of accumulators per warp. </div><divclass="ttdef"><b>Definition:</b> thread_multiply_add.h:54</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a600746def904eeca46d7f92a4b223b46"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a600746def904eeca46d7f92a4b223b46">cutlass::gemm::GemmConfig::kResidueInProlog</a></div><divclass="ttdeci">static bool const kResidueInProlog</div><divclass="ttdoc">If true, residue is computed in the prologue. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:136</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a54e252cedbfee75e7c4ac2f7fe5ce45b"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a54e252cedbfee75e7c4ac2f7fe5ce45b">cutlass::gemm::GemmConfig::kLaunchBounds</a></div><divclass="ttdeci">static bool const kLaunchBounds</div><divclass="ttdoc">If true, kernel is launched with launch bounds specified. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:139</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_aedb95febe4a0b2943e233c95c36a22cd"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#aedb95febe4a0b2943e233c95c36a22cd">cutlass::gemm::GemmConfig::MultiplyAdd</a></div><divclass="ttdeci">MultiplyAdd_ MultiplyAdd</div><divclass="ttdoc">The functor to do D = A*B + C. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:90</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_aeb740e4ab9f93f29f1b8ab43ebef68eb"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#aeb740e4ab9f93f29f1b8ab43ebef68eb">cutlass::gemm::GemmConfig::kAccumulatorsPerLdsB</a></div><divclass="ttdeci">static int const kAccumulatorsPerLdsB</div><divclass="ttdef"><b>Definition:</b> gemm_config.h:125</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_aa97b0e7f369f927c4db6d683dbb7f53b"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#aa97b0e7f369f927c4db6d683dbb7f53b">cutlass::gemm::GemmConfig::ScalarA</a></div><divclass="ttdeci">ScalarA_ ScalarA</div><divclass="ttdoc">The scalar for A. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:79</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a64c1e0d794c1bdfa8b2f3a53e387155c"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a64c1e0d794c1bdfa8b2f3a53e387155c">cutlass::gemm::GemmConfig::kResidueSeparate</a></div><divclass="ttdeci">static bool const kResidueSeparate</div><divclass="ttdoc">If true, mainloop is instantiated twice. The first instantiation contains no predicate. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:133</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a32a8979ff618f069665708c7771c3cc3"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a32a8979ff618f069665708c7771c3cc3">cutlass::gemm::GemmConfig::AccumulatorsPerWarp</a></div><divclass="ttdeci">MultiplyAdd::AccumulatorsPerWarp AccumulatorsPerWarp</div><divclass="ttdoc">The shape of warp-level GEMM. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:94</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a9ccd14b44a22dfdfeefabe1e643da65e"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a9ccd14b44a22dfdfeefabe1e643da65e">cutlass::gemm::GemmConfig::kScalarsPerLdsB</a></div><divclass="ttdeci">static int const kScalarsPerLdsB</div><divclass="ttdef"><b>Definition:</b> gemm_config.h:113</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a9c3985d8de485d76a5d72c91c3e3aaff"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a9c3985d8de485d76a5d72c91c3e3aaff">cutlass::gemm::GemmConfig::kScalarsPerLdgC</a></div><divclass="ttdeci">static int const kScalarsPerLdgC</div><divclass="ttdoc">The number of scalars per LDG for C. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:116</div></div>
<divclass="ttc"id="structcutlass_1_1Shape_html"><divclass="ttname"><ahref="structcutlass_1_1Shape.html">cutlass::Shape</a></div><divclass="ttdoc">A Shape implementing Layout Concept describing the dimensions of a cube. </div><divclass="ttdef"><b>Definition:</b> shape.h:64</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a82295105d7ccbcce057b4c57632a644b"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a82295105d7ccbcce057b4c57632a644b">cutlass::gemm::GemmConfig::kScalarsPerLdsA</a></div><divclass="ttdeci">static int const kScalarsPerLdsA</div><divclass="ttdef"><b>Definition:</b> gemm_config.h:108</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a60ab48db1b87fb6063d194247bc055f5"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a60ab48db1b87fb6063d194247bc055f5">cutlass::gemm::GemmConfig::kAccumulatorsPerLdsA</a></div><divclass="ttdeci">static int const kAccumulatorsPerLdsA</div><divclass="ttdoc">The number of accumulators that are going to be fed from one LDS A/B. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:124</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_ab2b6167b0165ed544254dc87c2a7db8f"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#ab2b6167b0165ed544254dc87c2a7db8f">cutlass::gemm::GemmConfig::kScalarsPerStsA</a></div><divclass="ttdeci">static int const kScalarsPerStsA</div><divclass="ttdef"><b>Definition:</b> gemm_config.h:107</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a2a424063136c56c5ca6345496485afce"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a2a424063136c56c5ca6345496485afce">cutlass::gemm::GemmConfig::kScalarsPerStsB</a></div><divclass="ttdeci">static int const kScalarsPerStsB</div><divclass="ttdef"><b>Definition:</b> gemm_config.h:112</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a64e7d66e0646c7044e754b3b6b91e761"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a64e7d66e0646c7044e754b3b6b91e761">cutlass::gemm::GemmConfig::kScalarsPerLdgA</a></div><divclass="ttdeci">static int const kScalarsPerLdgA</div><divclass="ttdoc">The number of scalars per LDG/STS/LDS for A. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:106</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a1e93d0163c0d150d33f4093b4a1ec87f"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a1e93d0163c0d150d33f4093b4a1ec87f">cutlass::gemm::GemmConfig::kScalarsPerStsD</a></div><divclass="ttdeci">static int const kScalarsPerStsD</div><divclass="ttdef"><b>Definition:</b> gemm_config.h:120</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a7ad231b16f05a58900dca8ff0e0e7bfa"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a7ad231b16f05a58900dca8ff0e0e7bfa">cutlass::gemm::GemmConfig::ScalarD</a></div><divclass="ttdeci">ScalarD_ ScalarD</div><divclass="ttdoc">The scalar for D. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:85</div></div>
<divclass="ttc"id="shape_8h_html"><divclass="ttname"><ahref="shape_8h.html">shape.h</a></div><divclass="ttdoc">Defines Shape implementing the Layout concept for representing a 4D hypercube of objects. </div></div>
<divclass="ttc"id="structcutlass_1_1ShapeCount_html"><divclass="ttname"><ahref="structcutlass_1_1ShapeCount.html">cutlass::ShapeCount</a></div><divclass="ttdoc">Compute derived counted of a Layout Concept based class. </div><divclass="ttdef"><b>Definition:</b> shape.h:79</div></div>
<divclass="ttc"id="structcutlass_1_1gemm_1_1GemmConfig_html_a389c0980e978463d3cc126342d8413c6"><divclass="ttname"><ahref="structcutlass_1_1gemm_1_1GemmConfig.html#a389c0980e978463d3cc126342d8413c6">cutlass::gemm::GemmConfig::ScalarB</a></div><divclass="ttdeci">ScalarB_ ScalarB</div><divclass="ttdoc">The scalar for B. </div><divclass="ttdef"><b>Definition:</b> gemm_config.h:81</div></div>