Timeloop is an infrastructure that aims to provide modeling, mapping and code-generation for dense- and sparse- tensor algebra workloads on a range of accelerator architectures. It is built from two modular components:
- A fast analytical model that can emulate a range of architecture designs and provide performance and energy projections
- A mapper that that searches for an optimal mapping in the space of mappings of a tensor-algebra problem on a given architecture
Timeloop documentation is hosted at https://timeloop.csail.mit.edu/timeloop. The guides there cover installation, usage and examples. For a deeper understanding of Timeloop's internals please read our ISPASS 2019 paper.
Timeloop version 2.0 (a.k.a. Sparseloop) provides stochastic modeling of compressed-sparse tensor algebra. This work is described in our MICRO 2022 paper.
Timeloop version 3.0 (a.k.a. Ruby) adds support for imperfectly-factorized mappings (described in our ISPASS 2022 paper), in addition to support for spatial skews and flattened mappings.
New users are strongly encouraged to complete the Timeloop tutorial. Serially walking through the exercises from the tutorial serves as an essential hands-on introduction to the tool.
Timeloop depends on the isl and barvinok libraries. In particular, barvinok version 0.41.6 (along with the pre-packaged isl library) has been tested to build successfully with this version of Timeloop. Instructions for installing barvinok can be found in the this link.