| | |
Summary: Evaluating Compiler Techniques for Thread Coarsening \Lambda
Gary M. Zoppetti Gagan Agrawal
Department of Computer and Information Sciences
University of Delaware, Newark DE 19716
fzoppetti,agrawalg@cis.udel.edu
Xinan Tang Jose Nelson Amaral Guang Gao
Department of Electrical and Computer Engineering
University of Delaware, Newark DE 19716
ftang,amaral,ggaog@capsl.udel.edu
Abstract
Thread partitioning is an important task in compiling highlevel languages for multithreaded architectures.
Nonpreemptive multithreaded architectures, which can be built from offtheshelf components, require that if a
thread issues a potentially remote memory request, then any statement that is data dependent upon this request
must be in a separate thread.
When performing thread partitioning on codes that use pointerbased recursive data structures, threads
of unnecessarily small granularity get generated, which, because of thread switching costs, leads to increased
execution time. In this paper, we evaluate three compiler techniques for generating threads of higher granularity.
Our experiments were performed using the EARTHC compiler and the EARTH multithreaded architecture
model emulated on both a cluster of Pentium PCs and a distributed memory multiprocessor. On our set of 6
pointerbased programs, these techniques reduced the static number of threads by 38%. Reductions in execution
|