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)