Skip to content

Commit b9362a0

Browse files
committed
Merge remote-tracking branch 'new-website/gh-pages' into new-website
2 parents 4e8ab50 + 4320519 commit b9362a0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1707
-453
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
1+
.DS_Store
12
*.swp
2-
*.DS_Store
3+
*.swo
4+
*.swn
5+
.jekyll-cache/
6+
_site/

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
gem "bulma-clean-theme"
2+
gem "webrick", "~> 1.7"

Gemfile.lock

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
GEM
2+
specs:
3+
addressable (2.8.0)
4+
public_suffix (>= 2.0.2, < 5.0)
5+
bulma-clean-theme (0.13.1)
6+
jekyll (>= 3.9, < 5.0)
7+
jekyll-feed (~> 0.15)
8+
jekyll-paginate (~> 1.1)
9+
jekyll-seo-tag (~> 2.7)
10+
jekyll-sitemap (~> 1.4)
11+
kramdown-parser-gfm (~> 1.1)
12+
colorator (1.1.0)
13+
concurrent-ruby (1.1.10)
14+
em-websocket (0.5.3)
15+
eventmachine (>= 0.12.9)
16+
http_parser.rb (~> 0)
17+
eventmachine (1.2.7)
18+
ffi (1.15.5)
19+
forwardable-extended (2.6.0)
20+
http_parser.rb (0.8.0)
21+
i18n (1.10.0)
22+
concurrent-ruby (~> 1.0)
23+
jekyll (4.2.2)
24+
addressable (~> 2.4)
25+
colorator (~> 1.0)
26+
em-websocket (~> 0.5)
27+
i18n (~> 1.0)
28+
jekyll-sass-converter (~> 2.0)
29+
jekyll-watch (~> 2.0)
30+
kramdown (~> 2.3)
31+
kramdown-parser-gfm (~> 1.0)
32+
liquid (~> 4.0)
33+
mercenary (~> 0.4.0)
34+
pathutil (~> 0.9)
35+
rouge (~> 3.0)
36+
safe_yaml (~> 1.0)
37+
terminal-table (~> 2.0)
38+
jekyll-feed (0.15.1)
39+
jekyll (>= 3.7, < 5.0)
40+
jekyll-paginate (1.1.0)
41+
jekyll-sass-converter (2.2.0)
42+
sassc (> 2.0.1, < 3.0)
43+
jekyll-seo-tag (2.8.0)
44+
jekyll (>= 3.8, < 5.0)
45+
jekyll-sitemap (1.4.0)
46+
jekyll (>= 3.7, < 5.0)
47+
jekyll-watch (2.2.1)
48+
listen (~> 3.0)
49+
kramdown (2.4.0)
50+
rexml
51+
kramdown-parser-gfm (1.1.0)
52+
kramdown (~> 2.0)
53+
liquid (4.0.3)
54+
listen (3.7.1)
55+
rb-fsevent (~> 0.10, >= 0.10.3)
56+
rb-inotify (~> 0.9, >= 0.9.10)
57+
mercenary (0.4.0)
58+
pathutil (0.16.2)
59+
forwardable-extended (~> 2.6)
60+
public_suffix (4.0.7)
61+
rb-fsevent (0.11.1)
62+
rb-inotify (0.10.1)
63+
ffi (~> 1.0)
64+
rexml (3.2.5)
65+
rouge (3.28.0)
66+
safe_yaml (1.0.5)
67+
sassc (2.4.0)
68+
ffi (~> 1.9)
69+
terminal-table (2.0.0)
70+
unicode-display_width (~> 1.1, >= 1.1.1)
71+
unicode-display_width (1.8.0)
72+
webrick (1.7.0)
73+
74+
PLATFORMS
75+
x86_64-darwin-21
76+
77+
DEPENDENCIES
78+
bulma-clean-theme
79+
webrick (~> 1.7)
80+
81+
BUNDLED WITH
82+
2.3.12

