Like most compilers, LooPo consists of a number of modules which transform the source program to an executable target program. There are modules for scanning and parsing, dependence analysis, scheduling, allocation, target loop nest generation and target code output. There is also a graphical displayer (Dispo) of index spaces and iteration dependence graphs of loop nests.
Each of these modules reflects a self-contained part of the project and resides in a separate binary file. A front end provides a graphical interface by which he/she can control all modules of LooPo. In order to optimize LooPo's results and suit the needs of the user, most modules provide an option window where specific features can be altered.
Communication between modules is usually realized by data exchange via files in a temporary directory whose location is being displayed in the top-level window. Interaction between the front end and the other modules takes place by uni-directional FIFO communication in one direction and by command line options in the other.
In the sequel detailed information about the modules and their usage is being presented.