[LLVMdev] LLVM and OpenMP
Wojciech Matyjewicz
wmatyjewicz at fastmail.fm
Fri Jan 18 06:28:36 PST 2008
>> Yup, just get the array accesses under scev form, and set a constraint
>> system from these. Once you set up the constraint systems for the
>> dependence distance vectors, you're almost done. You can look at how
>> this is set up in gcc trunk tree-data-ref.c, and search for omega.
>>
>> I would recommend the omega test: get the c++ code for omega lib from
>> http://www.cs.umd.edu/projects/omega/
>
> Regardless of which solver you use, you should keep a clean interface
> between your constraint representation and the solver. I like Omega a
> lot and it is a fine choice for the first solver. Although it is very
> powerful, even it cannot handle symbolic loop strides. Perhaps more
> importantly for common uses, for many trivial cases (A[x] and A[x+1]),
> setting up the Omega data structures to invoke the solver can be too
> heavyweight. It could be worthwhile to add one or more simple solvers
> (see the Allen and Kennedy textbook for examples) before falling back
> on Omega.
Sebastian, Vikram, thank you for the advices.
My initial plan was to implement the methods from the Allen and Kennedy
book. I'll see if I find time to add the Omega solver as a fallback,
too. I am not very familiar with GCC internals, but having taken a look
at tree-data-ref.c, it seems it would be the same approach as there.
Wojtek
More information about the llvm-dev
mailing list