Abstract
Lawrence Rauchwerger, David Padua, "Parallelizing While Loops for Multiprocessor Systems," Technical Report, 1349, Center for Supercomputing Research & Development, University of Illinois, Urbana-Champaign, IL, Oct 1994.
Technical Report(ps, pdf, abstract)
Current parallelizing compilers treat while loops and do loops with conditional exits as sequential constructs because their iteration space is unknown. Motivated by the fact that these types of loops arise frequently in practice, we have developed techniques that can be used to automatically transform them for parallel execution. We succeed in parallelizing loops involving linked lists traversals -- something that has not been done before. This is an important problem since linked list traversals arise frequently in loops with irregular access patterns, such as sparse matrix computations. The methods can even be applied to loops whose data dependence relations cannot be analyzed at compile-time. We outline a cost/performance analysis that can be used to decide when the methods should be applied. Since, as we show, the expected speedups are significant, our conclusion is that they should almost always be applied -- providing there is sufficient parallelism available in the original loop. We present experimental results
on loops from the PERFECT Benchmarks and sparse matrix packages which substantiate our conclusion that these techniques can yield significant speedups.