Structure of LooPo
LooPo consists of a set of separate binaries which are invoked from
the front end.
All possible choices in the binaries should be controlled by options
in the command line. This way the front end can easily select all features
of the module. Usually, a Tk/Tcl option window for the new is built,
such that the user has easy acces to the features by clicking around,
and the front end just reads the respective Tk/Tcl variables and
propagates them as suitable options to the module.
Information exchange between different modules is done by intermediate
ASCII files. They are not meant for being read by human beings, but
by a computer---even if it is possible to read and interpret the file
yourself. Examples for these intermediate files are the parse tree
with the symbol table, the file describing the dependences, the index
spaces, the schedule, and so on.
In the following, there are the descriptions of all files, listed
according to the phase in which they are computed. Every file name
is a concatenation of the source file name, also called <project>,
plus ".out", appended by a suffix, describing the content, e.g.,
"check.src.out.dep".
- Scanner/Parser generates only
one file:
- Modeling and Dependence Analysis:
- <project.out>.dep*:
contains all dependences (the source and target domain and
the h-transformation [Feautrier ADA] of every dependence).
- <project.out>.fil*:
a copy of <project.out>.dep, which is used by the graphical
displayer dispo2 (this allows to remove dependences from being
displayed without ignoring them for the parallelizaion)
- <project.out>.ispc*:
contains all index spaces of all statements.
- <project.out>.dpmsg/.dplog*:
contains the output to the user which is displaed in the output
window.
- <project.out>.acc*:
contains all accesses to array variables.
- <project.out>.acp:
contains all Access_pairs (possibly conflicting array accesses).
- <project.out>.grp*:
contains the "statement groups", where one group contains all
statements which are surrounded by the same loops.
- <project.out>.dpbak:
contains a backup of the input file.
- <project.out>:
The input file is possibly overwritten if parameters are inserted
during the dependence analysis
- Transformations (Scheduler and
Allocators):
- Target Loop Generator:
- <project.out>.trafo:
contains the list of the transformation matrices used and their
inverse matrices, plus a list of vectors indicating the indices that make
up the basis of the transformation and linear combinations for each
index bound by a loop that does not build a base vector for the transformation.
- <project.out>.tispc:
contains the transformed index space - <project.out>.trc:
contains a list of additional conditions
- <project.out>.qual:
contains information about the different kinds of loops which surround the
target statements
The SpecToLooPo tool has its own input file format described
here.
In addition, we have a brief description of how to add a new module to the
frontend.
Martin Griebl