Tiramisu
A polyhedral compiler with a C++ API for expressing and optimizing fast, portable data-parallel computations such as linear algebra, tensor algebra, deep learning and image processing.
Tiramisu provides a C++ API for expressing data-parallel algorithms as Tiramisu expressions, along with a separate way of specifying how the compiler should optimize them. Because it is based on the polyhedral model, it can express a large set of loop optimizations and data-layout transformations, and it is designed so that support for new target architectures can be added without reworking the rest of the compiler.
It currently targets multicore x86 CPUs, Nvidia GPUs, Xilinx FPGAs through Vivado HLS, and distributed machines through MPI, and has been used for problems in linear and tensor algebra, deep learning, image processing and stencil computations. Optional Python bindings are available through Pybind, Cython and NumPy.
It can be built from Spack, from source using a system package manager such as Homebrew or apt for dependencies, or entirely from source with the project's own install script, and is released under the MIT license.