Clint was initially designed as a interactive loop visualization and manipulation tool. Over time, it has become a testbed for a major part of my research on graphical interaction with a polyhedral compiler.
By using any single project in the Periscop suite, it allows to represent an arbitrary complex part of the program amenable to the polyhedral model graphically and lets the user transform it by manipulating this graphical representation. The visualization itself is based on a scatterplot-like design frequently used in literature to explain the polyhedral model. Its success is due to the reification of a statement instance, a particular execution of statement within the loop, and to making explicit the dependences caused by data reuse between statement instances. Each graphical manipulation performed by the user automatically transforms the code so that its visualization exactly corresponds to the updated graphical representation. If such transformation violates the semantics of the original program, the problematic spot is highlighted for further consideration.
Clint serves as a prototyping framework for the following functionality that is not yet integrated in the public version: visualization and manipulation of data dependences in the C source code; visualization of data access patterns; animated transition between C source code and scatterplot-like visualization for explanatory purposes; interactive replay and tweaking of an automatically computed polyhedral optimization. This functionality is a part of ongoing research or is pending publication. Please contact me to obtain any of the research prototypes.
- Oleksandr Zinenko (author)