[LLVMdev] Dependence Analysis [was: Flow-Sensitive AA]

Vikram S. Adve vadve at cs.uiuc.edu
Wed Sep 3 13:29:16 PDT 2008


David, I agree with all of what you said here except for one point:


On Sep 3, 2008, at 3:06 PM, David Greene wrote:
<snip>
>>
>> This is what I had in mind when I talked above the difficulty of  
>> having
>> a good API that do not change every time a new analysis is added. I
>> doubt this API could be defined without the review of analysis  
>> users and
>> writers.
>
> But ultimately these "tricks" such as runtime decision-making are  
> not under
> the purvue of the memory dependence analysis.  In these cases the  
> compiler is
> "forcing" an answer it wants by create code paths where it knows  
> certain
> properties.  There's no analysis necessary because the compiler  
> created those
> paths in the first place with very specific goals in mind.

That may not be the case because the compiler may need dependence  
"breaking conditions" to generate this code.  For example, such a  
condition might say [a particular instruction pair does not have a  
dependence if] "N > sizeof(A)" or "i + j < 10".  The dependence *test*  
usually has to generate this condition, e.g., polyhedral analyses like  
Omega can do this.

The same functionality could also be useful for interactive porting  
tools helping users port programs to a parallel language, one of the  
target projects for the dependence analyzer here at Illinois.

Having said that ...


>  I think the
> interface you've outlined above is sufficient for now.  We'll gain  
> experience
> and add to it later if necessary.
<snip>

... I agree: let's do the basic Yes/No/Maybe and Direction/Distance  
vectors for now, and add more sophisticated queries as clients emerge  
for them.

--Vikram
Associate Professor, Computer Science
University of Illinois at Urbana-Champaign
http://llvm.org/~vadve




More information about the llvm-dev mailing list