journal articleresearch article

Function level parallelism driven by data dependencies

Abstract

With the rise of Chip multiprocessors (CMPs), the amount of parallel computing power will increase signif- icantly in the near future. However, most programs are sequential in nature and have not been explicitly paral- lelized, so they cannot exploit these parallel resources. Au- tomatic parallelization of sequential, non-regular codes is very hard, as illustrated by the lack of solutions after more than 30 years of research on the topic. The question remains if there is parallelism in sequential programs that can be de- tected automatically and if so, how much parallelism there is. In this paper, we propose a framework for extracting poten- tial parallelism from programs. Applying this framework to sequential programs can teach us how much parallelism is present in a program, but also tells us what the most appro- priate parallel construct for a program is, e.g. a pipeline, master/slave work distribution, etc. Our framework is profile-based, implying that it is not safe. It builds two new graph representations of the profile-data: the interprocedural data flow graph and the data sharing graph. This graphs show the data-flow between functions and the data structures facilitating this data-flow, respec- tively. We apply our framework on the SPECcpu2000 bzip2 bench- mark, achieving a speedup of 3.74 of the compression part and a global speedup of 2.45 on a quad processor system

Similar works

This paper was published in Ghent University Academic Bibliography.

Having an issue?

Is data on this page outdated, violates copyrights or anything else? Report the problem now and we will take corresponding actions after reviewing your request.

Licence: info:eu-repo/semantics/openAccess