Runtime on-stack parallelization of dependence-free for-loops in binary programs
IEEE Letters of the Computer Society • 2019
Publication Information
Authors
Marwa Yusuf, Ahmed El-Mahdy, Erven Rohou
Keywords
Compilers; Runtime; Optimization; Parallelization; Binary; Pthreads; On-Stack Replacement
Journal
IEEE Letters of the Computer Society
Publisher
IEEE
Volume
2
Issue
1
Pages
1-4
publication.type
International
Paper Link
Open Link
Supplementary Materials
Not Available
Abstract
With the multicore trend, the need for automatic parallelization is more pronounced, especially for legacy and proprietary
code where no source code is available and/or the code is already running and restarting is not an option. In this paper, we engineer a
mechanism for transforming at runtime a frequent for-loop with no data dependencies in a binary program into a parallel loop, using
on-stack replacement. With our mechanism, there is no need for source code, debugging information or restarting the program. Also,
the mechanism needs no static instrumentation or information. The mechanism is implemented using the Padrone binary modification
system and pthreads, where the remaining iterations of the loop are executed in parallel. The mechanism keeps the running program
state by extracting the targeted loop into a separate function and copying the current stack frame into the corresponding frames of the
created threads. Initial study is conducted on a set of kernels from the Polybench workload. Experimental results show from 2× to
3.5× speedup from sequential to parallelized code on four cores, which is similar to source code level parallelization.
code where no source code is available and/or the code is already running and restarting is not an option. In this paper, we engineer a
mechanism for transforming at runtime a frequent for-loop with no data dependencies in a binary program into a parallel loop, using
on-stack replacement. With our mechanism, there is no need for source code, debugging information or restarting the program. Also,
the mechanism needs no static instrumentation or information. The mechanism is implemented using the Padrone binary modification
system and pthreads, where the remaining iterations of the loop are executed in parallel. The mechanism keeps the running program
state by extracting the targeted loop into a separate function and copying the current stack frame into the corresponding frames of the
created threads. Initial study is conducted on a set of kernels from the Polybench workload. Experimental results show from 2× to
3.5× speedup from sequential to parallelized code on four cores, which is similar to source code level parallelization.
Staff Members - Benha University