Our Motivation:
Today's computers are all Multicores. With parallelization techniques, one can convert sequential code into multi-threaded or vectorized code to simultaneously use multiple processors' power in a modern shared-memory Architecture.
Our Goal:
Our aim for the iCetus tool is to involve the user in the decisions that compilers struggle with. User feedback is being factored into program parallelization.
To that end, iCetus provides the user with information about how the compiler analyzes, transforms, and parallelizes the program, as well as displaying
the speedup gained from applying such optimization to the code. It offers a user interface for controlling program parallelization, based on this information.
Doing so combines user knowledge and classical compiler capabilities.
iCetus can be used for self-paced learning of different
parallelization techniques.
Cetus, the Compiler Engine:
The underneath compiler infrastructure used in this project is
Cetus. Cetus
is a source-to-source compiler research infrastructure supported by
the National Science Foundation(NSF). Cetus assists domain experts and researchers in efficiently parallelizing
their existing C/C++ applications using OpenMP parallel programming
model. It represents one of several software infrastructures that
support research and development of program analysis, optimization,
and translation techniques.