mlx/docs/build/html/struct_read_writer.html

1161 lines
62 KiB
HTML
Raw Normal View History

2024-10-15 23:12:17 +08:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
2025-02-07 04:16:29 +08:00
<meta name="generator" content="Doxygen 1.13.2"/>
2024-10-15 23:12:17 +08:00
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MLX: ReadWriter&lt; in_T, out_T, step, four_step_real &gt; Struct Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
2025-01-10 05:56:20 +08:00
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
2024-10-15 23:12:17 +08:00
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.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>
2025-01-10 05:56:20 +08:00
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
2024-10-15 23:12:17 +08:00
<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 id="projectrow">
<td id="projectalign">
<div id="projectname">MLX
</div>
</td>
2025-01-10 05:56:20 +08:00
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
2024-10-15 23:12:17 +08:00
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
2025-02-07 04:16:29 +08:00
<!-- Generated by Doxygen 1.13.2 -->
2024-10-15 23:12:17 +08:00
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
2025-01-10 05:56:20 +08:00
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
2024-10-15 23:12:17 +08:00
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
2025-01-10 05:56:20 +08:00
$(function(){initNavTree('struct_read_writer.html',''); initResizable(true); });
2024-10-15 23:12:17 +08:00
/* @license-end */
</script>
2025-01-10 05:56:20 +08:00
<div id="doc-content">
2024-10-15 23:12:17 +08:00
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="struct_read_writer-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">ReadWriter&lt; in_T, out_T, step, four_step_real &gt; Struct Template Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="readwrite_8h_source.html">readwrite.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a1aa07e41d7ac286ad79bd26a072dfa0c" id="r_a1aa07e41d7ac286ad79bd26a072dfa0c"><td class="memItemLeft" align="right" valign="top">METAL_FUNC&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1aa07e41d7ac286ad79bd26a072dfa0c">ReadWriter</a> (const device in_T *in_, threadgroup float2 *buf_, device out_T *out_, const short n_, const int batch_size_, const short <a class="el" href="backend_2metal_2kernels_2fft_8h.html#ad395c11e6f2aee72cd1928fba93a35a3">elems_per_thread_</a>, const uint3 elem_, const uint3 grid_, const bool <a class="el" href="backend_2metal_2kernels_2fft_8h.html#a7a83318497519ff3ff0141b7d511ed38">inv_</a>)</td></tr>
<tr class="separator:a1aa07e41d7ac286ad79bd26a072dfa0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab555cec93b66eead607e6a03d9324e1c" id="r_ab555cec93b66eead607e6a03d9324e1c"><td class="memItemLeft" align="right" valign="top">METAL_FUNC float2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab555cec93b66eead607e6a03d9324e1c">post_in</a> (float2 <a class="el" href="#a32b82adcd6ed324ce235e9f5ad780ede">elem</a>) const</td></tr>
<tr class="separator:ab555cec93b66eead607e6a03d9324e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c47a25b2135393045fa5f95ada59d9d" id="r_a6c47a25b2135393045fa5f95ada59d9d"><td class="memItemLeft" align="right" valign="top">METAL_FUNC float2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6c47a25b2135393045fa5f95ada59d9d">post_in</a> (float <a class="el" href="#a32b82adcd6ed324ce235e9f5ad780ede">elem</a>) const</td></tr>
<tr class="separator:a6c47a25b2135393045fa5f95ada59d9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94da8aa85fa2916eaa3eaeb11499234a" id="r_a94da8aa85fa2916eaa3eaeb11499234a"><td class="memItemLeft" align="right" valign="top">METAL_FUNC float2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a94da8aa85fa2916eaa3eaeb11499234a">pre_out</a> (float2 <a class="el" href="#a32b82adcd6ed324ce235e9f5ad780ede">elem</a>) const</td></tr>
<tr class="separator:a94da8aa85fa2916eaa3eaeb11499234a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a185553204b07a407ef02c41dd78e8239" id="r_a185553204b07a407ef02c41dd78e8239"><td class="memItemLeft" align="right" valign="top">METAL_FUNC float2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a185553204b07a407ef02c41dd78e8239">pre_out</a> (float2 <a class="el" href="#a32b82adcd6ed324ce235e9f5ad780ede">elem</a>, int length) const</td></tr>
<tr class="separator:a185553204b07a407ef02c41dd78e8239"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08e10626fbc789b6dff9172fd6c36f7c" id="r_a08e10626fbc789b6dff9172fd6c36f7c"><td class="memItemLeft" align="right" valign="top">METAL_FUNC bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a08e10626fbc789b6dff9172fd6c36f7c">out_of_bounds</a> () const</td></tr>
<tr class="separator:a08e10626fbc789b6dff9172fd6c36f7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a120eaf4b5f32e80972a18d14e82a2d75" id="r_a120eaf4b5f32e80972a18d14e82a2d75"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a120eaf4b5f32e80972a18d14e82a2d75">load</a> () const</td></tr>
<tr class="separator:a120eaf4b5f32e80972a18d14e82a2d75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2ea71e41740ddc863890e3e8e6f09d0" id="r_ac2ea71e41740ddc863890e3e8e6f09d0"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac2ea71e41740ddc863890e3e8e6f09d0">write</a> () const</td></tr>
<tr class="separator:ac2ea71e41740ddc863890e3e8e6f09d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add5bd3f647793a5a19d63197a19df73c" id="r_add5bd3f647793a5a19d63197a19df73c"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#add5bd3f647793a5a19d63197a19df73c">load_padded</a> (int length, const device float2 *w_k) const</td></tr>
<tr class="separator:add5bd3f647793a5a19d63197a19df73c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95367307acace2aa88226cf8956d2d88" id="r_a95367307acace2aa88226cf8956d2d88"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a95367307acace2aa88226cf8956d2d88">write_padded</a> (int length, const device float2 *w_k) const</td></tr>
<tr class="separator:a95367307acace2aa88226cf8956d2d88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c903fbb8b85a856ba5564d7df537cdf" id="r_a7c903fbb8b85a856ba5564d7df537cdf"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7c903fbb8b85a856ba5564d7df537cdf">compute_strided_indices</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a7c903fbb8b85a856ba5564d7df537cdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a998ef484bade81f726b9edfc6b878197" id="r_a998ef484bade81f726b9edfc6b878197"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a998ef484bade81f726b9edfc6b878197">load_strided</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a998ef484bade81f726b9edfc6b878197"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77a4d7eac217305e22a3c25b3756ef67" id="r_a77a4d7eac217305e22a3c25b3756ef67"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a77a4d7eac217305e22a3c25b3756ef67">write_strided</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a77a4d7eac217305e22a3c25b3756ef67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d9c8cbc582cad6b5218339d0f721559" id="r_a3d9c8cbc582cad6b5218339d0f721559"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3d9c8cbc582cad6b5218339d0f721559">load_strided</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a3d9c8cbc582cad6b5218339d0f721559"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12e7f43cd9de2d9990054184c0a32839" id="r_a12e7f43cd9de2d9990054184c0a32839"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a12e7f43cd9de2d9990054184c0a32839">write_strided</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a12e7f43cd9de2d9990054184c0a32839"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f946aea5452109dca7fc70ed39c6efe" id="r_a6f946aea5452109dca7fc70ed39c6efe"><td class="memItemLeft" align="right" valign="top">METAL_FUNC bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6f946aea5452109dca7fc70ed39c6efe">out_of_bounds</a> () const</td></tr>
<tr class="separator:a6f946aea5452109dca7fc70ed39c6efe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a97ba42db5692898ef7391db08d8fd0" id="r_a8a97ba42db5692898ef7391db08d8fd0"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8a97ba42db5692898ef7391db08d8fd0">load</a> () const</td></tr>
<tr class="separator:a8a97ba42db5692898ef7391db08d8fd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a3d1396b0f83aa7506207bd6e7336bf" id="r_a7a3d1396b0f83aa7506207bd6e7336bf"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7a3d1396b0f83aa7506207bd6e7336bf">write</a> () const</td></tr>
<tr class="separator:a7a3d1396b0f83aa7506207bd6e7336bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3ce6bbb1a8dfb3bab1ae18d3eb45bc0" id="r_af3ce6bbb1a8dfb3bab1ae18d3eb45bc0"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af3ce6bbb1a8dfb3bab1ae18d3eb45bc0">load_padded</a> (int length, const device float2 *w_k) const</td></tr>
<tr class="separator:af3ce6bbb1a8dfb3bab1ae18d3eb45bc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abaf2a6ad4c88bd9f65fe1db1f73a8d87" id="r_abaf2a6ad4c88bd9f65fe1db1f73a8d87"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abaf2a6ad4c88bd9f65fe1db1f73a8d87">write_padded</a> (int length, const device float2 *w_k) const</td></tr>
<tr class="separator:abaf2a6ad4c88bd9f65fe1db1f73a8d87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f40d7f343d32134fe27a694abfde6bf" id="r_a8f40d7f343d32134fe27a694abfde6bf"><td class="memItemLeft" align="right" valign="top">METAL_FUNC bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8f40d7f343d32134fe27a694abfde6bf">out_of_bounds</a> () const</td></tr>
<tr class="separator:a8f40d7f343d32134fe27a694abfde6bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2506ee61be67826ac9494efb12a81900" id="r_a2506ee61be67826ac9494efb12a81900"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2506ee61be67826ac9494efb12a81900">load</a> () const</td></tr>
<tr class="separator:a2506ee61be67826ac9494efb12a81900"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1f0d3555b74998cc2d2288bce72a1f4" id="r_ae1f0d3555b74998cc2d2288bce72a1f4"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae1f0d3555b74998cc2d2288bce72a1f4">write</a> () const</td></tr>
<tr class="separator:ae1f0d3555b74998cc2d2288bce72a1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab116f4569bb9dc6eaef0d8d08472e239" id="r_ab116f4569bb9dc6eaef0d8d08472e239"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab116f4569bb9dc6eaef0d8d08472e239">load_padded</a> (int length, const device float2 *w_k) const</td></tr>
<tr class="separator:ab116f4569bb9dc6eaef0d8d08472e239"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a420453a56e77d6b3891ed4b5f178af9c" id="r_a420453a56e77d6b3891ed4b5f178af9c"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a420453a56e77d6b3891ed4b5f178af9c">write_padded</a> (int length, const device float2 *w_k) const</td></tr>
<tr class="separator:a420453a56e77d6b3891ed4b5f178af9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a795a71a8e1f154a5af415ebe1b3f0713" id="r_a795a71a8e1f154a5af415ebe1b3f0713"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a795a71a8e1f154a5af415ebe1b3f0713">load_strided</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a795a71a8e1f154a5af415ebe1b3f0713"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a959ccaa08f2999c50cea063b01e492e4" id="r_a959ccaa08f2999c50cea063b01e492e4"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a959ccaa08f2999c50cea063b01e492e4">write_strided</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a959ccaa08f2999c50cea063b01e492e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0935b946b8bf2e769427fcbf2da2f7be" id="r_a0935b946b8bf2e769427fcbf2da2f7be"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0935b946b8bf2e769427fcbf2da2f7be">load_strided</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a0935b946b8bf2e769427fcbf2da2f7be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d45368c74a8b7c632659504b3273a13" id="r_a7d45368c74a8b7c632659504b3273a13"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7d45368c74a8b7c632659504b3273a13">load_strided</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a7d45368c74a8b7c632659504b3273a13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5592b24dad5ad030a1e4769b0a278f35" id="r_a5592b24dad5ad030a1e4769b0a278f35"><td class="memItemLeft" align="right" valign="top">METAL_FUNC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5592b24dad5ad030a1e4769b0a278f35">write_strided</a> (int stride, int overall_n)</td></tr>
<tr class="separator:a5592b24dad5ad030a1e4769b0a278f35"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:ab6057215920138f28fd00f0e7ea8afa4" id="r_ab6057215920138f28fd00f0e7ea8afa4"><td class="memItemLeft" align="right" valign="top">const device in_T *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab6057215920138f28fd00f0e7ea8afa4">in</a></td></tr>
<tr class="separator:ab6057215920138f28fd00f0e7ea8afa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23bac3c96dd0265ddbee1f256be45ff5" id="r_a23bac3c96dd0265ddbee1f256be45ff5"><td class="memItemLeft" align="right" valign="top">threadgroup float2 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a23bac3c96dd0265ddbee1f256be45ff5">buf</a></td></tr>
<tr class="separator:a23bac3c96dd0265ddbee1f256be45ff5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abea3b913c952c505d0ca4e529c7316ef" id="r_abea3b913c952c505d0ca4e529c7316ef"><td class="memItemLeft" align="right" valign="top">device out_T *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abea3b913c952c505d0ca4e529c7316ef">out</a></td></tr>
<tr class="separator:abea3b913c952c505d0ca4e529c7316ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a655346c9ebfc33a69da3f1c1d4238dfb" id="r_a655346c9ebfc33a69da3f1c1d4238dfb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a655346c9ebfc33a69da3f1c1d4238dfb">n</a></td></tr>
<tr class="separator:a655346c9ebfc33a69da3f1c1d4238dfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a689f4890c1d2ce33fc6da7550beec735" id="r_a689f4890c1d2ce33fc6da7550beec735"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a689f4890c1d2ce33fc6da7550beec735">batch_size</a></td></tr>
<tr class="separator:a689f4890c1d2ce33fc6da7550beec735"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a444230a0182ce6ba1898c04ce6e669a7" id="r_a444230a0182ce6ba1898c04ce6e669a7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a444230a0182ce6ba1898c04ce6e669a7">elems_per_thread</a></td></tr>
<tr class="separator:a444230a0182ce6ba1898c04ce6e669a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32b82adcd6ed324ce235e9f5ad780ede" id="r_a32b82adcd6ed324ce235e9f5ad780ede"><td class="memItemLeft" align="right" valign="top">uint3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a32b82adcd6ed324ce235e9f5ad780ede">elem</a></td></tr>
<tr class="separator:a32b82adcd6ed324ce235e9f5ad780ede"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7a957f99873d3797081f5d620f3b2c8" id="r_ac7a957f99873d3797081f5d620f3b2c8"><td class="memItemLeft" align="right" valign="top">uint3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac7a957f99873d3797081f5d620f3b2c8">grid</a></td></tr>
<tr class="separator:ac7a957f99873d3797081f5d620f3b2c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64c58e358da22358df3075448ea23893" id="r_a64c58e358da22358df3075448ea23893"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a64c58e358da22358df3075448ea23893">threads_per_tg</a></td></tr>
<tr class="separator:a64c58e358da22358df3075448ea23893"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a773fa8524515bdc2ff8b0e2060741813" id="r_a773fa8524515bdc2ff8b0e2060741813"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a773fa8524515bdc2ff8b0e2060741813">inv</a></td></tr>
<tr class="separator:a773fa8524515bdc2ff8b0e2060741813"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c0b12484aac4fd6759d67c190391989" id="r_a4c0b12484aac4fd6759d67c190391989"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4c0b12484aac4fd6759d67c190391989">strided_device_idx</a> = 0</td></tr>
<tr class="separator:a4c0b12484aac4fd6759d67c190391989"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace40adb02cfb33d89c98353327c251fc" id="r_ace40adb02cfb33d89c98353327c251fc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ace40adb02cfb33d89c98353327c251fc">strided_shared_idx</a> = 0</td></tr>
<tr class="separator:ace40adb02cfb33d89c98353327c251fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a1aa07e41d7ac286ad79bd26a072dfa0c" name="a1aa07e41d7ac286ad79bd26a072dfa0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1aa07e41d7ac286ad79bd26a072dfa0c">&#9670;&#160;</a></span>ReadWriter()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;<a class="el" href="struct_read_writer.html">::ReadWriter</a> </td>
<td>(</td>
<td class="paramtype">const device in_T *</td> <td class="paramname"><span class="paramname"><em>in_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">threadgroup float2 *</td> <td class="paramname"><span class="paramname"><em>buf_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">device out_T *</td> <td class="paramname"><span class="paramname"><em>out_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const short</td> <td class="paramname"><span class="paramname"><em>n_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int</td> <td class="paramname"><span class="paramname"><em>batch_size_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const short</td> <td class="paramname"><span class="paramname"><em>elems_per_thread_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint3</td> <td class="paramname"><span class="paramname"><em>elem_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint3</td> <td class="paramname"><span class="paramname"><em>grid_</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool</td> <td class="paramname"><span class="paramname"><em>inv_</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7c903fbb8b85a856ba5564d7df537cdf" name="a7c903fbb8b85a856ba5564d7df537cdf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c903fbb8b85a856ba5564d7df537cdf">&#9670;&#160;</a></span>compute_strided_indices()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::compute_strided_indices </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a120eaf4b5f32e80972a18d14e82a2d75" name="a120eaf4b5f32e80972a18d14e82a2d75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a120eaf4b5f32e80972a18d14e82a2d75">&#9670;&#160;</a></span>load() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::load </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8a97ba42db5692898ef7391db08d8fd0" name="a8a97ba42db5692898ef7391db08d8fd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a97ba42db5692898ef7391db08d8fd0">&#9670;&#160;</a></span>load() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float, float2 &gt;::load </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2506ee61be67826ac9494efb12a81900" name="a2506ee61be67826ac9494efb12a81900"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2506ee61be67826ac9494efb12a81900">&#9670;&#160;</a></span>load() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float &gt;::load </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="add5bd3f647793a5a19d63197a19df73c" name="add5bd3f647793a5a19d63197a19df73c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add5bd3f647793a5a19d63197a19df73c">&#9670;&#160;</a></span>load_padded() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::load_padded </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>length</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device float2 *</td> <td class="paramname"><span class="paramname"><em>w_k</em></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af3ce6bbb1a8dfb3bab1ae18d3eb45bc0" name="af3ce6bbb1a8dfb3bab1ae18d3eb45bc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3ce6bbb1a8dfb3bab1ae18d3eb45bc0">&#9670;&#160;</a></span>load_padded() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float, float2 &gt;::load_padded </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>length</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device float2 *</td> <td class="paramname"><span class="paramname"><em>w_k</em></span>&#160;) const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab116f4569bb9dc6eaef0d8d08472e239" name="ab116f4569bb9dc6eaef0d8d08472e239"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab116f4569bb9dc6eaef0d8d08472e239">&#9670;&#160;</a></span>load_padded() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float &gt;::load_padded </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>length</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device float2 *</td> <td class="paramname"><span class="paramname"><em>w_k</em></span>&#160;) const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a998ef484bade81f726b9edfc6b878197" name="a998ef484bade81f726b9edfc6b878197"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a998ef484bade81f726b9edfc6b878197">&#9670;&#160;</a></span>load_strided() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::load_strided </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3d9c8cbc582cad6b5218339d0f721559" name="a3d9c8cbc582cad6b5218339d0f721559"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d9c8cbc582cad6b5218339d0f721559">&#9670;&#160;</a></span>load_strided() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float2, 1 &gt;::load_strided </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a795a71a8e1f154a5af415ebe1b3f0713" name="a795a71a8e1f154a5af415ebe1b3f0713"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a795a71a8e1f154a5af415ebe1b3f0713">&#9670;&#160;</a></span>load_strided() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float2, 1, true &gt;::load_strided </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0935b946b8bf2e769427fcbf2da2f7be" name="a0935b946b8bf2e769427fcbf2da2f7be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0935b946b8bf2e769427fcbf2da2f7be">&#9670;&#160;</a></span>load_strided() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float2, 0, true &gt;::load_strided </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7d45368c74a8b7c632659504b3273a13" name="a7d45368c74a8b7c632659504b3273a13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d45368c74a8b7c632659504b3273a13">&#9670;&#160;</a></span>load_strided() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float, 1, true &gt;::load_strided </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a08e10626fbc789b6dff9172fd6c36f7c" name="a08e10626fbc789b6dff9172fd6c36f7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08e10626fbc789b6dff9172fd6c36f7c">&#9670;&#160;</a></span>out_of_bounds() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC bool <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::out_of_bounds </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6f946aea5452109dca7fc70ed39c6efe" name="a6f946aea5452109dca7fc70ed39c6efe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f946aea5452109dca7fc70ed39c6efe">&#9670;&#160;</a></span>out_of_bounds() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC bool <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float, float2 &gt;::out_of_bounds </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8f40d7f343d32134fe27a694abfde6bf" name="a8f40d7f343d32134fe27a694abfde6bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f40d7f343d32134fe27a694abfde6bf">&#9670;&#160;</a></span>out_of_bounds() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC bool <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float &gt;::out_of_bounds </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6c47a25b2135393045fa5f95ada59d9d" name="a6c47a25b2135393045fa5f95ada59d9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c47a25b2135393045fa5f95ada59d9d">&#9670;&#160;</a></span>post_in() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC float2 <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::post_in </td>
<td>(</td>
<td class="paramtype">float</td> <td class="paramname"><span class="paramname"><em>elem</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab555cec93b66eead607e6a03d9324e1c" name="ab555cec93b66eead607e6a03d9324e1c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab555cec93b66eead607e6a03d9324e1c">&#9670;&#160;</a></span>post_in() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC float2 <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::post_in </td>
<td>(</td>
<td class="paramtype">float2</td> <td class="paramname"><span class="paramname"><em>elem</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a94da8aa85fa2916eaa3eaeb11499234a" name="a94da8aa85fa2916eaa3eaeb11499234a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94da8aa85fa2916eaa3eaeb11499234a">&#9670;&#160;</a></span>pre_out() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC float2 <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::pre_out </td>
<td>(</td>
<td class="paramtype">float2</td> <td class="paramname"><span class="paramname"><em>elem</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a185553204b07a407ef02c41dd78e8239" name="a185553204b07a407ef02c41dd78e8239"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a185553204b07a407ef02c41dd78e8239">&#9670;&#160;</a></span>pre_out() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC float2 <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::pre_out </td>
<td>(</td>
<td class="paramtype">float2</td> <td class="paramname"><span class="paramname"><em>elem</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>length</em></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac2ea71e41740ddc863890e3e8e6f09d0" name="ac2ea71e41740ddc863890e3e8e6f09d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2ea71e41740ddc863890e3e8e6f09d0">&#9670;&#160;</a></span>write() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::write </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7a3d1396b0f83aa7506207bd6e7336bf" name="a7a3d1396b0f83aa7506207bd6e7336bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a3d1396b0f83aa7506207bd6e7336bf">&#9670;&#160;</a></span>write() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float, float2 &gt;::write </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae1f0d3555b74998cc2d2288bce72a1f4" name="ae1f0d3555b74998cc2d2288bce72a1f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1f0d3555b74998cc2d2288bce72a1f4">&#9670;&#160;</a></span>write() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float &gt;::write </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a95367307acace2aa88226cf8956d2d88" name="a95367307acace2aa88226cf8956d2d88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95367307acace2aa88226cf8956d2d88">&#9670;&#160;</a></span>write_padded() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::write_padded </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>length</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device float2 *</td> <td class="paramname"><span class="paramname"><em>w_k</em></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abaf2a6ad4c88bd9f65fe1db1f73a8d87" name="abaf2a6ad4c88bd9f65fe1db1f73a8d87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abaf2a6ad4c88bd9f65fe1db1f73a8d87">&#9670;&#160;</a></span>write_padded() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float, float2 &gt;::write_padded </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>length</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device float2 *</td> <td class="paramname"><span class="paramname"><em>w_k</em></span>&#160;) const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a420453a56e77d6b3891ed4b5f178af9c" name="a420453a56e77d6b3891ed4b5f178af9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a420453a56e77d6b3891ed4b5f178af9c">&#9670;&#160;</a></span>write_padded() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float &gt;::write_padded </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>length</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const device float2 *</td> <td class="paramname"><span class="paramname"><em>w_k</em></span>&#160;) const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a77a4d7eac217305e22a3c25b3756ef67" name="a77a4d7eac217305e22a3c25b3756ef67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77a4d7eac217305e22a3c25b3756ef67">&#9670;&#160;</a></span>write_strided() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::write_strided </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
2025-01-10 05:56:20 +08:00
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
2024-10-15 23:12:17 +08:00
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a12e7f43cd9de2d9990054184c0a32839" name="a12e7f43cd9de2d9990054184c0a32839"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12e7f43cd9de2d9990054184c0a32839">&#9670;&#160;</a></span>write_strided() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float2, 1 &gt;::write_strided </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a959ccaa08f2999c50cea063b01e492e4" name="a959ccaa08f2999c50cea063b01e492e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a959ccaa08f2999c50cea063b01e492e4">&#9670;&#160;</a></span>write_strided() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float2, 1, true &gt;::write_strided </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5592b24dad5ad030a1e4769b0a278f35" name="a5592b24dad5ad030a1e4769b0a278f35"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5592b24dad5ad030a1e4769b0a278f35">&#9670;&#160;</a></span>write_strided() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">METAL_FUNC void <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; float2, float, 1, true &gt;::write_strided </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>stride</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>overall_n</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a689f4890c1d2ce33fc6da7550beec735" name="a689f4890c1d2ce33fc6da7550beec735"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a689f4890c1d2ce33fc6da7550beec735">&#9670;&#160;</a></span>batch_size</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::batch_size</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a23bac3c96dd0265ddbee1f256be45ff5" name="a23bac3c96dd0265ddbee1f256be45ff5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23bac3c96dd0265ddbee1f256be45ff5">&#9670;&#160;</a></span>buf</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">threadgroup float2* <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::buf</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a32b82adcd6ed324ce235e9f5ad780ede" name="a32b82adcd6ed324ce235e9f5ad780ede"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32b82adcd6ed324ce235e9f5ad780ede">&#9670;&#160;</a></span>elem</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">uint3 <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::elem</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a444230a0182ce6ba1898c04ce6e669a7" name="a444230a0182ce6ba1898c04ce6e669a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a444230a0182ce6ba1898c04ce6e669a7">&#9670;&#160;</a></span>elems_per_thread</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::elems_per_thread</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac7a957f99873d3797081f5d620f3b2c8" name="ac7a957f99873d3797081f5d620f3b2c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac7a957f99873d3797081f5d620f3b2c8">&#9670;&#160;</a></span>grid</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">uint3 <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::grid</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab6057215920138f28fd00f0e7ea8afa4" name="ab6057215920138f28fd00f0e7ea8afa4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6057215920138f28fd00f0e7ea8afa4">&#9670;&#160;</a></span>in</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">const device in_T* <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::in</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a773fa8524515bdc2ff8b0e2060741813" name="a773fa8524515bdc2ff8b0e2060741813"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a773fa8524515bdc2ff8b0e2060741813">&#9670;&#160;</a></span>inv</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::inv</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a655346c9ebfc33a69da3f1c1d4238dfb" name="a655346c9ebfc33a69da3f1c1d4238dfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a655346c9ebfc33a69da3f1c1d4238dfb">&#9670;&#160;</a></span>n</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::n</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abea3b913c952c505d0ca4e529c7316ef" name="abea3b913c952c505d0ca4e529c7316ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abea3b913c952c505d0ca4e529c7316ef">&#9670;&#160;</a></span>out</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">device out_T* <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::out</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4c0b12484aac4fd6759d67c190391989" name="a4c0b12484aac4fd6759d67c190391989"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c0b12484aac4fd6759d67c190391989">&#9670;&#160;</a></span>strided_device_idx</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::strided_device_idx = 0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ace40adb02cfb33d89c98353327c251fc" name="ace40adb02cfb33d89c98353327c251fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace40adb02cfb33d89c98353327c251fc">&#9670;&#160;</a></span>strided_shared_idx</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::strided_shared_idx = 0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a64c58e358da22358df3075448ea23893" name="a64c58e358da22358df3075448ea23893"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64c58e358da22358df3075448ea23893">&#9670;&#160;</a></span>threads_per_tg</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
2025-01-10 05:56:20 +08:00
template&lt;typename in_T, typename out_T, int step = 0, bool four_step_real = false&gt; </div>
2024-10-15 23:12:17 +08:00
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="struct_read_writer.html">ReadWriter</a>&lt; in_T, out_T, step, four_step_real &gt;::threads_per_tg</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>mlx/backend/metal/kernels/fft/<a class="el" href="readwrite_8h_source.html">readwrite.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
2025-01-10 05:56:20 +08:00
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="struct_read_writer.html">ReadWriter</a></li>
2025-02-07 04:16:29 +08:00
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
2025-01-10 05:56:20 +08:00
</ul>
</div>
2024-10-15 23:12:17 +08:00
</body>
</html>