Skip to content

Commit 97dc772

Browse files
author
Documenter.jl
committed
build based on 20918b1
1 parent 7f63618 commit 97dc772

File tree

23 files changed

+31
-31
lines changed

23 files changed

+31
-31
lines changed

dev/.documenter-siteinfo.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"documenter":{"julia_version":"1.12.0","generation_timestamp":"2025-10-08T06:31:49","documenter_version":"1.14.1"}}
1+
{"documenter":{"julia_version":"1.12.0","generation_timestamp":"2025-10-08T07:20:26","documenter_version":"1.14.1"}}

dev/api/index.html

Lines changed: 9 additions & 9 deletions
Large diffs are not rendered by default.

dev/devdocs/constructing_loopsets/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,4 @@
3030
var"##264" = Base.broadcasted(f, var"##263")
3131
var"##265" = Base.broadcasted(/, var"##264", d)
3232
var"##266" = LoopVectorization.vmaterialize(var"##265", Val{:Main}())
33-
end</code></pre><p>These nested broadcasted objects already express information very similar to what the <code>LoopSet</code> objects hold. The dimensionality of the objects provides the information on the associated loop dependencies, but again this information is available only when the method is compiled for specific types. The <code>@generated</code> function <code>vmaterialize</code> constructs the LoopSet by recursively evaluating <a href="https://github.com/JuliaSIMD/LoopVectorization.jl/blob/master/src/broadcast.jl#L166">add_broadcast!</a> on all the fields.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../loopset_structure/">« LoopSet Structure</a><a class="docs-footer-nextpage" href="../evaluating_loops/">Determining the strategy for evaluating loops »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.14.1 on <span class="colophon-date" title="Wednesday 8 October 2025 06:31">Wednesday 8 October 2025</span>. Using Julia version 1.12.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
33+
end</code></pre><p>These nested broadcasted objects already express information very similar to what the <code>LoopSet</code> objects hold. The dimensionality of the objects provides the information on the associated loop dependencies, but again this information is available only when the method is compiled for specific types. The <code>@generated</code> function <code>vmaterialize</code> constructs the LoopSet by recursively evaluating <a href="https://github.com/JuliaSIMD/LoopVectorization.jl/blob/master/src/broadcast.jl#L166">add_broadcast!</a> on all the fields.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../loopset_structure/">« LoopSet Structure</a><a class="docs-footer-nextpage" href="../evaluating_loops/">Determining the strategy for evaluating loops »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.14.1 on <span class="colophon-date" title="Wednesday 8 October 2025 07:20">Wednesday 8 October 2025</span>. Using Julia version 1.12.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>

dev/devdocs/evaluating_loops/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

dev/devdocs/loopset_structure/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@
3232
var&quot;##tempload#258&quot; = A[m, k]
3333
var&quot;##tempload#259&quot; = B[k, n]
3434
var&quot;##reduction#260&quot; = var&quot;##reductzero#261&quot;</code></pre><p>References to arrays are represented with an <code>ArrayReferenceMeta</code> data structure:</p><pre><code class="language-julia hljs">julia&gt; LoopVectorization.operations(lsAmulB)[3].ref
35-
LoopVectorization.ArrayReferenceMeta(LoopVectorization.ArrayReference(:A, [:m, :k], Int8[0, 0]), Bool[1, 1], Symbol(&quot;##vptr##_A&quot;))</code></pre><p>It contains the name of the parent array (<code>:A</code>), the indices <code>[:m,:k]</code>, and a boolean vector (<code>Bool[1, 1]</code>) indicating whether these indices are loop iterables. Note that the optimizer assumes arrays are column-major, and thus that it is efficient to read contiguous elements from the first index. In lower level terms, it means that <a href="https://www.felixcloutier.com/x86/movupd">high-throughput vmov</a> instructions can be used rather than <a href="https://www.felixcloutier.com/x86/vgatherdpd:vgatherqpd">low-throughput</a> <a href="https://www.felixcloutier.com/x86/vgatherqps:vgatherqpd">gathers</a>. Similar story for storing elements. When no axis has unit stride, the first given index will be the dummy <code>Symbol(&quot;##DISCONTIGUOUSSUBARRAY##&quot;)</code>.</p><div class="admonition is-warning" id="Warning-1f885d140c62c44c"><header class="admonition-header">Warning<a class="admonition-anchor" href="#Warning-1f885d140c62c44c" title="Permalink"></a></header><div class="admonition-body"><p>Currently, only single return values are supported (tuple destructuring is not supported in assignments).</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../overview/">« Developer Overview</a><a class="docs-footer-nextpage" href="../constructing_loopsets/">Constructing LoopSets »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.14.1 on <span class="colophon-date" title="Wednesday 8 October 2025 06:31">Wednesday 8 October 2025</span>. Using Julia version 1.12.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
35+
LoopVectorization.ArrayReferenceMeta(LoopVectorization.ArrayReference(:A, [:m, :k], Int8[0, 0]), Bool[1, 1], Symbol(&quot;##vptr##_A&quot;))</code></pre><p>It contains the name of the parent array (<code>:A</code>), the indices <code>[:m,:k]</code>, and a boolean vector (<code>Bool[1, 1]</code>) indicating whether these indices are loop iterables. Note that the optimizer assumes arrays are column-major, and thus that it is efficient to read contiguous elements from the first index. In lower level terms, it means that <a href="https://www.felixcloutier.com/x86/movupd">high-throughput vmov</a> instructions can be used rather than <a href="https://www.felixcloutier.com/x86/vgatherdpd:vgatherqpd">low-throughput</a> <a href="https://www.felixcloutier.com/x86/vgatherqps:vgatherqpd">gathers</a>. Similar story for storing elements. When no axis has unit stride, the first given index will be the dummy <code>Symbol(&quot;##DISCONTIGUOUSSUBARRAY##&quot;)</code>.</p><div class="admonition is-warning" id="Warning-1f885d140c62c44c"><header class="admonition-header">Warning<a class="admonition-anchor" href="#Warning-1f885d140c62c44c" title="Permalink"></a></header><div class="admonition-body"><p>Currently, only single return values are supported (tuple destructuring is not supported in assignments).</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../overview/">« Developer Overview</a><a class="docs-footer-nextpage" href="../constructing_loopsets/">Constructing LoopSets »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.14.1 on <span class="colophon-date" title="Wednesday 8 October 2025 07:20">Wednesday 8 October 2025</span>. Using Julia version 1.12.0.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>

dev/devdocs/lowering/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

dev/devdocs/overview/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)