IMOP is a source-to-source transformation and analysis framework for OpenMP shared memory parallel programs written in ANSI C.
The framework itself has been developed in the Java language.
Currently, we support OpenMP 4.0 specification for ANSI C. We are planning to handle almost all the GCC extensions of C in future.
IMOP provides various basic building-blocks that you can use to implement new optimization tools for OpenMP C programs.
Since IMOP works at the source-code level, implementation of source-to-source transformations and of source code analyses for OpenMP C programs is feasible.
IMOP is specifically designed for shared memory OpenMP C programs, and thereby it already contains various elementary analyses (e.g., concurrency analysis) that are specific to such programs. We hope that these reusable modules will result in significant reduction in the development time of new tools.
Along with the OpenMP specific utilities, IMOP also provides various standard analyses and transformations for sequential C programs.
Kindly refer to the FAQ page to know what is new in IMOP as compared to the other existing frameworks.
End-users can directly use command-line switches to enable required analyses/transformations provided by IMOP to ease the debugging, comprehension, and profiling of their OpenMP C programs. Furthermore, IMOP aims to ease the creation of new tools to such an extent that even the end-users can write basic customized tools as per their requirements.