Insieme is a modular compiler composed of four main components: frontend, intermediate representation, backend and runtime.
translates input code written in C or (partially) C++ into a parallel intermediate representation called Inspire. OpenMP annotations and OpenCL kernels are supported, and MPI support will be added in the future.
is a unified parallel representation that is optimized for high level transformations and analysis. It is mostly structural (as opposed to most nominal IRs), which allows for better local decision making and analysis without having to consider the whole program. Another advantage is the ease with which multiversioning of functions and smaller components can be accomplished.
generates standard C99 -- and optionally OpenCL -- code that interacts with the Insieme runtime to make full use of the available hardware resources.
makes use of multiple worker threads to distribute tasks locally, and also supports pushing and pulling tasks over the network on clusters. It has knowledge about the system architecture and (optionally) previous runs of the program and bases its scheduling and optimization decisions on these facts, as well as the current state of the system and the program.