Automatic Parallelization: Executing Sequential Programs on a Task-Based Parallel Runtime
Alcides Fonseca, Bruno Cabral, Jo\~ao Rafael, Ivo Correia

TL;DR
This paper introduces a new compiler and runtime system that automatically parallelizes sequential Java programs by analyzing dependencies, restructuring code into tasks, and efficiently scheduling them, achieving significant speedups.
Contribution
A novel parallelizing compiler and runtime approach that automatically transforms sequential Java code into parallel tasks with dependency analysis and dynamic scheduling.
Findings
Achieved higher speedups on benchmark programs compared to existing methods.
Generated parallel code is comparable to manual parallelization in performance.
Produced code is readable and easily tunable for further optimization.
Abstract
There are billions of lines of sequential code inside nowadays' software which do not benefit from the parallelism available in modern multicore architectures. Automatically parallelizing sequential code, to promote an efficient use of the available parallelism, has been a research goal for some time now. This work proposes a new approach for achieving such goal. We created a new parallelizing compiler that analyses the read and write instructions, and control-flow modifications in programs to identify a set of dependencies between the instructions in the program. Afterwards, the compiler, based on the generated dependencies graph, rewrites and organizes the program in a task-oriented structure. Parallel tasks are composed by instructions that cannot be executed in parallel. A work-stealing-based parallel runtime is responsible for scheduling and managing the granularity of the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
