Related articles |
---|
dependence graphs for vector machines roger@ac.upc.es (1993-04-16) |
Newsgroups: | comp.compilers |
From: | roger@ac.upc.es |
Keywords: | optimize, vector, question |
Organization: | Compilers Central |
Date: | Fri, 16 Apr 1993 17:18:52 GMT |
We are two PhD students working on instruction scheduling for vector
processors. We would like to test different register allocators and
instruction scheduling algorithms on a set of FORTRAN vectorizable loops.
^^^^^^^^^^^^
In order to do that we need to have the (low-level) dependence graph of each
loop, something like:
VLD VLD VLD VLD
\ / \ /
\ / \ /
\ / \ /
VADD VADD
\ /
\ /
\ /
\ /
\ /
\ /
VMUL
|
|
VST
Our problem is how to obtain these graphs from the Fortran loops. We are
thininkg on the following solutions:
1) Compile the loops with a real vectorizing compiler ( the Convex one in
our case) and get the assembler produced. Eliminate all the scalar code
from the assembler and keep only the vector part. Write a little program
that constructs the dependence graph from that ( renaming registers to
eliminate artificial dependencies ).
Problems with this approach:
- Difficult to handle memory aliases (i.e. is VLD 300(a3),r1
dependent on VLD 500(a3),r2 or not ? )
- The graph produced is? (terribly?) biased by the compiler used
2) Given that we are interested in loops, and usually the body of a loop is
"simple" (mainly expressions and assignment), write a tiny compiler
that parses the loops and generates the graph.
Problems with this approach:
- We won't be able to perform all the usual optimizations that a
compiler does (cse, strength reduction ...) so we'll probably end up
with a graph not very representative of real programs
3) Is there any tool that does what we want ?
4) Does the latest GNU gcc version (2.3.3?) vectorize for the convex ?
4) Is there source code for a vectorizing compiler freely available ?
5) Any other suggestions ?
Thanks,
Roger Espasa
e-mail: roger@ac.upc.es
Marta Jimenez
e-mail: marta@ac.upc.es
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.