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" / >
< meta name = "generator" content = "Doxygen 1.12.0" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > MLX: mlx/backend/metal/kernels/fft.h File 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" / >
< 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 >
< 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 >
< / tr >
< / tbody >
< / table >
< / div >
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
< / script >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
< / script >
< script type = "text/javascript" src = "menudata.js" > < / script >
< script type = "text/javascript" src = "menu.js" > < / script >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',false);
$(function() { init_search(); });
});
/* @license-end */
< / script >
< div id = "main-nav" > < / div >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
< / script >
<!-- 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 id = "nav-path" class = "navpath" >
< ul >
< li class = "navelem" > < a class = "el" href = "dir_938ab0ecf10b8b860ff766c820f665fd.html" > mlx< / a > < / li > < li class = "navelem" > < a class = "el" href = "dir_1d446c9bd3c99228254c9484e0bc5c06.html" > backend< / a > < / li > < li class = "navelem" > < a class = "el" href = "dir_d0c977ea65824390717cdb7efc36c157.html" > metal< / a > < / li > < li class = "navelem" > < a class = "el" href = "dir_70a37effa88bcbd6b791977fa1e64356.html" > kernels< / a > < / li > < / ul >
< / div >
< / div > <!-- top -->
< div id = "doc-content" >
< div class = "header" >
< div class = "summary" >
< a href = "#define-members" > Macros< / a > |
< a href = "#typedef-members" > Typedefs< / a > |
< a href = "#func-members" > Functions< / a > |
< a href = "#var-members" > Variables< / a > < / div >
< div class = "headertitle" > < div class = "title" > fft.h File Reference< / div > < / div >
< / div > <!-- header -->
< div class = "contents" >
< div class = "textblock" > < code > #include < metal_common> < / code > < br / >
< code > #include " < a class = "el" href = "radix_8h_source.html" > mlx/backend/metal/kernels/fft/radix.h< / a > " < / code > < br / >
< code > #include " < a class = "el" href = "readwrite_8h_source.html" > mlx/backend/metal/kernels/fft/readwrite.h< / a > " < / code > < br / >
< code > #include " < a class = "el" href = "steel_2defines_8h_source.html" > mlx/backend/metal/kernels/steel/defines.h< / a > " < / code > < br / >
< / div >
< p > < a href = "backend_2metal_2kernels_2fft_8h_source.html" > Go to the source code of this file.< / a > < / p >
< table class = "memberdecls" >
< tr class = "heading" > < td colspan = "2" > < h2 class = "groupheader" > < a id = "define-members" name = "define-members" > < / a >
Macros< / h2 > < / td > < / tr >
< tr class = "memitem:a7b6e56afa21f022c5e754b000955735a" id = "r_a7b6e56afa21f022c5e754b000955735a" > < td class = "memItemLeft" align = "right" valign = "top" > #define  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a7b6e56afa21f022c5e754b000955735a" > MAX_RADIX< / a >       13< / td > < / tr >
< tr class = "separator:a7b6e56afa21f022c5e754b000955735a" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a28d683cf067736d76f867f30c066317e" id = "r_a28d683cf067736d76f867f30c066317e" > < td class = "memItemLeft" align = "right" valign = "top" > #define  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a28d683cf067736d76f867f30c066317e" > MAX_OUTPUT_SIZE< / a >       18< / td > < / tr >
< tr class = "separator:a28d683cf067736d76f867f30c066317e" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a794032d3a9acff0e31c77c69d0007f10" id = "r_a794032d3a9acff0e31c77c69d0007f10" > < td class = "memItemLeft" align = "right" valign = "top" > #define  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a794032d3a9acff0e31c77c69d0007f10" > RADIX_STEP< / a > (radix, < a class = "el" href = "metal_2kernels_2hadamard_8h.html#a590e5366adc78bab4fe44e37885d413f" > radix_func< / a > , num_steps)< / td > < / tr >
< tr class = "separator:a794032d3a9acff0e31c77c69d0007f10" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< / table > < table class = "memberdecls" >
< tr class = "heading" > < td colspan = "2" > < h2 class = "groupheader" > < a id = "typedef-members" name = "typedef-members" > < / a >
Typedefs< / h2 > < / td > < / tr >
< tr class = "memitem:a6ba62eabfd5428644aabf89ddaa0128d" id = "r_a6ba62eabfd5428644aabf89ddaa0128d" > < td class = "memItemLeft" align = "right" valign = "top" > typedef void(*  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a6ba62eabfd5428644aabf89ddaa0128d" > RadixFunc< / a > ) (thread float2 *, thread float2 *)< / td > < / tr >
< tr class = "separator:a6ba62eabfd5428644aabf89ddaa0128d" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< / table > < table class = "memberdecls" >
< tr class = "heading" > < td colspan = "2" > < h2 class = "groupheader" > < a id = "func-members" name = "func-members" > < / a >
Functions< / h2 > < / td > < / tr >
< tr class = "memitem:a278d980ed397e6841ce0af44b9aa4396" id = "r_a278d980ed397e6841ce0af44b9aa4396" > < td class = "memTemplParams" colspan = "2" > template< int radix, < a class = "el" href = "#a6ba62eabfd5428644aabf89ddaa0128d" > RadixFunc< / a > radix_func> < / td > < / tr >
< tr class = "memitem:a278d980ed397e6841ce0af44b9aa4396" > < td class = "memTemplItemLeft" align = "right" valign = "top" > METAL_FUNC void  < / td > < td class = "memTemplItemRight" valign = "bottom" > < a class = "el" href = "#a278d980ed397e6841ce0af44b9aa4396" > radix_butterfly< / a > (int i, int p, thread float2 *x, thread short *indices, thread float2 *y)< / td > < / tr >
< tr class = "separator:a278d980ed397e6841ce0af44b9aa4396" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:aba8d32e0911499671df93678f39da08b" id = "r_aba8d32e0911499671df93678f39da08b" > < td class = "memTemplParams" colspan = "2" > template< int radix, < a class = "el" href = "#a6ba62eabfd5428644aabf89ddaa0128d" > RadixFunc< / a > radix_func> < / td > < / tr >
< tr class = "memitem:aba8d32e0911499671df93678f39da08b" > < td class = "memTemplItemLeft" align = "right" valign = "top" > METAL_FUNC void  < / td > < td class = "memTemplItemRight" valign = "bottom" > < a class = "el" href = "#aba8d32e0911499671df93678f39da08b" > radix_n_steps< / a > (int i, thread int *p, int m, int n, int num_steps, thread float2 *inputs, thread short *indices, thread float2 *values, threadgroup float2 *< a class = "el" href = "backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697" > buf< / a > )< / td > < / tr >
< tr class = "separator:aba8d32e0911499671df93678f39da08b" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a050ead8fa5cacdaec13d68ca3c0dcb81" id = "r_a050ead8fa5cacdaec13d68ca3c0dcb81" > < td class = "memTemplParams" colspan = "2" > template< bool rader = false> < / td > < / tr >
< tr class = "memitem:a050ead8fa5cacdaec13d68ca3c0dcb81" > < td class = "memTemplItemLeft" align = "right" valign = "top" > METAL_FUNC void  < / td > < td class = "memTemplItemRight" valign = "bottom" > < a class = "el" href = "#a050ead8fa5cacdaec13d68ca3c0dcb81" > perform_fft< / a > (int fft_idx, thread int *p, int m, int n, threadgroup float2 *< a class = "el" href = "backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697" > buf< / a > )< / td > < / tr >
< tr class = "separator:a050ead8fa5cacdaec13d68ca3c0dcb81" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a4010b0e151e5f01e610e9c32234458c7" id = "r_a4010b0e151e5f01e610e9c32234458c7" > < td class = "memTemplParams" colspan = "2" > template< int tg_mem_size, typename in_T , typename out_T > < / td > < / tr >
< tr class = "memitem:a4010b0e151e5f01e610e9c32234458c7" > < td class = "memTemplItemLeft" align = "right" valign = "top" > void  < / td > < td class = "memTemplItemRight" valign = "bottom" > < a class = "el" href = "#a4010b0e151e5f01e610e9c32234458c7" > fft< / a > (const device in_T *in, device out_T *out, constant const int & n, constant const int & batch_size, uint3 elem, uint3 grid)< / td > < / tr >
< tr class = "separator:a4010b0e151e5f01e610e9c32234458c7" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:ad123452303f6415904f3592f660769b8" id = "r_ad123452303f6415904f3592f660769b8" > < td class = "memTemplParams" colspan = "2" > template< int tg_mem_size, typename in_T , typename out_T > < / td > < / tr >
< tr class = "memitem:ad123452303f6415904f3592f660769b8" > < td class = "memTemplItemLeft" align = "right" valign = "top" > void  < / td > < td class = "memTemplItemRight" valign = "bottom" > < a class = "el" href = "#ad123452303f6415904f3592f660769b8" > rader_fft< / a > (const device in_T *in, device out_T *out, const device float2 *raders_b_q, const device short *raders_g_q, const device short *raders_g_minus_q, constant const int & n, constant const int & batch_size, constant const int & rader_n, uint3 elem, uint3 grid)< / td > < / tr >
< tr class = "separator:ad123452303f6415904f3592f660769b8" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a0abc609e9756475800e996775a96a87e" id = "r_a0abc609e9756475800e996775a96a87e" > < td class = "memTemplParams" colspan = "2" > template< int tg_mem_size, typename in_T , typename out_T > < / td > < / tr >
< tr class = "memitem:a0abc609e9756475800e996775a96a87e" > < td class = "memTemplItemLeft" align = "right" valign = "top" > void  < / td > < td class = "memTemplItemRight" valign = "bottom" > < a class = "el" href = "#a0abc609e9756475800e996775a96a87e" > bluestein_fft< / a > (const device in_T *in, device out_T *out, const device float2 *w_q, const device float2 *w_k, constant const int & length, constant const int & n, constant const int & batch_size, uint3 elem, uint3 grid)< / td > < / tr >
< tr class = "separator:a0abc609e9756475800e996775a96a87e" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a6558a8205ee4c3e4767bafa93f7606de" id = "r_a6558a8205ee4c3e4767bafa93f7606de" > < td class = "memTemplParams" colspan = "2" > template< int tg_mem_size, typename in_T , typename out_T , int step, bool real = false> < / td > < / tr >
< tr class = "memitem:a6558a8205ee4c3e4767bafa93f7606de" > < td class = "memTemplItemLeft" align = "right" valign = "top" > void  < / td > < td class = "memTemplItemRight" valign = "bottom" > < a class = "el" href = "#a6558a8205ee4c3e4767bafa93f7606de" > four_step_fft< / a > (const device in_T *in, device out_T *out, constant const int & n1, constant const int & n2, constant const int & batch_size, uint3 elem, uint3 grid)< / td > < / tr >
< tr class = "separator:a6558a8205ee4c3e4767bafa93f7606de" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< / table > < table class = "memberdecls" >
< tr class = "heading" > < td colspan = "2" > < h2 class = "groupheader" > < a id = "var-members" name = "var-members" > < / a >
Variables< / h2 > < / td > < / tr >
< tr class = "memitem:a7a83318497519ff3ff0141b7d511ed38" id = "r_a7a83318497519ff3ff0141b7d511ed38" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const bool  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a7a83318497519ff3ff0141b7d511ed38" > inv_< / a > < / td > < / tr >
< tr class = "separator:a7a83318497519ff3ff0141b7d511ed38" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a2a4df90e329b84ee6c1890ba7c265c9c" id = "r_a2a4df90e329b84ee6c1890ba7c265c9c" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const bool  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a2a4df90e329b84ee6c1890ba7c265c9c" > is_power_of_2_< / a > < / td > < / tr >
< tr class = "separator:a2a4df90e329b84ee6c1890ba7c265c9c" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:ad395c11e6f2aee72cd1928fba93a35a3" id = "r_ad395c11e6f2aee72cd1928fba93a35a3" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#ad395c11e6f2aee72cd1928fba93a35a3" > elems_per_thread_< / a > < / td > < / tr >
< tr class = "separator:ad395c11e6f2aee72cd1928fba93a35a3" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:ac309c77ef775a3ef13850c5287a86480" id = "r_ac309c77ef775a3ef13850c5287a86480" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#ac309c77ef775a3ef13850c5287a86480" > rader_m_< / a > < / td > < / tr >
< tr class = "separator:ac309c77ef775a3ef13850c5287a86480" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:abb079b86e89ca88ce13a179d9ec566af" id = "r_abb079b86e89ca88ce13a179d9ec566af" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#abb079b86e89ca88ce13a179d9ec566af" > radix_13_steps_< / a > < / td > < / tr >
< tr class = "separator:abb079b86e89ca88ce13a179d9ec566af" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a7cd17bff8bc567f71d4789ee31fa07f2" id = "r_a7cd17bff8bc567f71d4789ee31fa07f2" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a7cd17bff8bc567f71d4789ee31fa07f2" > radix_11_steps_< / a > < / td > < / tr >
< tr class = "separator:a7cd17bff8bc567f71d4789ee31fa07f2" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a3cb03a97a209ba1346375e720ee76177" id = "r_a3cb03a97a209ba1346375e720ee76177" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a3cb03a97a209ba1346375e720ee76177" > radix_8_steps_< / a > < / td > < / tr >
< tr class = "separator:a3cb03a97a209ba1346375e720ee76177" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a2145cc8ab4d07583a735317b3cf60d55" id = "r_a2145cc8ab4d07583a735317b3cf60d55" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a2145cc8ab4d07583a735317b3cf60d55" > radix_7_steps_< / a > < / td > < / tr >
< tr class = "separator:a2145cc8ab4d07583a735317b3cf60d55" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a2f7f7cc2423cfcd4998d1a2a0363c3e2" id = "r_a2f7f7cc2423cfcd4998d1a2a0363c3e2" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a2f7f7cc2423cfcd4998d1a2a0363c3e2" > radix_6_steps_< / a > < / td > < / tr >
< tr class = "separator:a2f7f7cc2423cfcd4998d1a2a0363c3e2" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a903d5239b5f73577c559e97ff910892d" id = "r_a903d5239b5f73577c559e97ff910892d" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a903d5239b5f73577c559e97ff910892d" > radix_5_steps_< / a > < / td > < / tr >
< tr class = "separator:a903d5239b5f73577c559e97ff910892d" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a12d99a846c3686806bab6c42148e1039" id = "r_a12d99a846c3686806bab6c42148e1039" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a12d99a846c3686806bab6c42148e1039" > radix_4_steps_< / a > < / td > < / tr >
< tr class = "separator:a12d99a846c3686806bab6c42148e1039" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a579123b7be825f08f3076287dded08e3" id = "r_a579123b7be825f08f3076287dded08e3" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a579123b7be825f08f3076287dded08e3" > radix_3_steps_< / a > < / td > < / tr >
< tr class = "separator:a579123b7be825f08f3076287dded08e3" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a53fdc660e99e6b5db6808bbd596cd374" id = "r_a53fdc660e99e6b5db6808bbd596cd374" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a53fdc660e99e6b5db6808bbd596cd374" > radix_2_steps_< / a > < / td > < / tr >
< tr class = "separator:a53fdc660e99e6b5db6808bbd596cd374" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a20d24f3e040d3d226a70d4dd7c9ac6a9" id = "r_a20d24f3e040d3d226a70d4dd7c9ac6a9" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a20d24f3e040d3d226a70d4dd7c9ac6a9" > rader_13_steps_< / a > < / td > < / tr >
< tr class = "separator:a20d24f3e040d3d226a70d4dd7c9ac6a9" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a1f3c377d05da52429172e64132dba750" id = "r_a1f3c377d05da52429172e64132dba750" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a1f3c377d05da52429172e64132dba750" > rader_11_steps_< / a > < / td > < / tr >
< tr class = "separator:a1f3c377d05da52429172e64132dba750" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:ac6123e111816dd62a11ccb86b66fa3e9" id = "r_ac6123e111816dd62a11ccb86b66fa3e9" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#ac6123e111816dd62a11ccb86b66fa3e9" > rader_8_steps_< / a > < / td > < / tr >
< tr class = "separator:ac6123e111816dd62a11ccb86b66fa3e9" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a0d437aef17faf8d9707ae7ffe68fdb30" id = "r_a0d437aef17faf8d9707ae7ffe68fdb30" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a0d437aef17faf8d9707ae7ffe68fdb30" > rader_7_steps_< / a > < / td > < / tr >
< tr class = "separator:a0d437aef17faf8d9707ae7ffe68fdb30" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a020469d1aca557ff1b49414f121dedbb" id = "r_a020469d1aca557ff1b49414f121dedbb" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a020469d1aca557ff1b49414f121dedbb" > rader_6_steps_< / a > < / td > < / tr >
< tr class = "separator:a020469d1aca557ff1b49414f121dedbb" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:afea05e9a7105bafbaafca25042f4d1b4" id = "r_afea05e9a7105bafbaafca25042f4d1b4" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#afea05e9a7105bafbaafca25042f4d1b4" > rader_5_steps_< / a > < / td > < / tr >
< tr class = "separator:afea05e9a7105bafbaafca25042f4d1b4" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:ac7c58404df0434d4f861db62d3471870" id = "r_ac7c58404df0434d4f861db62d3471870" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#ac7c58404df0434d4f861db62d3471870" > rader_4_steps_< / a > < / td > < / tr >
< tr class = "separator:ac7c58404df0434d4f861db62d3471870" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:adb129cc3808c08fd95af9795bfc7ae63" id = "r_adb129cc3808c08fd95af9795bfc7ae63" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#adb129cc3808c08fd95af9795bfc7ae63" > rader_3_steps_< / a > < / td > < / tr >
< tr class = "separator:adb129cc3808c08fd95af9795bfc7ae63" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< tr class = "memitem:a2d725bfd4c30be4c605b5c4559a62892" id = "r_a2d725bfd4c30be4c605b5c4559a62892" > < td class = "memItemLeft" align = "right" valign = "top" > static constant constexpr const int  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a2d725bfd4c30be4c605b5c4559a62892" > rader_2_steps_< / a > < / td > < / tr >
< tr class = "separator:a2d725bfd4c30be4c605b5c4559a62892" > < td class = "memSeparator" colspan = "2" >   < / td > < / tr >
< / table >
< h2 class = "groupheader" > Macro Definition Documentation< / h2 >
< a id = "a28d683cf067736d76f867f30c066317e" name = "a28d683cf067736d76f867f30c066317e" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a28d683cf067736d76f867f30c066317e" > ◆   < / a > < / span > MAX_OUTPUT_SIZE< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define MAX_OUTPUT_SIZE      18< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a7b6e56afa21f022c5e754b000955735a" name = "a7b6e56afa21f022c5e754b000955735a" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a7b6e56afa21f022c5e754b000955735a" > ◆   < / a > < / span > MAX_RADIX< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define MAX_RADIX      13< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a794032d3a9acff0e31c77c69d0007f10" name = "a794032d3a9acff0e31c77c69d0007f10" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a794032d3a9acff0e31c77c69d0007f10" > ◆   < / a > < / span > RADIX_STEP< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define RADIX_STEP< / td >
< td > (< / td >
< td class = "paramtype" > < / td > < td class = "paramname" > < span class = "paramname" > < em > radix< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > < / td > < td class = "paramname" > < span class = "paramname" > < em > < a class = "el" href = "metal_2kernels_2hadamard_8h.html#a590e5366adc78bab4fe44e37885d413f" > radix_func< / a > < / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > < / td > < td class = "paramname" > < span class = "paramname" > < em > num_steps< / em > < / span >   )< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< b > Value:< / b > < div class = "fragment" > < div class = "line" > < a class = "code hl_function" href = "#aba8d32e0911499671df93678f39da08b" > radix_n_steps< radix, radix_func> < / a > ( \< / div >
< div class = "line" > fft_idx, p, m, n, num_steps, inputs, indices, values, < a class = "code hl_variable" href = "backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697" > buf< / a > );< / div >
2024-10-26 04:23:45 +08:00
< div class = "ttc" id = "abackend_2metal_2allocator_8h_html_a15aa5cc1baf29be08d55cca88509e697" > < div class = "ttname" > < a href = "backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697" > buf< / a > < / div > < div class = "ttdeci" > MTL::Buffer * buf< / div > < div class = "ttdef" > < b > Definition< / b > allocator.h:39< / div > < / div >
2024-10-15 23:12:17 +08:00
< div class = "ttc" id = "abackend_2metal_2kernels_2fft_8h_html_aba8d32e0911499671df93678f39da08b" > < div class = "ttname" > < a href = "#aba8d32e0911499671df93678f39da08b" > radix_n_steps< / a > < / div > < div class = "ttdeci" > METAL_FUNC void radix_n_steps(int i, thread int *p, int m, int n, int num_steps, thread float2 *inputs, thread short *indices, thread float2 *values, threadgroup float2 *buf)< / div > < div class = "ttdef" > < b > Definition< / b > fft.h:100< / div > < / div >
< / div > <!-- fragment -->
< / div >
< / div >
< h2 class = "groupheader" > Typedef Documentation< / h2 >
< a id = "a6ba62eabfd5428644aabf89ddaa0128d" name = "a6ba62eabfd5428644aabf89ddaa0128d" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a6ba62eabfd5428644aabf89ddaa0128d" > ◆   < / a > < / span > RadixFunc< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > typedef void(* RadixFunc) (thread float2 *, thread float2 *)< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< h2 class = "groupheader" > Function Documentation< / h2 >
< a id = "a0abc609e9756475800e996775a96a87e" name = "a0abc609e9756475800e996775a96a87e" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a0abc609e9756475800e996775a96a87e" > ◆   < / a > < / span > bluestein_fft()< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< div class = "memtemplate" >
template< int tg_mem_size, typename in_T , typename out_T > < / div >
< table class = "memname" >
< tr >
< td class = "memname" > void bluestein_fft < / 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" > 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 device float2 *< / td > < td class = "paramname" > < span class = "paramname" > < em > w_q< / 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 > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > constant const int & < / td > < td class = "paramname" > < span class = "paramname" > < em > length< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > constant const int & < / td > < td class = "paramname" > < span class = "paramname" > < em > n< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > constant 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" > uint3< / td > < td class = "paramname" > < span class = "paramname" > < em > elem< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > uint3< / td > < td class = "paramname" > < span class = "paramname" > < em > grid< / em > < / span >   )< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a4010b0e151e5f01e610e9c32234458c7" name = "a4010b0e151e5f01e610e9c32234458c7" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a4010b0e151e5f01e610e9c32234458c7" > ◆   < / a > < / span > fft()< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< div class = "memtemplate" >
template< int tg_mem_size, typename in_T , typename out_T > < / div >
< table class = "memname" >
< tr >
< td class = "memname" > void fft < / 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" > 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" > constant const int & < / td > < td class = "paramname" > < span class = "paramname" > < em > n< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > constant 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" > uint3< / td > < td class = "paramname" > < span class = "paramname" > < em > elem< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > uint3< / td > < td class = "paramname" > < span class = "paramname" > < em > grid< / em > < / span >   )< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a6558a8205ee4c3e4767bafa93f7606de" name = "a6558a8205ee4c3e4767bafa93f7606de" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a6558a8205ee4c3e4767bafa93f7606de" > ◆   < / a > < / span > four_step_fft()< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< div class = "memtemplate" >
template< int tg_mem_size, typename in_T , typename out_T , int step, bool real = false> < / div >
< table class = "memname" >
< tr >
< td class = "memname" > void four_step_fft < / 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" > 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" > constant const int & < / td > < td class = "paramname" > < span class = "paramname" > < em > n1< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > constant const int & < / td > < td class = "paramname" > < span class = "paramname" > < em > n2< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > constant 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" > uint3< / td > < td class = "paramname" > < span class = "paramname" > < em > elem< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > uint3< / td > < td class = "paramname" > < span class = "paramname" > < em > grid< / em > < / span >   )< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a050ead8fa5cacdaec13d68ca3c0dcb81" name = "a050ead8fa5cacdaec13d68ca3c0dcb81" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a050ead8fa5cacdaec13d68ca3c0dcb81" > ◆   < / a > < / span > perform_fft()< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< div class = "memtemplate" >
template< bool rader = false> < / div >
< table class = "memname" >
< tr >
< td class = "memname" > METAL_FUNC void perform_fft < / td >
< td > (< / td >
< td class = "paramtype" > int< / td > < td class = "paramname" > < span class = "paramname" > < em > fft_idx< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > thread int *< / td > < td class = "paramname" > < span class = "paramname" > < em > p< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > int< / td > < td class = "paramname" > < span class = "paramname" > < em > m< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > int< / td > < td class = "paramname" > < span class = "paramname" > < em > n< / 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 >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "ad123452303f6415904f3592f660769b8" name = "ad123452303f6415904f3592f660769b8" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#ad123452303f6415904f3592f660769b8" > ◆   < / a > < / span > rader_fft()< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< div class = "memtemplate" >
template< int tg_mem_size, typename in_T , typename out_T > < / div >
< table class = "memname" >
< tr >
< td class = "memname" > void rader_fft < / 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" > 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 device float2 *< / td > < td class = "paramname" > < span class = "paramname" > < em > raders_b_q< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > const device short *< / td > < td class = "paramname" > < span class = "paramname" > < em > raders_g_q< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > const device short *< / td > < td class = "paramname" > < span class = "paramname" > < em > raders_g_minus_q< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > constant const int & < / td > < td class = "paramname" > < span class = "paramname" > < em > n< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > constant 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" > constant const int & < / td > < td class = "paramname" > < span class = "paramname" > < em > rader_n< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > uint3< / td > < td class = "paramname" > < span class = "paramname" > < em > elem< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > uint3< / td > < td class = "paramname" > < span class = "paramname" > < em > grid< / em > < / span >   )< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a278d980ed397e6841ce0af44b9aa4396" name = "a278d980ed397e6841ce0af44b9aa4396" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a278d980ed397e6841ce0af44b9aa4396" > ◆   < / a > < / span > radix_butterfly()< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< div class = "memtemplate" >
template< int radix, < a class = "el" href = "#a6ba62eabfd5428644aabf89ddaa0128d" > RadixFunc< / a > radix_func> < / div >
< table class = "memname" >
< tr >
< td class = "memname" > METAL_FUNC void radix_butterfly < / td >
< td > (< / td >
< td class = "paramtype" > int< / td > < td class = "paramname" > < span class = "paramname" > < em > i< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > int< / td > < td class = "paramname" > < span class = "paramname" > < em > p< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > thread float2 *< / td > < td class = "paramname" > < span class = "paramname" > < em > x< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > thread short *< / td > < td class = "paramname" > < span class = "paramname" > < em > indices< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > thread float2 *< / td > < td class = "paramname" > < span class = "paramname" > < em > y< / em > < / span >   )< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "aba8d32e0911499671df93678f39da08b" name = "aba8d32e0911499671df93678f39da08b" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#aba8d32e0911499671df93678f39da08b" > ◆   < / a > < / span > radix_n_steps()< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< div class = "memtemplate" >
template< int radix, < a class = "el" href = "#a6ba62eabfd5428644aabf89ddaa0128d" > RadixFunc< / a > radix_func> < / div >
< table class = "memname" >
< tr >
< td class = "memname" > METAL_FUNC void radix_n_steps < / td >
< td > (< / td >
< td class = "paramtype" > int< / td > < td class = "paramname" > < span class = "paramname" > < em > i< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > thread int *< / td > < td class = "paramname" > < span class = "paramname" > < em > p< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > int< / td > < td class = "paramname" > < span class = "paramname" > < em > m< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > int< / td > < td class = "paramname" > < span class = "paramname" > < em > n< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > int< / td > < td class = "paramname" > < span class = "paramname" > < em > num_steps< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > thread float2 *< / td > < td class = "paramname" > < span class = "paramname" > < em > inputs< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > thread short *< / td > < td class = "paramname" > < span class = "paramname" > < em > indices< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > thread float2 *< / td > < td class = "paramname" > < span class = "paramname" > < em > values< / 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 >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< h2 class = "groupheader" > Variable Documentation< / h2 >
< a id = "ad395c11e6f2aee72cd1928fba93a35a3" name = "ad395c11e6f2aee72cd1928fba93a35a3" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#ad395c11e6f2aee72cd1928fba93a35a3" > ◆   < / a > < / span > elems_per_thread_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int elems_per_thread_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a7a83318497519ff3ff0141b7d511ed38" name = "a7a83318497519ff3ff0141b7d511ed38" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a7a83318497519ff3ff0141b7d511ed38" > ◆   < / a > < / span > inv_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const bool inv_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a2a4df90e329b84ee6c1890ba7c265c9c" name = "a2a4df90e329b84ee6c1890ba7c265c9c" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a2a4df90e329b84ee6c1890ba7c265c9c" > ◆   < / a > < / span > is_power_of_2_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const bool is_power_of_2_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a1f3c377d05da52429172e64132dba750" name = "a1f3c377d05da52429172e64132dba750" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a1f3c377d05da52429172e64132dba750" > ◆   < / a > < / span > rader_11_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_11_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a20d24f3e040d3d226a70d4dd7c9ac6a9" name = "a20d24f3e040d3d226a70d4dd7c9ac6a9" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a20d24f3e040d3d226a70d4dd7c9ac6a9" > ◆   < / a > < / span > rader_13_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_13_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a2d725bfd4c30be4c605b5c4559a62892" name = "a2d725bfd4c30be4c605b5c4559a62892" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a2d725bfd4c30be4c605b5c4559a62892" > ◆   < / a > < / span > rader_2_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_2_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "adb129cc3808c08fd95af9795bfc7ae63" name = "adb129cc3808c08fd95af9795bfc7ae63" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#adb129cc3808c08fd95af9795bfc7ae63" > ◆   < / a > < / span > rader_3_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_3_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "ac7c58404df0434d4f861db62d3471870" name = "ac7c58404df0434d4f861db62d3471870" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#ac7c58404df0434d4f861db62d3471870" > ◆   < / a > < / span > rader_4_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_4_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "afea05e9a7105bafbaafca25042f4d1b4" name = "afea05e9a7105bafbaafca25042f4d1b4" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#afea05e9a7105bafbaafca25042f4d1b4" > ◆   < / a > < / span > rader_5_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_5_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a020469d1aca557ff1b49414f121dedbb" name = "a020469d1aca557ff1b49414f121dedbb" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a020469d1aca557ff1b49414f121dedbb" > ◆   < / a > < / span > rader_6_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_6_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a0d437aef17faf8d9707ae7ffe68fdb30" name = "a0d437aef17faf8d9707ae7ffe68fdb30" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a0d437aef17faf8d9707ae7ffe68fdb30" > ◆   < / a > < / span > rader_7_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_7_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "ac6123e111816dd62a11ccb86b66fa3e9" name = "ac6123e111816dd62a11ccb86b66fa3e9" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#ac6123e111816dd62a11ccb86b66fa3e9" > ◆   < / a > < / span > rader_8_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_8_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "ac309c77ef775a3ef13850c5287a86480" name = "ac309c77ef775a3ef13850c5287a86480" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#ac309c77ef775a3ef13850c5287a86480" > ◆   < / a > < / span > rader_m_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int rader_m_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a7cd17bff8bc567f71d4789ee31fa07f2" name = "a7cd17bff8bc567f71d4789ee31fa07f2" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a7cd17bff8bc567f71d4789ee31fa07f2" > ◆   < / a > < / span > radix_11_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int radix_11_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "abb079b86e89ca88ce13a179d9ec566af" name = "abb079b86e89ca88ce13a179d9ec566af" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#abb079b86e89ca88ce13a179d9ec566af" > ◆   < / a > < / span > radix_13_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int radix_13_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a53fdc660e99e6b5db6808bbd596cd374" name = "a53fdc660e99e6b5db6808bbd596cd374" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a53fdc660e99e6b5db6808bbd596cd374" > ◆   < / a > < / span > radix_2_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int radix_2_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a579123b7be825f08f3076287dded08e3" name = "a579123b7be825f08f3076287dded08e3" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a579123b7be825f08f3076287dded08e3" > ◆   < / a > < / span > radix_3_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int radix_3_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a12d99a846c3686806bab6c42148e1039" name = "a12d99a846c3686806bab6c42148e1039" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a12d99a846c3686806bab6c42148e1039" > ◆   < / a > < / span > radix_4_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int radix_4_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a903d5239b5f73577c559e97ff910892d" name = "a903d5239b5f73577c559e97ff910892d" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a903d5239b5f73577c559e97ff910892d" > ◆   < / a > < / span > radix_5_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int radix_5_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a2f7f7cc2423cfcd4998d1a2a0363c3e2" name = "a2f7f7cc2423cfcd4998d1a2a0363c3e2" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a2f7f7cc2423cfcd4998d1a2a0363c3e2" > ◆   < / a > < / span > radix_6_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int radix_6_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a2145cc8ab4d07583a735317b3cf60d55" name = "a2145cc8ab4d07583a735317b3cf60d55" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a2145cc8ab4d07583a735317b3cf60d55" > ◆   < / a > < / span > radix_7_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int radix_7_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "a3cb03a97a209ba1346375e720ee76177" name = "a3cb03a97a209ba1346375e720ee76177" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a3cb03a97a209ba1346375e720ee76177" > ◆   < / a > < / span > radix_8_steps_< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > constant constexpr const int radix_8_steps_< / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel" > static< / span > < span class = "mlabel" > constexpr< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< / div > <!-- contents -->
<!-- start footer part -->
< hr class = "footer" / > < address class = "footer" > < small >
Generated by  < a href = "https://www.doxygen.org/index.html" > < img class = "footer" src = "doxygen.svg" width = "104" height = "31" alt = "doxygen" / > < / a > 1.12.0
< / small > < / address >
< / div > <!-- doc - content -->
< / body >
< / html >