# AMULET: Adaptive Matrix-Multiplication-Like Tasks

arXiv: https://arxiv.org/abs/2305.08872 · HTML: https://mlsanity.com/paper/2305.08872/

## Key facts

- No citing papers in the map yet (data through 14 Oct 2026).
- Builds on 10 of its 52 references that are in the map.
- First posted on arXiv 12 May 2023.

## Builds on (most cited first, 10 of 10)

- [Tensor Comprehensions: Framework-Agnostic High-Performance Machine Learning Abstractions](https://mlsanity.com/paper/1802.04730/) (2018)
- [TVM: An Automated End-to-End Optimizing Compiler for Deep Learning](https://mlsanity.com/paper/1802.04799/) (2018)
- [Declarative Recursive Computation on an RDBMS, or, Why You Should Use a Database For Distributed Machine Learning](https://mlsanity.com/paper/1904.11121/) (2019)
- [Tensor Relational Algebra for Machine Learning System Design](https://mlsanity.com/paper/2009.00524/) (2020)
- [A Systematic Approach to Blocking Convolutional Neural Networks](https://mlsanity.com/paper/1606.04209/) (2016)
- [Flexible Performant GEMM Kernels on GPUs](https://mlsanity.com/paper/2009.12263/) (2020)
- [Expressive power of linear algebra query languages](https://mlsanity.com/paper/2010.13717/) (2020)
- [TCUDB: Accelerating Database with Tensor Processors](https://mlsanity.com/paper/2112.07552/) (2021)
- [Communication-Optimal Tilings for Projective Nested Loops with Arbitrary Bounds](https://mlsanity.com/paper/2003.00119/) (2020)
- [Fast Join Project Query Evaluation using Matrix Multiplication](https://mlsanity.com/paper/2002.12459/) (2020)

## Abstract (arXiv)

Many useful tasks in data science and machine learning applications can be written as simple variations of matrix multiplication. However, users have difficulty performing such tasks as existing matrix/vector libraries support only a limited class of computations hand-tuned for each unique hardware platform. Users can alternatively write the task as a simple nested loop but current compilers are not sophisticated enough to generate fast code for the task written in this way. To address these issues, we extend an open-source compiler to recognize and optimize these matrix multiplication-like tasks. Our framework, called Amulet, uses both database-style and compiler optimization techniques to generate fast code tailored to its execution environment. We show through experiments that Amulet achieves speedups on a variety of matrix multiplication-like tasks compared to existing compilers. For large matrices Amulet typically performs within 15% of hand-tuned matrix multiplication libraries, while handling a much broader class of computations.
