Skip to content

Commit e68437d

Browse files
author
Documenter.jl
committed
build based on abbd9ba
1 parent 279cde7 commit e68437d

File tree

10 files changed

+28
-28
lines changed

10 files changed

+28
-28
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.11.6","generation_timestamp":"2025-07-28T13:27:49","documenter_version":"1.14.1"}}
1+
{"documenter":{"julia_version":"1.11.6","generation_timestamp":"2025-07-28T23:14:47","documenter_version":"1.14.1"}}

dev/index.html

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

dev/index/index.html

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

dev/man/autodiff/index.html

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

dev/man/backends/index.html

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

dev/man/functions/index.html

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

dev/man/implementation/index.html

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

dev/man/indexnotation/index.html

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

dev/man/interface/index.html

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

dev/man/precompilation/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<!DOCTYPE html>
22
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Precompilation · TensorOperations.jl</title><meta name="title" content="Precompilation · TensorOperations.jl"/><meta property="og:title" content="Precompilation · TensorOperations.jl"/><meta property="twitter:title" content="Precompilation · TensorOperations.jl"/><meta name="description" content="Documentation for TensorOperations.jl."/><meta property="og:description" content="Documentation for TensorOperations.jl."/><meta property="twitter:description" content="Documentation for TensorOperations.jl."/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img class="docs-light-only" src="../../assets/logo.svg" alt="TensorOperations.jl logo"/><img class="docs-dark-only" src="../../assets/logo-dark.svg" alt="TensorOperations.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">TensorOperations.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><span class="tocitem">Manual</span><ul><li><a class="tocitem" href="../indexnotation/">Index notation with macros</a></li><li><a class="tocitem" href="../functions/">Functions</a></li><li><a class="tocitem" href="../interface/">Interface</a></li><li><a class="tocitem" href="../backends/">Backends and Allocators</a></li><li><a class="tocitem" href="../autodiff/">Automatic differentiation</a></li><li><a class="tocitem" href="../implementation/">Implementation</a></li><li class="is-active"><a class="tocitem" href>Precompilation</a><ul class="internal"><li><a class="tocitem" href="#Defaults"><span>Defaults</span></a></li><li><a class="tocitem" href="#Custom-settings"><span>Custom settings</span></a></li></ul></li></ul></li><li><a class="tocitem" href="../../index/">Index</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Manual</a></li><li class="is-active"><a href>Precompilation</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Precompilation</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Jutho/TensorOperations.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Jutho/TensorOperations.jl/blob/master/docs/src/man/precompilation.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Precompilation"><a class="docs-heading-anchor" href="#Precompilation">Precompilation</a><a id="Precompilation-1"></a><a class="docs-heading-anchor-permalink" href="#Precompilation" title="Permalink"></a></h1><p>TensorOperations.jl has some support for precompiling commonly called functions. The guiding philosophy is that often, tensor contractions are (part of) the bottlenecks of typical workflows, and as such we want to maximize performance. As a result, we are choosing to specialize many functions which may lead to a rather large time-to-first-execution (TTFX). In order to mitigate this, some of that work can be moved to precompile-time, avoiding the need to re-compile these specializations for every fresh Julia session.</p><p>Nevertheless, TensorOperations is designed to work with a large variety of input types, and simply enumerating all of these tends to lead to prohibitively large precompilation times, as well as large system images. Therefore, there is some customization possible to tweak the desired level of precompilation, trading in faster precompile times for fast TTFX for a wider range of inputs.</p><div class="admonition is-compat" id="TensorOperations-v5.2.0-ae46ca5937b6ae52"><header class="admonition-header">TensorOperations v5.2.0<a class="admonition-anchor" href="#TensorOperations-v5.2.0-ae46ca5937b6ae52" title="Permalink"></a></header><div class="admonition-body"><p>Precompilation support requires at least TensorOperations v5.2.0.</p></div></div><h2 id="Defaults"><a class="docs-heading-anchor" href="#Defaults">Defaults</a><a id="Defaults-1"></a><a class="docs-heading-anchor-permalink" href="#Defaults" title="Permalink"></a></h2><p>By default, precompilation is disabled, but can be enabled for &quot;tensors&quot; of type <code>Array{T,N}</code>, where <code>T</code> and <code>N</code> range over the following values:</p><ul><li><code>T</code> is either <code>Float64</code> or <code>ComplexF64</code></li><li><code>tensoradd!</code> is precompiled up to <code>N = 5</code></li><li><code>tensortrace!</code> is precompiled up to <code>4</code> free output indices and <code>2</code> pairs of traced indices</li><li><code>tensorcontract!</code> is precompiled up to <code>3</code> free output indices on both inputs, and <code>2</code> contracted indices</li></ul><p>To enable precompilation with these default settings, you can <em>locally</em> change the <code>&quot;precompile_workload&quot;</code> key in the preferences.</p><pre><code class="language-julia hljs">using TensorOperations, Preferences
33
set_preferences!(TensorOperations, &quot;precompile_workload&quot; =&gt; true; force=true)</code></pre><h2 id="Custom-settings"><a class="docs-heading-anchor" href="#Custom-settings">Custom settings</a><a id="Custom-settings-1"></a><a class="docs-heading-anchor-permalink" href="#Custom-settings" title="Permalink"></a></h2><p>The default precompilation settings can be tweaked to allow for more or less expansive coverage. This is achieved through a combination of <code>PrecompileTools</code>- and <code>Preferences</code>-based functionality.</p><pre><code class="language-julia hljs">using TensorOperations, Preferences
4-
set_preferences!(TensorOperations, &quot;setting&quot; =&gt; value; force=true)</code></pre><p>Here <strong>setting</strong> and <strong>value</strong> can take on the following:</p><ul><li><code>&quot;precomple_eltypes&quot;</code>: a <code>Vector{String}</code> that evaluate to the desired values of <code>T&lt;:Number</code></li><li><code>&quot;precompile_add_ndims&quot;</code>: an <code>Int</code> to specify the maximum <code>N</code> for <code>tensoradd!</code></li><li><code>&quot;precompile_trace_ndims&quot;</code>: a <code>Vector{Int}</code> of length 2 to specify the maximal number of free and traced indices for <code>tensortrace!</code>.</li><li><code>&quot;precompile_contract_ndims&quot;</code>: a <code>Vector{Int}</code> of length 2 to specify the maximal number of free and contracted indices for <code>tensorcontract!</code>.</li></ul><div class="admonition is-info" id="Backends-fed6a8d5ef6b1cbf"><header class="admonition-header">Backends<a class="admonition-anchor" href="#Backends-fed6a8d5ef6b1cbf" title="Permalink"></a></header><div class="admonition-body"><p>Currently, there is no support for precompiling methods that do not use the default backend. If this is a feature you would find useful, feel free to contact us or open an issue.</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../implementation/">« Implementation</a><a class="docs-footer-nextpage" href="../../index/">Index »</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="Monday 28 July 2025 13:27">Monday 28 July 2025</span>. Using Julia version 1.11.6.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
4+
set_preferences!(TensorOperations, &quot;setting&quot; =&gt; value; force=true)</code></pre><p>Here <strong>setting</strong> and <strong>value</strong> can take on the following:</p><ul><li><code>&quot;precomple_eltypes&quot;</code>: a <code>Vector{String}</code> that evaluate to the desired values of <code>T&lt;:Number</code></li><li><code>&quot;precompile_add_ndims&quot;</code>: an <code>Int</code> to specify the maximum <code>N</code> for <code>tensoradd!</code></li><li><code>&quot;precompile_trace_ndims&quot;</code>: a <code>Vector{Int}</code> of length 2 to specify the maximal number of free and traced indices for <code>tensortrace!</code>.</li><li><code>&quot;precompile_contract_ndims&quot;</code>: a <code>Vector{Int}</code> of length 2 to specify the maximal number of free and contracted indices for <code>tensorcontract!</code>.</li></ul><div class="admonition is-info" id="Backends-fed6a8d5ef6b1cbf"><header class="admonition-header">Backends<a class="admonition-anchor" href="#Backends-fed6a8d5ef6b1cbf" title="Permalink"></a></header><div class="admonition-body"><p>Currently, there is no support for precompiling methods that do not use the default backend. If this is a feature you would find useful, feel free to contact us or open an issue.</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../implementation/">« Implementation</a><a class="docs-footer-nextpage" href="../../index/">Index »</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="Monday 28 July 2025 23:14">Monday 28 July 2025</span>. Using Julia version 1.11.6.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>

0 commit comments

Comments
 (0)