Skip to content

Commit 4c04503

Browse files
authored
Add instructions to reproduce OOPSLA 2020 results in README
1 parent ea50ecf commit 4c04503

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
# Reproducing OOPSLA 2020 Results
2+
This branch is a snapshot of the code needed to generate the evaluated kernels and figures in the [OOPSLA 2020 paper](https://doi.org/10.1145/3428226). However, we highly recommend using the [master branch of taco](https://github.com/tensor-compiler/taco) or the [interactive web demo](http://tensor-compiler.org/codegen.html) if possible.
3+
4+
TACO is not generally able to generate parallel code for expressions where the output is stored in a format that does not support random inserts (such as CSR). This branch contains modifications to allow for generating parallel code in special cases where the output has the same sparsity pattern as one of the inputs. This is needed to evaluate kernels such as SDDMM (sampled dense-dense matrix multiplication) and TTV (tensor-times-vector) where the output is a CSR. However, these modifications break taco's ability to be used as a C++ library or generate correct assembly code (this causes for many of taco's test cases to fail). This branch can still be used to generate kernels using the instructions below, but we recommend using the master branch to generate kernels with a dense output.
5+
6+
The schedules used in the paper can be found in [test/test-scheduling-eval.cpp](test/tests-scheduling-eval.cpp).
7+
8+
To generate the kernels used in the paper:
9+
10+
cd <taco-directory>
11+
git status # ensure you are on correct branch / commit (not master)
12+
mkdir build
13+
cd build
14+
cmake -DCMAKE_BUILD_TYPE=Release ..
15+
make -j8
16+
bin/taco-test --gtest_filter="generate_evaluation_files.*"
17+
18+
This will generate kernels in build/eval_prepared_cpu and build/eval_prepared_gpu. To add a kernel or modify a schedule, modify the [generate_evaluation_files test case](https://github.com/RSenApps/taco/blob/ea50ecfb9fa5fc0c8c9a435e5994f51a81ead427/test/tests-scheduling-eval.cpp#L1148).
19+
20+
It is also possible to use the command line tool, though there is no functionality in this branch to specify schedules via the command line. However, this is available in the master branch.
21+
22+
bin/taco "y(i) = A(i,j) * x(j)" -f=A:ds -write-source=spmv.c
23+
vim spmv.c
24+
25+
Please contact [Ryan Senanayake (@RSenApps)](https://github.com/rsenapps/) for further questions on reproducing the OOPSLA 2020 results. We have a evaluation suite to generate the graphs used in the paper as well as a virtual machine with dependencies already set up.
26+
27+
# TACO Overview
28+
129
The Tensor Algebra Compiler (taco) is a C++ library that computes
230
tensor algebra expressions on sparse and dense tensors. It uses novel
331
compiler techniques to get performance competitive with hand-optimized

0 commit comments

Comments
 (0)