Pith. Sign in

RECORD

Automatic Parallelization: Executing Sequential Programs on a Task-Based Parallel Runtime

Programming Languages · Submitted 11 Apr 2016

abstract compiled · 2026-09-23 · no language-model review

The authors' main claim We have evaluated our approach on 8 benchmark programs against OoOJava, achieving higher speedups.

how it is stated · asserted 1.00 read the record →

Comment (0) Read on arXiv ↗
Cite ▾
arXiv ID1604.03211 (version 1)
Pith IDUDI65BP6, Pith's permanent record of this paper and its review
CitationAlcides Fonseca, Bruno Cabral, Ivo Correia, Jo\~ao Rafael. "Automatic Parallelization: Executing Sequential Programs on a Task-Based Parallel Runtime." arXiv:1604.03211 (2016). https://pith.science/paper/UDI65BP6
Claim paper

The compiled record

The paper's own sentences, arranged. Each label is drawn from a closed vocabulary; the number beside it is the probability the classifier gave that label. Numbers in the tables are the authors', checked by code. No sentence in this record was written by a model.

Open the compiled record

Compiled by classifier-1.13.0 via TypeSafe API, question bank abstract-p1-20260923, 2026-09-23: 1 request, 8,643 input tokens.

What the abstract itself states, as probabilities: claims first 0.05 · states limitation 0.59 · human participants 0.03 · controlled comparison 0.90 · randomized assignment 0.01 · states quantitative result 0.82 · compares with prior results 0.97 · mentions code or data availability 0.03.

The abstract, sentence by sentence

arXiv listing abstract v1. Results and the main claim are underlined; .

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 generated tasks. Furthermore, a compile-time granularity control mechanism also avoids creating unnecessary data-structures. This work focuses on the Java language, but the techniques are general enough to be applied to other programming languages. We have evaluated our approach on 8 benchmark programs against OoOJava, achieving higher speedups. In some cases, values were close to those of a manual parallelization. The resulting parallel code also has the advantage of being readable and easily configured to improve further its performance manually.

background contribution method result interpretation main claim

What the classifier reports for each sentence. The number is the probability it gave the label.
#sentencerolethe authors' own workstates the main conclusionstrength
s0 There are billions of lines of sequential code inside nowadays' software which do not benefit from the parallelism available in modern multicore architectures. background 0.99 0.08 0.02 asserted 1.00
s1 Automatically parallelizing sequential code, to promote an efficient use of the available parallelism, has been a research goal for some time now. background 1.00 0.03 0.02 asserted 1.00
s2 This work proposes a new approach for achieving such goal. contribution 1.00 0.68 0.06 asserted 0.94
s3 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. method 0.89 0.95 0.04 asserted 1.00
s4 Afterwards, the compiler, based on the generated dependencies graph, rewrites and organizes the program in a task-oriented structure. method 0.99 0.90 0.04 asserted 1.00
s5 Parallel tasks are composed by instructions that cannot be executed in parallel. method 0.97 0.35 0.04 asserted 0.99
s6 A work-stealing-based parallel runtime is responsible for scheduling and managing the granularity of the generated tasks. method 0.98 0.50 0.04 asserted 1.00
s7 Furthermore, a compile-time granularity control mechanism also avoids creating unnecessary data-structures. method 0.84 0.81 0.04 asserted 1.00
s8 This work focuses on the Java language, but the techniques are general enough to be applied to other programming languages. limitation 0.83 0.34 0.04 asserted 0.79
s9 We have evaluated our approach on 8 benchmark programs against OoOJava, achieving higher speedups. result 0.99 0.97 0.35 asserted 1.00
s10 In some cases, values were close to those of a manual parallelization. result 0.97 0.91 0.10 asserted 0.85
s11 The resulting parallel code also has the advantage of being readable and easily configured to improve further its performance manually. result 0.50 0.72 0.19 asserted 0.99

What kind of paper the classifier reports this is: method or tool 1.00 · evidence from observation or experiment 0.96.

What was examined, and what was not

sources read
  • arXiv listing abstract v1
not examined
  • full text
  • figures and tables
  • references and citing sentences
  • relations to other papers
levels run
  • P abstract
not run
  • S sections
  • T body sentences
  • C citations
  • R cross-paper relations

Every quoted sentence on this record is the authors'. Every label is from Pith's closed vocabulary, with the probability shown beside it. Every number in the measurements table is the authors', checked by code. Record as JSON

The paper
Original 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 generated tasks. Furthermore, a compile-time granularity control mechanism also avoids creating unnecessary data-structures. This work focuses on the Java language, but the techniques are general enough to be applied to other programming languages. We have evaluated our approach on 8 benchmark programs against OoOJava, achieving higher speedups. In some cases, values were close to those of a manual parallelization. The resulting parallel code also has the advantage of being readable and easily configured to improve further its performance manually.

Human review

Discussion

Know something about this paper? Leave a comment, or highlight any passage above to comment on it.