y_gpu = A * x_gpu # Returns VectorMPI{Float32, MtlVector{Float32}}</code></pre><h3 id="Supported-GPU-Operations"><a class="docs-heading-anchor" href="#Supported-GPU-Operations">Supported GPU Operations</a><a id="Supported-GPU-Operations-1"></a><a class="docs-heading-anchor-permalink" href="#Supported-GPU-Operations" title="Permalink"></a></h3><table><tr><th style="text-align: right">Operation</th><th style="text-align: right">GPU Support</th></tr><tr><td style="text-align: right"><code>v + w</code>, <code>v - w</code></td><td style="text-align: right">Native GPU</td></tr><tr><td style="text-align: right"><code>α * v</code> (scalar)</td><td style="text-align: right">Native GPU</td></tr><tr><td style="text-align: right"><code>A * x</code> (sparse)</td><td style="text-align: right">CPU staging</td></tr><tr><td style="text-align: right"><code>A * x</code> (dense)</td><td style="text-align: right">CPU staging</td></tr><tr><td style="text-align: right"><code>transpose(A) * x</code></td><td style="text-align: right">CPU staging</td></tr><tr><td style="text-align: right">Broadcasting (<code>abs.(v)</code>)</td><td style="text-align: right">Native GPU</td></tr></table><h3 id="Element-Types"><a class="docs-heading-anchor" href="#Element-Types">Element Types</a><a id="Element-Types-1"></a><a class="docs-heading-anchor-permalink" href="#Element-Types" title="Permalink"></a></h3><p>Metal requires <code>Float32</code> - it does not support <code>Float64</code>.</p><h2 id="Cache-Management"><a class="docs-heading-anchor" href="#Cache-Management">Cache Management</a><a id="Cache-Management-1"></a><a class="docs-heading-anchor-permalink" href="#Cache-Management" title="Permalink"></a></h2><p>LinearAlgebraMPI caches communication plans for efficiency. Clear caches when needed:</p><pre><code class="language-julia hljs">clear_plan_cache!() # Clears all plan caches including MUMPS analysis cache</code></pre><h2 id="MPI-Collective-Operations"><a class="docs-heading-anchor" href="#MPI-Collective-Operations">MPI Collective Operations</a><a id="MPI-Collective-Operations-1"></a><a class="docs-heading-anchor-permalink" href="#MPI-Collective-Operations" title="Permalink"></a></h2><div class="admonition is-warning" id="All-Operations-Are-Collective-1bb7003cbb73574d"><header class="admonition-header">All Operations Are Collective<a class="admonition-anchor" href="#All-Operations-Are-Collective-1bb7003cbb73574d" title="Permalink"></a></header><div class="admonition-body"><p>Most LinearAlgebraMPI functions are MPI collective operations. All ranks must:</p><ul><li>Call the function together</li><li>Use the same parameters</li><li>Avoid conditional execution based on rank</li></ul></div></div><p><strong>Correct:</strong></p><pre><code class="language-julia hljs"># All ranks execute this together
0 commit comments