Abstract
OpenMP is an industry-standard API for writing portable shared-memory parallel programs in C/C++/Fortran.
Almost every mainstream compiler of these languages now supports compilation of OpenMP programs.
However, we are not aware of any compiler framework which was designed from the ground up taking OpenMP
semantics into account.
Consequently, not all components of such frameworks are generally applicable (or conforming) to the OpenMP
parallel semantics.
Further, analyzing/optimizing/transforming OpenMP programs using higher-level program abstractions is a popular choice.
However, higher level program abstractions create multiple issues due to the presence of syntactic sugars and
absence of normalized forms of various constructs.
We present IMOP (IIT Madras OpenMP compiler), a new open-source source-to-IR-to-source compiler framework,
to address such challenges.
The output of IMOP can be compiled using standard compilers like GCC/LLVM to generate machine code.
IMOP has many unique features such as OpenMP-aware compilation, automatic generation of parallel variants
of the serial iterative data-flow passes, self-stabilization of program abstractions in response to
program modifications, integration with the Z3 SMT solver, and so on.
IMOP can significantly simplify the task of writing tools for program analysis, profiling, and optimizations.
It can be used by both researchers (for quick prototyping) and students (for completing their compiler-related assignments).
To learn more about IMOP, you are welcome to join upcoming tutorials on IMOP, listed above.
In these hands-on tutorials, we will teach the fundamentals and certain advanced concepts of
IMOP to the participants, which can help them in the faster development of their research prototypes.
Objectives of the tutorials
These tutorials are aimed towards
compiler researchers,
educators, and
industrial practitioners
alike.
By the end of these tutorials, the participants will
- - learn how to analyze, optimize, and profile their (OpenMP) C programs,
using the existing passes of IMOP,
- - be able to write custom optimization passes in IMOP for (OpenMP) C programs,
- - understand how to efficiently implement any standard or custom iterative data-flow
analysis by extending the generic data-flow passes of IMOP,
- - gain an understanding of the guiding and design principles of IMOP,
such that they can systematically extend it to serve their needs, and
- - understand the benefits of working in a self-stabilizing framework,
and achieve the same in IMOP.