This commit is contained in:
CircleCI Docs
2024-10-25 20:23:45 +00:00
parent 57e53f85ee
commit 73830de153
717 changed files with 33254 additions and 34561 deletions

View File

@@ -139,41 +139,49 @@ $(function(){ initResizable(false); });
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">const</span> std::vector&lt;int&gt;&amp; shape,</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">const</span> std::vector&lt;size_t&gt;&amp; strides);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="foldopen" id="foldopen00045" data-start="{" data-end="}">
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27"> 45</a></span><span class="keyword">inline</span> NS::String* <a class="code hl_function" href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27">make_string</a>(std::ostringstream&amp; os) {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> std::string <span class="keywordtype">string</span> = os.str();</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> NS::String::string(<span class="keywordtype">string</span>.c_str(), NS::UTF8StringEncoding);</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>}</div>
</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="foldopen" id="foldopen00050" data-start="{" data-end="}">
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="namespacemlx_1_1core.html#a79817d2432e782e596c9c49a08b93be2"> 50</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a79817d2432e782e596c9c49a08b93be2">debug_set_stream_queue_label</a>(MTL::CommandQueue* queue, <span class="keywordtype">int</span> index) {</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="preprocessor">#ifdef MLX_METAL_DEBUG</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> std::ostringstream label;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> label &lt;&lt; <span class="stringliteral">&quot;Stream &quot;</span> &lt;&lt; index;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> queue-&gt;setLabel(<a class="code hl_function" href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27">make_string</a>(label));</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">// Same as above but we do an implicit division with divisor.</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">// Basically, equivalent to factorizing</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">// Prod(s \forall s in shape if strides[s] &gt; 0) / divisor.</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="namespacemlx_1_1core.html#a187b9a932c7b3d67ee42d9d12fcb1bb1"> 48</a></span>MTL::Size <a class="code hl_function" href="namespacemlx_1_1core.html#a8dc169474a51a1f4f761d5752819bd7c">get_2d_grid_dims</a>(</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">const</span> std::vector&lt;int&gt;&amp; shape,</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">const</span> std::vector&lt;size_t&gt;&amp; strides,</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">size_t</span> divisor);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="foldopen" id="foldopen00053" data-start="{" data-end="}">
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27"> 53</a></span><span class="keyword">inline</span> NS::String* <a class="code hl_function" href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27">make_string</a>(std::ostringstream&amp; os) {</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> std::string <span class="keywordtype">string</span> = os.str();</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">return</span> NS::String::string(<span class="keywordtype">string</span>.c_str(), NS::UTF8StringEncoding);</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span>}</div>
</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="foldopen" id="foldopen00058" data-start="{" data-end="}">
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="namespacemlx_1_1core.html#a489e45b3a5cd8b46e8ea56b9132eb230"> 58</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a489e45b3a5cd8b46e8ea56b9132eb230">debug_set_primitive_buffer_label</a>(</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> MTL::CommandBuffer* command_buffer,</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>&amp; primitive) {</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="preprocessor">#ifdef MLX_METAL_DEBUG</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> std::ostringstream label;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> cbuf_label = command_buffer-&gt;label(); cbuf_label) {</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> label &lt;&lt; cbuf_label-&gt;utf8String();</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> }</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> primitive.<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#ae1aff91354ce036596088a3e19474ecb">print</a>(label);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> command_buffer-&gt;setLabel(<a class="code hl_function" href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27">make_string</a>(label));</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>}</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="namespacemlx_1_1core.html#a79817d2432e782e596c9c49a08b93be2"> 58</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a79817d2432e782e596c9c49a08b93be2">debug_set_stream_queue_label</a>(MTL::CommandQueue* queue, <span class="keywordtype">int</span> index) {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="preprocessor">#ifdef MLX_METAL_DEBUG</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> std::ostringstream label;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> label &lt;&lt; <span class="stringliteral">&quot;Stream &quot;</span> &lt;&lt; index;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> queue-&gt;setLabel(<a class="code hl_function" href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27">make_string</a>(label));</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>}</div>
</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="namespacemlx_1_1core.html#ad4be35b310a252edd80d9cf04f094a60"> 71</a></span>std::string <a class="code hl_function" href="namespacemlx_1_1core.html#ad4be35b310a252edd80d9cf04f094a60">get_primitive_string</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>* primitive);</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span>} <span class="comment">// namespace mlx::core</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="foldopen" id="foldopen00066" data-start="{" data-end="}">
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="namespacemlx_1_1core.html#a489e45b3a5cd8b46e8ea56b9132eb230"> 66</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="namespacemlx_1_1core.html#a489e45b3a5cd8b46e8ea56b9132eb230">debug_set_primitive_buffer_label</a>(</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> MTL::CommandBuffer* command_buffer,</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>&amp; primitive) {</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="preprocessor">#ifdef MLX_METAL_DEBUG</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> std::ostringstream label;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> cbuf_label = command_buffer-&gt;label(); cbuf_label) {</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> label &lt;&lt; cbuf_label-&gt;utf8String();</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> }</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> primitive.<a class="code hl_function" href="classmlx_1_1core_1_1_primitive.html#ae1aff91354ce036596088a3e19474ecb">print</a>(label);</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> command_buffer-&gt;setLabel(<a class="code hl_function" href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27">make_string</a>(label));</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span>}</div>
</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="namespacemlx_1_1core.html#ad4be35b310a252edd80d9cf04f094a60"> 79</a></span>std::string <a class="code hl_function" href="namespacemlx_1_1core.html#ad4be35b310a252edd80d9cf04f094a60">get_primitive_string</a>(<a class="code hl_class" href="classmlx_1_1core_1_1_primitive.html">Primitive</a>* primitive);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span>} <span class="comment">// namespace mlx::core</span></div>
<div class="ttc" id="aarray_8h_html"><div class="ttname"><a href="array_8h.html">array.h</a></div></div>
<div class="ttc" id="abackend_2metal_2device_8h_html"><div class="ttname"><a href="backend_2metal_2device_8h.html">device.h</a></div></div>
<div class="ttc" id="aclassmlx_1_1core_1_1_primitive_html"><div class="ttname"><a href="classmlx_1_1core_1_1_primitive.html">mlx::core::Primitive</a></div><div class="ttdef"><b>Definition</b> primitives.h:48</div></div>
@@ -181,12 +189,12 @@ $(function(){ initResizable(false); });
<div class="ttc" id="aclassmlx_1_1core_1_1array_html"><div class="ttname"><a href="classmlx_1_1core_1_1array.html">mlx::core::array</a></div><div class="ttdef"><b>Definition</b> array.h:20</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html"><div class="ttname"><a href="namespacemlx_1_1core.html">mlx::core</a></div><div class="ttdef"><b>Definition</b> allocator.h:7</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_a0f0f59d3ffe2d16a684e5fc093302e15"><div class="ttname"><a href="namespacemlx_1_1core.html#a0f0f59d3ffe2d16a684e5fc093302e15">mlx::core::get_block_dims</a></div><div class="ttdeci">MTL::Size get_block_dims(int dim0, int dim1, int dim2, int pow2=10)</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_a489e45b3a5cd8b46e8ea56b9132eb230"><div class="ttname"><a href="namespacemlx_1_1core.html#a489e45b3a5cd8b46e8ea56b9132eb230">mlx::core::debug_set_primitive_buffer_label</a></div><div class="ttdeci">void debug_set_primitive_buffer_label(MTL::CommandBuffer *command_buffer, Primitive &amp;primitive)</div><div class="ttdef"><b>Definition</b> utils.h:58</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_a489e45b3a5cd8b46e8ea56b9132eb230"><div class="ttname"><a href="namespacemlx_1_1core.html#a489e45b3a5cd8b46e8ea56b9132eb230">mlx::core::debug_set_primitive_buffer_label</a></div><div class="ttdeci">void debug_set_primitive_buffer_label(MTL::CommandBuffer *command_buffer, Primitive &amp;primitive)</div><div class="ttdef"><b>Definition</b> utils.h:66</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_a62340bbaa8b216539688a60adcb568bf"><div class="ttname"><a href="namespacemlx_1_1core.html#a62340bbaa8b216539688a60adcb568bf">mlx::core::set_vector_bytes</a></div><div class="ttdeci">void set_vector_bytes(CommandEncoder &amp;enc, const std::vector&lt; T &gt; &amp;vec, size_t nelems, int idx)</div><div class="ttdef"><b>Definition</b> utils.h:14</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_a79817d2432e782e596c9c49a08b93be2"><div class="ttname"><a href="namespacemlx_1_1core.html#a79817d2432e782e596c9c49a08b93be2">mlx::core::debug_set_stream_queue_label</a></div><div class="ttdeci">void debug_set_stream_queue_label(MTL::CommandQueue *queue, int index)</div><div class="ttdef"><b>Definition</b> utils.h:50</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_a79817d2432e782e596c9c49a08b93be2"><div class="ttname"><a href="namespacemlx_1_1core.html#a79817d2432e782e596c9c49a08b93be2">mlx::core::debug_set_stream_queue_label</a></div><div class="ttdeci">void debug_set_stream_queue_label(MTL::CommandQueue *queue, int index)</div><div class="ttdef"><b>Definition</b> utils.h:58</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_a8dc169474a51a1f4f761d5752819bd7c"><div class="ttname"><a href="namespacemlx_1_1core.html#a8dc169474a51a1f4f761d5752819bd7c">mlx::core::get_2d_grid_dims</a></div><div class="ttdeci">MTL::Size get_2d_grid_dims(const std::vector&lt; int &gt; &amp;shape, const std::vector&lt; size_t &gt; &amp;strides)</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_ad4be35b310a252edd80d9cf04f094a60"><div class="ttname"><a href="namespacemlx_1_1core.html#ad4be35b310a252edd80d9cf04f094a60">mlx::core::get_primitive_string</a></div><div class="ttdeci">std::string get_primitive_string(Primitive *primitive)</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_aed148d95e7b5221f1312473deded0d27"><div class="ttname"><a href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27">mlx::core::make_string</a></div><div class="ttdeci">NS::String * make_string(std::ostringstream &amp;os)</div><div class="ttdef"><b>Definition</b> utils.h:45</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_aed148d95e7b5221f1312473deded0d27"><div class="ttname"><a href="namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27">mlx::core::make_string</a></div><div class="ttdeci">NS::String * make_string(std::ostringstream &amp;os)</div><div class="ttdef"><b>Definition</b> utils.h:53</div></div>
<div class="ttc" id="anamespacemlx_1_1core_html_af1fdfdaa5644394362e6baba30701bae"><div class="ttname"><a href="namespacemlx_1_1core.html#af1fdfdaa5644394362e6baba30701bae">mlx::core::type_to_name</a></div><div class="ttdeci">std::string type_to_name(const array &amp;a)</div></div>
<div class="ttc" id="aprimitives_8h_html"><div class="ttname"><a href="primitives_8h.html">primitives.h</a></div></div>
<div class="ttc" id="astructmlx_1_1core_1_1metal_1_1_command_encoder_html"><div class="ttname"><a href="structmlx_1_1core_1_1metal_1_1_command_encoder.html">mlx::core::metal::CommandEncoder</a></div><div class="ttdef"><b>Definition</b> device.h:41</div></div>