Tiramisu

screenshot of Tiramisu

A polyhedral compiler for expressing fast and portable data parallel algorithms

Overview

Tiramisu is a compiler designed for fast and portable data parallel computations, offering a simple C++ API for expressing algorithms and their compiler optimizations. It supports various applications including linear algebra, deep learning, image processing, stencil computations, and machine learning. Based on the polyhedral model, Tiramisu can implement a wide range of loop optimizations and data layout transformations, targeting multicore X86 CPUs, Nvidia GPUs, Xilinx FPGAs, and distributed machines using MPI.

Features

  • C++ API: Provides a simple API for expressing algorithms (Tiramisu expressions).
  • Support for Various Applications: Used in linear algebra, deep learning, image processing, stencil computations, and machine learning.
  • Polyhedral Model: Allows for a broad set of loop optimizations and data layout transformations.
  • Cross-Platform Targeting: Supports multicore X86 CPUs, Nvidia GPUs, Xilinx FPGAs, and distributed machines via MPI.
  • Code Generation: Designed for easy integration of code generators for new architectures.
  • CUDA Support: Optional support for generating and running CUDA code.
  • Python Bindings: Optional Python 3.8 or higher support along with Pybind 2.10.2, Cython, and Numpy for Python bindings.

Prerequisites

  • CMake (version 3.22 or greater)
  • Autoconf and libtool
  • Ninja
  • Optional:
    • OpenMPI and OpenSSH (for generating and running distributed code - MPI)
    • CUDA Toolkit (for generating and running CUDA code)
    • Python 3.8 or higher, Pybind 2.10.2, Cython, Numpy (for Python bindings)

Build Methods

  1. From Spack:

    • Install Spack and run the appropriate commands.
  2. From Source with System Package Managers:

    • Install dependencies (using Homebrew for MacOS or Apt for Ubuntu/Debian).
    • Use CMake to build Tiramisu.
  3. Purely from Source (with Install Script):

    • Get Tiramisu.
    • Setup the configure.cmake file according to your requirements.
    • Configure and build.

Summary

Tiramisu is a versatile compiler that simplifies the expression of fast and portable data parallel computations. With its support for various applications and broad optimizations, it caters to a wide range of computing needs. The installation process, including building from Spack, source with system package managers, or pure source, ensures flexibility and ease of setup based on the user's environment. Optionally, users can leverage CUDA support or Python bindings for enhanced functionality.