| <!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.13"/> |
| <meta name="viewport" content="width=device-width, initial-scale=1"/> |
| <title>mxnet: Dnnl_api_threadpool_interop</title> |
| <link href="tabs.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="jquery.js"></script> |
| <script type="text/javascript" src="dynsections.js"></script> |
| <link href="search/search.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="search/searchdata.js"></script> |
| <script type="text/javascript" src="search/search.js"></script> |
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> |
| </head> |
| <body> |
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> |
| <div id="titlearea"> |
| <table cellspacing="0" cellpadding="0"> |
| <tbody> |
| <tr style="height: 56px;"> |
| <td id="projectalign" style="padding-left: 0.5em;"> |
| <div id="projectname">mxnet |
| </div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <!-- end header part --> |
| <!-- Generated by Doxygen 1.8.13 --> |
| <script type="text/javascript"> |
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
| </script> |
| <script type="text/javascript" src="menudata.js"></script> |
| <script type="text/javascript" src="menu.js"></script> |
| <script type="text/javascript"> |
| $(function() { |
| initMenu('',true,false,'search.php','Search'); |
| $(document).ready(function() { init_search(); }); |
| }); |
| </script> |
| <div id="main-nav"></div> |
| </div><!-- top --> |
| <!-- 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 class="header"> |
| <div class="summary"> |
| <a href="#func-members">Functions</a> </div> |
| <div class="headertitle"> |
| <div class="title">Dnnl_api_threadpool_interop<div class="ingroups"><a class="el" href="group__dnnl__api.html">Dnnl_api</a> » <a class="el" href="group__dnnl__api__interop.html">Dnnl_api_interop</a></div></div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| <div class="dynheader"> |
| Collaboration diagram for Dnnl_api_threadpool_interop:</div> |
| <div class="dyncontent"> |
| <center><table><tr><td><img src="group__dnnl__api__threadpool__interop.png" border="0" alt="" usemap="#group____dnnl____api____threadpool____interop"/> |
| <map name="group____dnnl____api____threadpool____interop" id="group____dnnl____api____threadpool____interop"> |
| <area shape="rect" id="node1" href="group__dnnl__api__interop.html" title="Dnnl_api_interop" alt="" coords="5,13,137,39"/> |
| </map> |
| </td></tr></table></center> |
| </div> |
| <table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> |
| Functions</h2></td></tr> |
| <tr class="memitem:ga45a92b2adda6ff7a31784d73cbd61c26"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dnnl__api__threadpool__interop.html#ga45a92b2adda6ff7a31784d73cbd61c26">dnnl_threadpool_interop_stream_create</a> (<a class="el" href="group__dnnl__api__stream.html#ga735eb19cfd205c108c468b5657de4eca">dnnl_stream_t</a> *stream, <a class="el" href="group__dnnl__api__engine.html#ga1ce7843660e8203ed6e1af9bfd23e14f">dnnl_engine_t</a> engine, void *threadpool)</td></tr> |
| <tr class="separator:ga45a92b2adda6ff7a31784d73cbd61c26"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ga1dac9e0e17855a5196cb96295277a86d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dnnl__api__threadpool__interop.html#ga1dac9e0e17855a5196cb96295277a86d">dnnl_threadpool_interop_stream_get_threadpool</a> (<a class="el" href="group__dnnl__api__stream.html#ga735eb19cfd205c108c468b5657de4eca">dnnl_stream_t</a> astream, void **threadpool)</td></tr> |
| <tr class="separator:ga1dac9e0e17855a5196cb96295277a86d"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ga2726272c8ce83f4231cc81e326336193"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dnnl__api__threadpool__interop.html#ga2726272c8ce83f4231cc81e326336193">dnnl_threadpool_interop_sgemm</a> (char transa, char transb, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> M, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> N, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> K, float alpha, const float *A, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> lda, const float *B, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> ldb, float beta, float *C, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> ldc, void *threadpool)</td></tr> |
| <tr class="separator:ga2726272c8ce83f4231cc81e326336193"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:gaeb14ed904eaed73cfd01a29bc2a4ac1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dnnl__api__threadpool__interop.html#gaeb14ed904eaed73cfd01a29bc2a4ac1e">dnnl_threadpool_interop_gemm_u8s8s32</a> (char transa, char transb, char offsetc, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> M, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> N, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> K, float alpha, const uint8_t *A, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> lda, uint8_t ao, const int8_t *B, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> ldb, int8_t bo, float beta, int32_t *C, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> ldc, const int32_t *co, void *threadpool)</td></tr> |
| <tr class="separator:gaeb14ed904eaed73cfd01a29bc2a4ac1e"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ga39dd6bf602ca1ebb2039eb4c27f07fdf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dnnl__api__threadpool__interop.html#ga39dd6bf602ca1ebb2039eb4c27f07fdf">dnnl_threadpool_interop_gemm_s8s8s32</a> (char transa, char transb, char offsetc, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> M, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> N, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> K, float alpha, const int8_t *A, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> lda, int8_t ao, const int8_t *B, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> ldb, int8_t bo, float beta, int32_t *C, <a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> ldc, const int32_t *co, void *threadpool)</td></tr> |
| <tr class="separator:ga39dd6bf602ca1ebb2039eb4c27f07fdf"><td class="memSeparator" colspan="2"> </td></tr> |
| </table> |
| <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> |
| <h2 class="groupheader">Function Documentation</h2> |
| <a id="ga39dd6bf602ca1ebb2039eb4c27f07fdf"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ga39dd6bf602ca1ebb2039eb4c27f07fdf">◆ </a></span>dnnl_threadpool_interop_gemm_s8s8s32()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API dnnl_threadpool_interop_gemm_s8s8s32 </td> |
| <td>(</td> |
| <td class="paramtype">char </td> |
| <td class="paramname"><em>transa</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">char </td> |
| <td class="paramname"><em>transb</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">char </td> |
| <td class="paramname"><em>offsetc</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>M</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>N</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>K</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">float </td> |
| <td class="paramname"><em>alpha</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const int8_t * </td> |
| <td class="paramname"><em>A</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>lda</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int8_t </td> |
| <td class="paramname"><em>ao</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const int8_t * </td> |
| <td class="paramname"><em>B</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>ldb</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int8_t </td> |
| <td class="paramname"><em>bo</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">float </td> |
| <td class="paramname"><em>beta</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int32_t * </td> |
| <td class="paramname"><em>C</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>ldc</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const int32_t * </td> |
| <td class="paramname"><em>co</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"><em>threadpool</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p></p> |
| <p>Performs integer matrix-matrix multiply on 8-bit signed matrix A, 8-bit signed matrix B, and 32-bit signed resulting matrix C.</p> |
| <p>The operation is defined as:</p> |
| <p><code>C := alpha * (op(A) - A_offset) * (op(B) - B_offset) + beta * C + C_offset</code></p> |
| <p>where</p><ul> |
| <li><code>op( X ) = X</code> or <code>op( X ) = X**T</code>,</li> |
| <li><code>alpha</code> and <code>beta</code> are scalars, and</li> |
| <li><code>A</code>, <code>B</code>, and <code>C</code> are matrices:<ul> |
| <li><code>op( A )</code> is an <code>MxK</code> matrix,</li> |
| <li><code>op( B )</code> is an <code>KxN</code> matrix,</li> |
| <li><code>C</code> is an <code>MxN</code> matrix.</li> |
| </ul> |
| </li> |
| <li><code>A_offset</code> is an <code>MxK</code> matrix with every element equal the <code>ao</code> value,</li> |
| <li><code>B_offset</code> is an <code>KxN</code> matrix with every element equal the <code>bo</code> value,</li> |
| <li><code>C_offset</code> is an <code>MxN</code> matrix which is defined by the <code>co</code> array of size <code>len</code>:<ul> |
| <li>if <code>offsetc = F</code>: the <code>len</code> must be at least <code>1</code>,</li> |
| <li>if <code>offsetc = C</code>: the <code>len</code> must be at least <code>max(1, m)</code>,</li> |
| <li>if <code>offsetc = R</code>: the <code>len</code> must be at least <code>max(1, n)</code>,</li> |
| </ul> |
| </li> |
| </ul> |
| <p>The matrices are assumed to be stored in row-major order (the elements in each of the matrix rows are contiguous in memory).</p> |
| <dl class="section note"><dt>Note</dt><dd>This API does not support XERBLA. Instead, unlike the standard BLAS functions, this one returns a dnnl_status_t value to allow error handling.</dd></dl> |
| <dl class="section warning"><dt>Warning</dt><dd>On some architectures saturation may happen during intermediate computations, which would lead to unexpected results. For more details, refer to dev_guide_int8_computations.</dd></dl> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">transa</td><td>Transposition flag for matrix A: 'N' or 'n' means A is not transposed, and 'T' or 't' means that A is transposed. </td></tr> |
| <tr><td class="paramname">transb</td><td>Transposition flag for matrix B: 'N' or 'n' means B is not transposed, and 'T' or 't' means that B is transposed. </td></tr> |
| <tr><td class="paramname">offsetc</td><td>Flag specifying how offsets should be applied to matrix C:<ul> |
| <li>'F' means that the same offset will be applied to each element of the matrix C,</li> |
| <li>'C' means that individual offset will be applied to each element within each column,</li> |
| <li>'R' means that individual offset will be applied to each element within each row. </li> |
| </ul> |
| </td></tr> |
| <tr><td class="paramname">M</td><td>The M dimension. </td></tr> |
| <tr><td class="paramname">N</td><td>The N dimension. </td></tr> |
| <tr><td class="paramname">K</td><td>The K dimension. </td></tr> |
| <tr><td class="paramname">alpha</td><td>The alpha parameter that is used to scale the product of matrices A and B. </td></tr> |
| <tr><td class="paramname">A</td><td>A pointer to the A matrix data. </td></tr> |
| <tr><td class="paramname">lda</td><td>The leading dimension for the matrix A. </td></tr> |
| <tr><td class="paramname">ao</td><td>The offset value for the matrix A. </td></tr> |
| <tr><td class="paramname">B</td><td>A pointer to the B matrix data. </td></tr> |
| <tr><td class="paramname">ldb</td><td>The leading dimension for the matrix B. </td></tr> |
| <tr><td class="paramname">bo</td><td>The offset value for the matrix B. </td></tr> |
| <tr><td class="paramname">beta</td><td>The beta parameter that is used to scale the matrix C. </td></tr> |
| <tr><td class="paramname">C</td><td>A pointer to the C matrix data. </td></tr> |
| <tr><td class="paramname">ldc</td><td>The leading dimension for the matrix C. </td></tr> |
| <tr><td class="paramname">co</td><td>An array of offset values for the matrix C. The number of elements in the array depends on the value of <code>offsetc</code>. </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__dnnl__api__utils.html#ggad24f9ded06e34d3ee71e7fc4b408d57aaa31395e9dccc103cf166cf7b38fc5b9c" title="The operation was successful. ">dnnl_success</a>/#dnnl::status::success on success and a status describing the error otherwise. </dd></dl> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">threadpool</td><td>A pointer to a threadpool interface (only when built with the THREADPOOL CPU runtime). </td></tr> |
| </table> |
| </dd> |
| </dl> |
| |
| </div> |
| </div> |
| <a id="gaeb14ed904eaed73cfd01a29bc2a4ac1e"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#gaeb14ed904eaed73cfd01a29bc2a4ac1e">◆ </a></span>dnnl_threadpool_interop_gemm_u8s8s32()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API dnnl_threadpool_interop_gemm_u8s8s32 </td> |
| <td>(</td> |
| <td class="paramtype">char </td> |
| <td class="paramname"><em>transa</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">char </td> |
| <td class="paramname"><em>transb</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">char </td> |
| <td class="paramname"><em>offsetc</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>M</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>N</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>K</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">float </td> |
| <td class="paramname"><em>alpha</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const uint8_t * </td> |
| <td class="paramname"><em>A</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>lda</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t </td> |
| <td class="paramname"><em>ao</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const int8_t * </td> |
| <td class="paramname"><em>B</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>ldb</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int8_t </td> |
| <td class="paramname"><em>bo</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">float </td> |
| <td class="paramname"><em>beta</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int32_t * </td> |
| <td class="paramname"><em>C</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>ldc</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const int32_t * </td> |
| <td class="paramname"><em>co</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"><em>threadpool</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p></p> |
| <p>Performs integer matrix-matrix multiply on 8-bit unsigned matrix A, 8-bit signed matrix B, and 32-bit signed resulting matrix C.</p> |
| <p>The operation is defined as:</p> |
| <p><code>C := alpha * (op(A) - A_offset) * (op(B) - B_offset) + beta * C + C_offset</code></p> |
| <p>where</p><ul> |
| <li><code>op( X ) = X</code> or <code>op( X ) = X**T</code>,</li> |
| <li><code>alpha</code> and <code>beta</code> are scalars, and</li> |
| <li><code>A</code>, <code>B</code>, and <code>C</code> are matrices:<ul> |
| <li><code>op( A )</code> is an <code>MxK</code> matrix,</li> |
| <li><code>op( B )</code> is an <code>KxN</code> matrix,</li> |
| <li><code>C</code> is an <code>MxN</code> matrix.</li> |
| </ul> |
| </li> |
| <li><code>A_offset</code> is an <code>MxK</code> matrix with every element equal the <code>ao</code> value,</li> |
| <li><code>B_offset</code> is an <code>KxN</code> matrix with every element equal the <code>bo</code> value,</li> |
| <li><code>C_offset</code> is an <code>MxN</code> matrix which is defined by the <code>co</code> array of size <code>len</code>:<ul> |
| <li>if <code>offsetc = F</code>: the <code>len</code> must be at least <code>1</code>,</li> |
| <li>if <code>offsetc = C</code>: the <code>len</code> must be at least <code>max(1, m)</code>,</li> |
| <li>if <code>offsetc = R</code>: the <code>len</code> must be at least <code>max(1, n)</code>,</li> |
| </ul> |
| </li> |
| </ul> |
| <p>The matrices are assumed to be stored in row-major order (the elements in each of the matrix rows are contiguous in memory).</p> |
| <dl class="section note"><dt>Note</dt><dd>This API does not support XERBLA. Instead, unlike the standard BLAS functions, this one returns a dnnl_status_t value to allow error handling.</dd></dl> |
| <dl class="section warning"><dt>Warning</dt><dd>On some architectures saturation may happen during intermediate computations, which would lead to unexpected results. For more details, refer to dev_guide_int8_computations.</dd></dl> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">transa</td><td>Transposition flag for matrix A: 'N' or 'n' means A is not transposed, and 'T' or 't' means that A is transposed. </td></tr> |
| <tr><td class="paramname">transb</td><td>Transposition flag for matrix B: 'N' or 'n' means B is not transposed, and 'T' or 't' means that B is transposed. </td></tr> |
| <tr><td class="paramname">offsetc</td><td>Flag specifying how offsets should be applied to matrix C:<ul> |
| <li>'F' means that the same offset will be applied to each element of the matrix C,</li> |
| <li>'C' means that individual offset will be applied to each element within each column,</li> |
| <li>'R' means that individual offset will be applied to each element within each row. </li> |
| </ul> |
| </td></tr> |
| <tr><td class="paramname">M</td><td>The M dimension. </td></tr> |
| <tr><td class="paramname">N</td><td>The N dimension. </td></tr> |
| <tr><td class="paramname">K</td><td>The K dimension. </td></tr> |
| <tr><td class="paramname">alpha</td><td>The alpha parameter that is used to scale the product of matrices A and B. </td></tr> |
| <tr><td class="paramname">A</td><td>A pointer to the A matrix data. </td></tr> |
| <tr><td class="paramname">lda</td><td>The leading dimension for the matrix A. </td></tr> |
| <tr><td class="paramname">ao</td><td>The offset value for the matrix A. </td></tr> |
| <tr><td class="paramname">B</td><td>A pointer to the B matrix data. </td></tr> |
| <tr><td class="paramname">ldb</td><td>The leading dimension for the matrix B. </td></tr> |
| <tr><td class="paramname">bo</td><td>The offset value for the matrix B. </td></tr> |
| <tr><td class="paramname">beta</td><td>The beta parameter that is used to scale the matrix C. </td></tr> |
| <tr><td class="paramname">C</td><td>A pointer to the C matrix data. </td></tr> |
| <tr><td class="paramname">ldc</td><td>The leading dimension for the matrix C. </td></tr> |
| <tr><td class="paramname">co</td><td>An array of offset values for the matrix C. The number of elements in the array depends on the value of <code>offsetc</code>. </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__dnnl__api__utils.html#ggad24f9ded06e34d3ee71e7fc4b408d57aaa31395e9dccc103cf166cf7b38fc5b9c" title="The operation was successful. ">dnnl_success</a>/#dnnl::status::success on success and a status describing the error otherwise. </dd></dl> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">threadpool</td><td>A pointer to a threadpool interface (only when built with the THREADPOOL CPU runtime). </td></tr> |
| </table> |
| </dd> |
| </dl> |
| |
| </div> |
| </div> |
| <a id="ga2726272c8ce83f4231cc81e326336193"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ga2726272c8ce83f4231cc81e326336193">◆ </a></span>dnnl_threadpool_interop_sgemm()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API dnnl_threadpool_interop_sgemm </td> |
| <td>(</td> |
| <td class="paramtype">char </td> |
| <td class="paramname"><em>transa</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">char </td> |
| <td class="paramname"><em>transb</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>M</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>N</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>K</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">float </td> |
| <td class="paramname"><em>alpha</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const float * </td> |
| <td class="paramname"><em>A</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>lda</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const float * </td> |
| <td class="paramname"><em>B</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>ldb</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">float </td> |
| <td class="paramname"><em>beta</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">float * </td> |
| <td class="paramname"><em>C</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__memory.html#ga872631b12a112bf43fba985cba24dd20">dnnl_dim_t</a> </td> |
| <td class="paramname"><em>ldc</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"><em>threadpool</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p></p> |
| <p>Performs single-precision matrix-matrix multiply.</p> |
| <p>The operation is defined as:</p> |
| <p><code>C := alpha * op( A ) * op( B ) + beta * C</code></p> |
| <p>where</p><ul> |
| <li><code>op( X ) = X</code> or <code>op( X ) = X**T</code>,</li> |
| <li><code>alpha</code> and <code>beta</code> are scalars, and</li> |
| <li><code>A</code>, <code>B</code>, and <code>C</code> are matrices:<ul> |
| <li><code>op( A )</code> is an <code>MxK</code> matrix,</li> |
| <li><code>op( B )</code> is an <code>KxN</code> matrix,</li> |
| <li><code>C</code> is an <code>MxN</code> matrix.</li> |
| </ul> |
| </li> |
| </ul> |
| <p>The matrices are assumed to be stored in row-major order (the elements in each of the matrix rows are contiguous in memory).</p> |
| <dl class="section note"><dt>Note</dt><dd>This API does not support XERBLA. Instead, unlike the standard BLAS functions, this one returns a dnnl_status_t value to allow error handling.</dd></dl> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">transa</td><td>Transposition flag for matrix A: 'N' or 'n' means A is not transposed, and 'T' or 't' means that A is transposed. </td></tr> |
| <tr><td class="paramname">transb</td><td>Transposition flag for matrix B: 'N' or 'n' means B is not transposed, and 'T' or 't' means that B is transposed. </td></tr> |
| <tr><td class="paramname">M</td><td>The M dimension. </td></tr> |
| <tr><td class="paramname">N</td><td>The N dimension. </td></tr> |
| <tr><td class="paramname">K</td><td>The K dimension. </td></tr> |
| <tr><td class="paramname">alpha</td><td>The alpha parameter that is used to scale the product of matrices A and B. </td></tr> |
| <tr><td class="paramname">A</td><td>A pointer to the A matrix data. </td></tr> |
| <tr><td class="paramname">lda</td><td>The leading dimension for the matrix A. </td></tr> |
| <tr><td class="paramname">B</td><td>A pointer to the B matrix data. </td></tr> |
| <tr><td class="paramname">ldb</td><td>The leading dimension for the matrix B. </td></tr> |
| <tr><td class="paramname">beta</td><td>The beta parameter that is used to scale the matrix C. </td></tr> |
| <tr><td class="paramname">C</td><td>A pointer to the C matrix data. </td></tr> |
| <tr><td class="paramname">ldc</td><td>The leading dimension for the matrix C. </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__dnnl__api__utils.html#ggad24f9ded06e34d3ee71e7fc4b408d57aaa31395e9dccc103cf166cf7b38fc5b9c" title="The operation was successful. ">dnnl_success</a>/#dnnl::status::success on success and a status describing the error otherwise. </dd></dl> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">threadpool</td><td>A pointer to a threadpool interface (only when built with the THREADPOOL CPU runtime). </td></tr> |
| </table> |
| </dd> |
| </dl> |
| |
| </div> |
| </div> |
| <a id="ga45a92b2adda6ff7a31784d73cbd61c26"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ga45a92b2adda6ff7a31784d73cbd61c26">◆ </a></span>dnnl_threadpool_interop_stream_create()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API dnnl_threadpool_interop_stream_create </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__stream.html#ga735eb19cfd205c108c468b5657de4eca">dnnl_stream_t</a> * </td> |
| <td class="paramname"><em>stream</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__engine.html#ga1ce7843660e8203ed6e1af9bfd23e14f">dnnl_engine_t</a> </td> |
| <td class="paramname"><em>engine</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"><em>threadpool</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Creates an execution stream with specified threadpool.</p> |
| <dl class="section see"><dt>See also</dt><dd>dev_guide_threadpool</dd></dl> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">stream</td><td>Output execution stream. </td></tr> |
| <tr><td class="paramname">engine</td><td>Engine to create the execution stream on. </td></tr> |
| <tr><td class="paramname">threadpool</td><td>Pointer to an instance of a C++ class that implements dnnl::threapdool_iface interface. </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__dnnl__api__utils.html#ggad24f9ded06e34d3ee71e7fc4b408d57aaa31395e9dccc103cf166cf7b38fc5b9c" title="The operation was successful. ">dnnl_success</a> on success and a status describing the error otherwise. </dd></dl> |
| |
| </div> |
| </div> |
| <a id="ga1dac9e0e17855a5196cb96295277a86d"></a> |
| <h2 class="memtitle"><span class="permalink"><a href="#ga1dac9e0e17855a5196cb96295277a86d">◆ </a></span>dnnl_threadpool_interop_stream_get_threadpool()</h2> |
| |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname"><a class="el" href="group__dnnl__api__utils.html#gad24f9ded06e34d3ee71e7fc4b408d57a">dnnl_status_t</a> DNNL_API dnnl_threadpool_interop_stream_get_threadpool </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="group__dnnl__api__stream.html#ga735eb19cfd205c108c468b5657de4eca">dnnl_stream_t</a> </td> |
| <td class="paramname"><em>astream</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">void ** </td> |
| <td class="paramname"><em>threadpool</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Returns a threadpool to be used by the execution stream.</p> |
| <dl class="section see"><dt>See also</dt><dd>dev_guide_threadpool</dd></dl> |
| <dl class="params"><dt>Parameters</dt><dd> |
| <table class="params"> |
| <tr><td class="paramname">astream</td><td>Execution stream. </td></tr> |
| <tr><td class="paramname">threadpool</td><td>Output pointer to an instance of a C++ class that implements dnnl::threapdool_iface interface. Set to NULL if the stream was created without threadpool. </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__dnnl__api__utils.html#ggad24f9ded06e34d3ee71e7fc4b408d57aaa31395e9dccc103cf166cf7b38fc5b9c" title="The operation was successful. ">dnnl_success</a> on success and a status describing the error otherwise. </dd></dl> |
| |
| </div> |
| </div> |
| </div><!-- contents --> |
| <!-- start footer part --> |
| <hr class="footer"/><address class="footer"><small> |
| Generated on Thu Apr 28 2022 17:47:36 for mxnet by  <a href="http://www.doxygen.org/index.html"> |
| <img class="footer" src="doxygen.png" alt="doxygen"/> |
| </a> 1.8.13 |
| </small></address> |
| </body> |
| </html> |