akothen / Hydride

A retargetable and extensible synthesis-based compiler for modern hardware architectures
Apache License 2.0
10 stars 0 forks source link
automlir compiler-construction compilers dsl formal-semantics formal-verification halide high-performance instruction-selection isa-semantics llvm mlir program-synthesis retargetability vectorization

Hydride

Hydride is a retargetable and extensible synthesis-based compiler for modern hardware architectures.

Hydride has two major components:

Prerequisites

Python

Z3

Racket

Directory Structure

Instructions to install Hydride

From the root directory, run the setup bash script to set up appropriate paths first.

source setup.sh

Install the frontends and backends, and Rosette and Hydride code synthesizer by running the following install script.

bash install.sh

Now you are ready to use Hydride!

Targets Supported

Hydride, as a vectorizer supports the following instruction sets:

Publication

The first paper on Hydride was published at ASPLOS 2024. In this paper we demonstrate Hydride's powerful vectorization capabilities and competitive performance of the code it generates for a variety of vector instruction sets. You can download the paper from ACM Digital Library. If you use Hydride, please cite both the compiler and the paper!

@inproceedings{kothari2024hydride,
  title={Hydride: A Retargetable and Extensible Synthesis-based Compiler for Modern Hardware Architectures},
  author={Kothari, Akash and Noor, Abdul Rafae and Xu, Muchen and Uddin, Hassam and Baronia, Dhruv and Baziotis, Stefanos and Adve, Vikram and Mendis, Charith and Sengupta, Sudipta},
  booktitle={Proceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 2},
  pages={514--529},
  year={2024}
}