AMULET: Adaptive Matrix-Multiplication-Like Tasks
Junyoung Kim Kenneth Ross Eric Sedlar Lukas Stadler
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.