Wednesday, October 14, 2009

ReLooper

I've never touched Fortran, but from what I understand from a little Googling, the loop parallelization in Fortran was probably largely related to declarative data parallelization.  Modern languages such as Java have considerably more complex semantics in common usage.  Apparently in Fortran independence between these operations was considerably more common, whereas in OO, sharing of objects makes this harder.

In terms of usefulness factors, I found it quite complete from an abstract perspective.  If I were to use a tool like this on a commercial project, I would want a way to know what kind of benefit I might expect to see at a whole-program level.  Even if it were a considerably simplified algorithm, to at least know that there are X potential refactoring opportunities would be beneficial.

For safeness of concurrent execution, while I didn't understand some of the notation in the analysis, I can think of a couple ways in which it would be hard/impossible to know about safeness.  Any place involving dynamic binding would obviously cause an issue with "static analysis" (obviously, hence the name), but I could see that some applications that make heavy use of such methods would have essentially no use for such a tool.  Additionally, I'm not sure if its possible in Java, but in .NET there is an interop layer with unmanaged code, where you would have no facility available for code analysis.

No comments:

Post a Comment