Automatic Generators for a Family of Matrix Multiplication Routines with Apache TVM

Guillermo Alaejos, Adrián Castelló, Pedro Alonso-Jordá, Francisco D. Igual, Héctor Martínez +1 more
10/31/2023
cs.CL

No confident code implementation found for this paper.

Abstract

We explore the utilization of the Apache TVM open source framework to automatically generate a family of algorithms that follow the approach taken by popular linear algebra libraries, such as GotoBLAS2, BLIS and OpenBLAS, in order to obtain high-performance blocked formulations of the general matrix multiplication (GEMM). % In addition, we fully automatize the generation process, by also leveraging the Apache TVM framework to derive a complete variety of the processor-specific micro-kernels for GEMM. This is in contrast with the convention in high performance libraries, which hand-encode a single micro-kernel per architecture using Assembly code. % In global, the combination of our TVM-generated blocked algorithms and micro-kernels for GEMM 1)~improves portability, maintainability and, globally, streamlines the software life cycle; 2)~provides high flexibility to easily tailor and optimize the solution to different data types, processor architectures, and matrix operand shapes, yielding performance on a par (or even superior for specific matrix shapes) with that of hand-tuned libraries; and 3)~features a small memory footprint.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. Any repos shown below are weak matches — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Cite this paper

@article{alaejos2023automatic,
  title  = {Automatic Generators for a Family of Matrix Multiplication Routines with Apache TVM},
  author = {Guillermo Alaejos and Adrián Castelló and Pedro Alonso-Jordá and Francisco D. Igual and Héctor Martínez and Enrique S. Quintana-Ortí},
  year   = {2023},
  eprint = {2310.20347},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2310.20347v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2310.20347.svg)](https://codeofpaper.com/paper/2310.20347)

Discussion