Automatic Program Parallelization Using Traces

We present a novel automatic parallelization approach that uses traces. Our approach uses a binary representation of a program, allowing for the parallelization of programs even if their full source code is not available. Furthermore, traces can represent both iteration and recursion. We use hardwar...

Full description

Bibliographic Details
Main Author: Bradel, Borys
Other Authors: Abdelrahman, Tarek S.
Language:en_ca
Published: 2010
Subjects:
Online Access:http://hdl.handle.net/1807/26502
id ndltd-LACETR-oai-collectionscanada.gc.ca-OTU.1807-26502
record_format oai_dc
spelling ndltd-LACETR-oai-collectionscanada.gc.ca-OTU.1807-265022013-11-02T03:42:23ZAutomatic Program Parallelization Using TracesBradel, Borysautomatic parallelizationtraces0544We present a novel automatic parallelization approach that uses traces. Our approach uses a binary representation of a program, allowing for the parallelization of programs even if their full source code is not available. Furthermore, traces can represent both iteration and recursion. We use hardware transactional memory (HTM) to ensure correct execution in the presence of dependences. We describe a parallel trace execution model that allows sequential programs to execute in parallel. In the model, traces are identified by a trace collection system (TCS), the program is transformed to allow the traces to execute on multiple processors, and the traces are executed in parallel. We present a framework with four components that, with a TCS, realizes our execution model. The grouping component groups traces into tasks to reduce overhead and make identification of successor traces easier. The packaging component allows tasks to execute on multiple processors. The dependence component deals with dependences on reduction and induction variables. In addition, transactions are committed in sequential program order on an HTM system to deal with dependences that are not removed. Finally, the scheduler assigns tasks to processors. We create a prototype that parallelizes programs and uses an HTM simulator to deal with dependences. To overcome the limitations of simulation, we also create another prototype that automatically parallelizes programs on a real system. Since HTM is not used, only dependences on induction and reduction variables are handled. We demonstrate the feasibility of our trace-based parallelization approach by performing an experimental evaluation on several recursive and loop-based Java programs. On the HTM system, the average speedup of the computational phase of the benchmarks on four processors is 2.79. On a real system, the average speedup on four processors is 1.83. Therefore, the evaluation indicates that trace-based parallelization can be used to effectively parallelize recursive and loop-based Java programs based on their binary representation.Abdelrahman, Tarek S.2010-112011-03-16T13:43:05ZNO_RESTRICTION2011-03-16T13:43:05Z2011-03-16T13:43:05ZThesishttp://hdl.handle.net/1807/26502en_ca
collection NDLTD
language en_ca
sources NDLTD
topic automatic parallelization
traces
0544
spellingShingle automatic parallelization
traces
0544
Bradel, Borys
Automatic Program Parallelization Using Traces
description We present a novel automatic parallelization approach that uses traces. Our approach uses a binary representation of a program, allowing for the parallelization of programs even if their full source code is not available. Furthermore, traces can represent both iteration and recursion. We use hardware transactional memory (HTM) to ensure correct execution in the presence of dependences. We describe a parallel trace execution model that allows sequential programs to execute in parallel. In the model, traces are identified by a trace collection system (TCS), the program is transformed to allow the traces to execute on multiple processors, and the traces are executed in parallel. We present a framework with four components that, with a TCS, realizes our execution model. The grouping component groups traces into tasks to reduce overhead and make identification of successor traces easier. The packaging component allows tasks to execute on multiple processors. The dependence component deals with dependences on reduction and induction variables. In addition, transactions are committed in sequential program order on an HTM system to deal with dependences that are not removed. Finally, the scheduler assigns tasks to processors. We create a prototype that parallelizes programs and uses an HTM simulator to deal with dependences. To overcome the limitations of simulation, we also create another prototype that automatically parallelizes programs on a real system. Since HTM is not used, only dependences on induction and reduction variables are handled. We demonstrate the feasibility of our trace-based parallelization approach by performing an experimental evaluation on several recursive and loop-based Java programs. On the HTM system, the average speedup of the computational phase of the benchmarks on four processors is 2.79. On a real system, the average speedup on four processors is 1.83. Therefore, the evaluation indicates that trace-based parallelization can be used to effectively parallelize recursive and loop-based Java programs based on their binary representation.
author2 Abdelrahman, Tarek S.
author_facet Abdelrahman, Tarek S.
Bradel, Borys
author Bradel, Borys
author_sort Bradel, Borys
title Automatic Program Parallelization Using Traces
title_short Automatic Program Parallelization Using Traces
title_full Automatic Program Parallelization Using Traces
title_fullStr Automatic Program Parallelization Using Traces
title_full_unstemmed Automatic Program Parallelization Using Traces
title_sort automatic program parallelization using traces
publishDate 2010
url http://hdl.handle.net/1807/26502
work_keys_str_mv AT bradelborys automaticprogramparallelizationusingtraces
_version_ 1716612374144745472