Nicolas Benoit, Stéphane Louise. Kimble: a Hierarchical Intermediate Representation for Multi-Grain Parallelism. In Florent Bouchez, Sebastian Hack, Eelco Visser, editors, Proceedings of the Workshop on Intermediate Representations. pages 21-28, 2011.
Because modern computer architectures expose multiple levels of parallelism, the problem of mapping program parts to specific resources raises several trade-offs. Those are easier to arbitrate at a level of abstraction where a wide range of software granularities and information are still available. The role of the intermediate representation in this process is two-fold. On one hand, it has to support the characterization and expression of parallelism at the relevant granularities. On the other hand, it has to facilitate code transformation and generation for possibly heterogeneous processing elements.
This paper introduces Kimble, an intermediate representation where program constructs are organized in a hierarchy of directed graphs. After a presentation of its structure and its building process, its applications and implementation in a source-to-source transforming tool built on top of GCC are described.