Dienstag, 23. November 2010

AutoProfiler - Mesuring method performance

Hello everybody,

explicit parallel constructs were great in the beginning of the multicore era, but now, where we're facing dozens of chips on a processor. This is not well suited anymore for general purpose applications.

We conducted studies in parallelizing sequential applications, reaching from fairly simple algorithms to general purpose-applications and learned, that the advantages of parallel computing relate to the degree of the parallelization scheme used when converting sequential to parallel code.

Of course, there is still the need to have an experienced developer dive deep into the code, analyze it and transform that to a parallel version - in other words: fine-grained explicit parallelization. Algorithmic parallelizations often profit from this scheme for example .

For general purpose applications though, it's a complete different story: Here, the focus rather lies on somewhat coarse-grained structures such as methods. Combining this aspect with object-oriented design, me and the fellow researchers Georgios Tournavitis et al. (University of Edinburgh) come to the same conclusion: A holistic approach to parallelization of general purpose applications begins with the detection of methods or blocks of coherent code.

Currently, we focus on developing an automated approach to analyzing sequential code in our research group. We developed a tool named "AutoProfiler", which extracts possibly interesting regions of code according to the runtime profile having been created and instrumented completely automatically. We see this tool as a first approach to detect software design patterns. In our evaluation, we used a benchmark set of over 20 fairly small algorithms and programs together with real-world applications having been parallelized manually such as a desktop search. We compared the results we got from AutoProfiler with the methods that have been touched in a manual parallelization process. We found, that in over 80% AutoProfiler proposes the correct methods. In other words: AutoProfiler is able to detect over 80% of those methods, that a programmer would want to parallelize - good news!

So, this proves us right - now we'll take the next step forward.

K!