_config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#theme: bulma-clean-theme
2+
remote_theme: chrisrhymes/bulma-clean-theme
3+
title: "TACO: The Tensor Algebra Compiler"
4+
#tagline: A fast and versatile library for linear and tensor algebra
5+
#description: A fast and versatile library for linear and tensor algebra

_data/navigation.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
- name: Docs
2+
link: /docs
3+
- name: Publications
4+
link: /publications.html
5+
- name: Related Projects
6+
link: /related.html
7+
- name: Web Tool
8+
link: /codegen.html
9+
- name: GitHub
10+
link: https://github.com/tensor-compiler/taco

_data/publications.yml

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

_data/related.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
- heading: MLIR
2+
link: https://mlir.llvm.org/
3+
desc: >
4+
MLIR is an open-source project that provides an extensible infrastructure for building compilers for domain-specific programming languages.
5+
MLIR provides first-class support for sparse tensor operations through the <code>SparseTensor</code> dialect, which the MLIR compiler can compile to LLVM IR using an implementation of TACO's sparse tensor algebra compiler theory.
6+
pubs:
7+
- title: Compiler Support for Sparse Tensor Computations in MLIR
8+
authors: Aart J.C. Bik, Penporn Koanantakool, Tatiana Shpeisman, Nicolas Vasilache, Bixia Zheng, and Fredrik Kjolstad
9+
venue: arXiv Preprint
10+
is_thesis: false
11+
paper_link: https://arxiv.org/abs/2202.04305
12+
slide_link: https://llvm.org/devmtg/2021-11/slides/2021-CompilerSupportforSparseTensorComputationsinMLIR.pdf
13+
youtube: x-nHc3hBxHM
14+
abstract: >
15+
Sparse tensors arise in problems in science, engineering, machine learning, and data analytics. Programs that operate on such tensors can exploit sparsity to reduce storage requirements and computational time. Developing and maintaining sparse software by hand, however, is a complex and error-prone task. Therefore, we propose treating sparsity as a property of tensors, not a tedious implementation task, and letting a sparse compiler generate sparse code automatically from a sparsity-agnostic definition of the computation. This paper discusses integrating this idea into MLIR.
16+
bibtex: >
17+
@article{https://doi.org/10.48550/arxiv.2202.04305,
18+
doi = {10.48550/ARXIV.2202.04305},
19+
url = {https://arxiv.org/abs/2202.04305},
20+
author = {Bik, Aart J. C. and Koanantakool, Penporn and Shpeisman, Tatiana and Vasilache, Nicolas and Zheng, Bixia and Kjolstad, Fredrik},
21+
keywords = {Programming Languages (cs.PL), FOS: Computer and information sciences, FOS: Computer and information sciences},
22+
title = {Compiler Support for Sparse Tensor Computations in MLIR},
23+
publisher = {arXiv},
24+
year = {2022},
25+
copyright = {Creative Commons Attribution 4.0 International}
26+
}
27+

_data/where_taco.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
items:
2+
- title: Data Analytics
3+
img: data-analytics.png
4+
call_to_action_name: See an example
5+
call_to_action_link: docs/data_analytics.html
6+
- title: Scientific Computing
7+
img: scientific-computing.png
8+
call_to_action_name: See an example
9+
call_to_action_link: docs/scientific_computing.html
10+
- title: Machine Learning
11+
img: machine-learning.png
12+
call_to_action_name: See an example
13+
call_to_action_link: docs/machine_learning.html

_data/why_taco.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
items:
2+
- title: TACO is versatile!
3+
icon: fa-wrench
4+
description: >
5+
TACO supports a wide range of sparse (and dense) linear/tensor algebra computations, from simpler ones like sparse matrix-vector multiplication to more complex ones like MTTKRP on higher-order sparse tensors. Tensors can be stored in a variety of storage formats, including commonly-used sparse matrix and tensor formats like CSR and COO as well as specialized formats like CSF.
6+
- title: TACO is fast!
7+
icon: fa-rocket
8+
subtitle:
9+
description: >
10+
Under the hood, TACO employs a novel compiler-based technique to generate kernels that are optimized for the computations you want to perform. This lets TACO achieve performance that exceeds the MATLAB Tensor Toolbox by up to several orders of magnitude and that is competitive with other high-performance sparse linear/tensor algebra libraries like Eigen, Intel oneMKL, and SPLATT.
11+
- title: TACO is easy to use!
12+
icon: fa-coffee
13+
description: >
14+
TACO lets you perform complex sparse linear and tensor algebra computations by writing just a few lines of code. TACO provides C++ and Python APIs that can be used in similar ways as other linear algebra libraries like Eigen and SciPy. The command-line tool and web tool also make it easy to build your own library of custom linear/tensor algebra kernels that you can link to your applications.
15+
#call_to_action_name: Call to action 3
16+
#call_to_action_link: https://www.csrhymes.com/bulma-clean-theme/page-3/

_includes/callouts.html

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{% if page.callouts %}
2+
{% assign callouts=site.data.[page.callouts] %}
3+
<section class="hero {% if callouts.height %} {{ callouts.height }} {% else %} is-medium {% endif %} {{ callouts.style }}">
4+
<div class="hero-body">
5+
<div class="container">
6+
<p class="title is-3 py-3">Why should I use TACO?</p>
7+
<div class="columns is-multiline is-centered">
8+
{% for callout in callouts.items %}
9+
<div class="column is-4 has-text-centered">
10+
{% if callout.icon %}
11+
<div class="icon callout-icon">
12+
{% if callout.icon_brand %}
13+
<i class="fab {{ callout.icon }} fa-4x"></i>
14+
{% else %}
15+
<i class="fas {{ callout.icon }} fa-4x"></i>
16+
{% endif %}
17+
</div>
18+
{% endif %}
19+
<p class="title is-5">{{ callout.title }}</p>
20+
<p class="subtitle is-5">{{ callout.subtitle }}</p>
21+
22+
{% if callout.description %}
23+
<div class="content has-text-left">
24+
<p>{{ callout.description | newline_to_br }}</p>
25+
</div>
26+
{% endif %}
27+
28+
{% if callout.call_to_action_name %}
29+
<a href="{{ callout.call_to_action_link | relative_url }}" class="button is-primary">
30+
{{ callout.call_to_action_name }}
31+
</a>
32+
{% endif %}
33+
</div>
34+
{% endfor %}
35+
</div>
36+
</div>
37+
</div>
38+
</section>
39+
{% endif %}
40+
41+

_includes/demo-header.html

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-red.min.css">
2+
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
3+
<link rel="stylesheet" href="stylesheets/style.css">
4+
<script src="https://code.getmdl.io/1.3.0/material.min.js"></script>
5+
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
6+
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
7+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/styles/default.min.css">
8+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/highlight.min.js"></script>
9+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
10+
<script src="javascripts/jquery.ui.touch-punch.min.js"></script>
11+
<script src="javascripts/FileSaver.min.js"></script>
12+
<script src="javascripts/parser.js"></script>
13+
<script src="javascripts/parser-indices.js"></script>
14+
<script src="javascripts/default-schedules.js"></script>
15+
<script src="javascripts/demo.js"></script>
16+
<script type="text/x-mathjax-config">
17+
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
18+
</script>
19+
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
20+
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/app.css">
21+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css">
22+
<link rel="stylesheet" href="stylesheets/dropdown.css">

_includes/demo.html

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
<div class="mdl-grid" style="padding-top: 0px">
2+
<div class="mdl-cell mdl-cell--12-col">
3+
<p style="line-height: 100%">This is an prototype implementation of the sparse tensor algebra compiler theory and contains known bugs, which are documented <a href="https://github.com/tensor-compiler/taco/issues">here</a>. If you find additional issues, please consider submitting a bug report.</p>
4+
<h6 style="margin-bottom: 0px; margin-top: 18px">Input a tensor algebra expression in index notation to generate code that computes it:</h6>
5+
<div class="input-bar">
6+
<div class="mdl-textfield expr-input">
7+
<input id="txtExpr" class="input" value="y(i) = A(i,j) * x(j)" style="font-family: monospace" spellcheck="false" autocomplete="off" autocorrect="false" autocapitalize="false">
8+
<span id="lblError" class="mdl-textfield__error" style="font-size: 14px"></span>
9+
<label class="mdl-textfield__label"></label>
10+
</div>
11+
<div class="input-bar-misc">
12+
<div style="float: left">
13+
<button id="btnExamples" class="mdl-button mdl-js-button mdl-button--icon">
14+
<i class="material-icons">more_vert</i>
15+
</button>
16+
<ul id="listExamples" class="mdl-menu mdl-menu--bottom-left mdl-js-menu mdl-js-ripple-effect" style="margin-top: 0em; margin-left: 0em" for="btnExamples"></ul>
17+
</div>
18+
<div class="mdl-textfield prefix-input">
19+
<input id="prefix" class="input" placeholder="Prefix (Optional)" style="font-family: monospace" spellcheck="false" autocomplete="off" autocorrect="false" autocapitalize="false">
20+
</div>
21+
<button id="btnGetKernel" class="button is-primary demo-btn">Generate Kernel</button>
22+
</div>
23+
</div>
24+
</div>
25+
</div>
26+
27+
<div id="tblFormats" class="mdl-grid" style="padding-top: 0px; padding-bottom: 0px">
28+
<div class="mdl-cell mdl-cell--12-col" style="margin-top: 2px">
29+
<table class="mdl-data-table mdl-js-data-table" style="width: 100%; margin-bottom: 8px">
30+
<thead>
31+
<tr>
32+
<th class="mdl-data-table__cell--non-numeric" style="min-width: 70px; vertical-align: middle; padding-left: 9px">
33+
<div align="center" style="position:relative"><big>Tensor</big></div></th>
34+
<th class="mdl-data-table__cell--non-numeric" style="width: 100%; padding-left: 0px; vertical-align: middle; text-align: left">
35+
<big id="formatHeading">
36+
Format
37+
</big>
38+
<big class="optional-header" style="padding-left: 96px">
39+
(Level Formats)
40+
</big>
41+
<big>
42+
<button class="help-btn js-modal-trigger mdl-button mdl-js-button mdl-button--icon" data-target="modal-level-formats"><i class="material-icons" style="font-size:20px">help_outline</i>
43+
</button>
44+
<div id="modal-level-formats" class="modal">
45+
<div class="modal-background"></div>
46+
47+
<div class="modal-content">
48+
<div class="box">
49+
<p>
50+
TACO represents tensor formats as compositions of the
51+
following per-dimension level formats:
52+
</p>
53+
<p>
54+
<strong>Dense</strong> levels store the size of the dimension
55+
$(N)$ and encode the coordinates in the interval $[0, N)$.
56+
<img src="images/dense-arrays.jpg" class="centered-img" style="height: 29px; padding-top:10px">
57+
</p>
58+
<p>
59+
<strong>Compressed</strong> levels store coordinates in a
60+
segment of the $\texttt{crd}$ array, with segment bounds
61+
stored in the $\texttt{pos}$ array.
62+
<img src="images/compressed-arrays.jpg" class="centered-img" style="height: 50px; padding-top:10px">
63+
</p>
64+
<p>
65+
<strong>Singleton</strong> levels store individual
66+
coordinates in the $\texttt{crd}$ array.
67+
<img src="images/singleton-arrays.jpg" class="centered-img" style="height: 30px; padding-top:10px">
68+
</p>
69+
<p>
70+
Some level formats also come in different variants that
71+
either can only store unique elements (U) or may store
72+
duplicate elements (&not;U). More details can be found
73+
<a href="files/chou-oopsla18-taco-formats.pdf">here</a>.
74+
</p>
75+
<p>
76+
TACO also supports non-row major tensor formats such as CSC.
77+
You can define non-row major tensor formats in the web tool by
78+
<strong>dragging the drop-down menus to reorder dimensions</strong>.
79+
</p>
80+
</div>
81+
</div>
82+
83+
<button class="modal-close is-large" aria-label="close"></button>
84+
</div>
85+
</big>
86+
</th>
87+
</tr>
88+
</thead>
89+
<tbody id="listTensors">
90+
</tbody>
91+
</table>
92+
</div>
93+
</div>
94+
95+
<div class="mdl-grid" style="padding-top: 8px; padding-bottom: 0px">
96+
<div class="mdl-cell mdl-cell--12-col">
97+
<div align="right" style="padding-right: 0px">
98+
<button id="btnCPU" class="button is-primary sample-button">
99+
Sample CPU Schedule
100+
</button>
101+
<button id="btnGPU" class="button is-primary sample-button">
102+
Sample GPU Schedule
103+
</button>
104+
</div>
105+
<table class="mdl-data-table mdl-js-data-table" style="width: 100%; margin-bottom: 8px">
106+
<thead>
107+
<tr>
108+
<th class="mdl-data-table__cell--non-numeric"></th>
109+
<th class="mdl-data-table__cell--non-numeric" style="padding-left: 0px; padding-right: 8px; vertical-align: middle; text-align: left">
110+
<big style="padding-left: 10px">
111+
Scheduling Command
112+
</big>
113+
<big>
114+
<button class="help-btn mdl-button mdl-js-button mdl-button--icon">
115+
<a target="_blank" rel="noopener noreferrer" href="http://tensor-compiler.org/docs/scheduling/index.html">
116+
<i class="material-icons" style="font-size: 20px; color: black">help_outline</i>
117+
</a>
118+
</button>
119+
</big>
120+
<big class="optional-header" style="padding-left: 34px">
121+
Arguments
122+
</big>
123+
</th>
124+
</tr>
125+
</thead>
126+
<tbody id="tblSchedule">
127+
</tbody>
128+
</table>
129+
</div>
130+
</div>
131+
132+
<div class="mdl-grid" style="padding-top: 6px">
133+
<div class="mdl-cell mdl-cell--12-col output-panel">
134+
<div id="panelKernels" class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect">
135+
<table style="width: 100%; margin-bottom: 0px">
136+
<tr>
137+
<td style="padding: 0px; padding-bottom: 8px">
138+
<div class="mdl-tabs__tab-bar" style="justify-content: flex-start">
139+
<a style="padding-left: 12px; padding-right: 12px" href="#compute-panel" class="mdl-tabs__tab is-active">Compute Code</a>
140+
<a style="padding-left: 12px; padding-right: 12px" href="#assembly-panel" class="mdl-tabs__tab">Assemble Code</a>
141+
<a style="padding-left: 12px; padding-right: 12px" href="#full-panel" class="mdl-tabs__tab">Full Code</a>
142+
</div>
143+
</td>
144+
<td id="cellBtnDownload" align="right">
145+
<button id="btnDownload" class="button is-primary" style="width: 100%">Download</button>
146+
</td>
147+
</tr>
148+
</table>
149+
<div class="mdl-tabs__panel is-active" id="compute-panel">
150+
<pre style="margin: 0px 0px; padding: 0px 0px"><code id="txtComputeLoops" class="lang-cpp">/* The generated compute code will appear here */</code></pre>
151+
</div>
152+
<div class="mdl-tabs__panel" id="assembly-panel">
153+
<pre style="margin: 0px 0px; padding: 0px 0px"><code id="txtAssemblyLoops" class="lang-cpp">/* The generated assemble code will appear here */</code></pre>
154+
</div>
155+
<div class="mdl-tabs__panel" id="full-panel">
156+
<pre style="margin: 0px 0px; padding: 0px 0px"><code id="txtFullCode" class="lang-cpp">/* The complete generated code will appear here */</code></pre>
157+
</div>
158+
</div>
159+
<br>
160+
<p style="line-height: 100%">The generated code is provided "as is" without warranty of any kind. To help us improve TACO, we keep an anonymized record of all requests submitted to the TACO online server.</p>
161+
</div>
162+
</div>
163+
164+
<script>demo()</script>

0 commit comments

Comments
 (0)