featherlight speculative task parallelism · 2020-06-16 · featherlight speculative task...

33
Vivek Kumar IIIT New Delhi, India Featherlight Speculative Task Parallelism

Upload: others

Post on 04-Aug-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Vivek Kumar IIIT New Delhi, India

Featherlight Speculative Task Parallelism

Page 2: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Outline

•  Introduction •  Contributions •  Motivating analysis •  Insights and approach •  Implementation •  Experimental Evaluation •  Summary

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Page 3: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Introduction

3

Goal Based Exploration

Page 4: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Speculative Parallel Programming

•  Parallel programming for goal(s) based exploration

•  Not all exploration paths can fetch the expected result(s) –  Once the goal is found, the search should terminate –  Highly irregular computation

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Introduction

4

Page 5: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Introduction

5

Goal Based Exploration •  Unbalanced tree search

–  Search for a unique red node in an unbalanced tree

–  Sequential execution time using DFS

–  21 units

Page 6: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Introduction

6

Goal Based Exploration •  Unbalanced tree search

–  By using 3 threads, one for each outgoing edge from the root?

•  Total execution time (DFS) –  9 units (minimum) –  4 units of redundant

execution

T1 = 7 units

T2 = 9 units T3=5 units

Page 7: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

The Problem

7

Goal Based Exploration: Challenges? – Software parallelism is

difficult to identify and expose

•  Dynamic task parallelism – How to cancel the

redundant execution once a goal is found?

•  Speculative task cancellation

T1 = 5 units

T2 = 5 units T3=5 units

Page 8: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Contributions

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8

✔ Featherlight programming model For speculative task parallelism that supports serial elision, and doesn’t require task cancellation checks

✔ Lightweight runtime implementation That leverage mechanisms within modern JVMs

✔ Detailed productivity study Using a classroom-based study

✔ Detailed performance study Using both micro and real-world benchmarks

Page 9: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Motivating Analysis

9Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Page 10: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Sequential Unbalanced Tree Search (UTS)

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Motivating Analysis

10

1. class UTS {2.  boolean found = false;3.  void search() {4.  recurse(rootNode); 5.  }6.  void recurse(Node n) {7.  if(n.equals(goal)) {8.  found = true; 9.  return;10.  }11.  for(int i=0; i<n.nChild; i++) {12.  recurse(n.child[i]);13.  }14.  }15. }

Page 11: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Parallel UTS: Java fork/join

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Motivating Analysis

11

1. class UTS {2.  boolean found = false;3.  void search() {4.  recurse(rootNode); 5.  }6.  void recurse(Node n) {7.  if(n.equals(goal)) {8.  found = true; 9.  return;10.  }11.  for(int i=0; i<n.nChild; i++) {12.  recurse(n.child[i]);13.  }14.  }15. }

1.  class UTS {2.  boolean found = false;3.  ForkJoinPool pool=new ForkJoinPool(2);4.  void search() {5.  try {6.  pool.invoke(new RecursiveAction(){7.  public void compute() {8.  new Recurse(rootNode).fork(); 9.  helpQuiesce();10.  }11.  });12.  } catch(CancellationException e){}13.  }14.  class Recurse extends RecursiveAction {15.  Node n;16.  public Recurse(Node _n) {n=_n;}17.  public void compute() {18.  if(n.equals(goal)) {19.  found = true; 20.  pool.shutdownNow();21.  }22.  for(int i=0; i<n.nChild; i++) {23.  new Recurse(n.child[i]).fork();24.  }25.  }26.  }27. }

EASY Hard

LOC=15

LOC=27 •  No serial elision •  Task granularity control required •  Task cancellation checks not required

–  However, applications can’t use try/catch for InterruptedException

Page 12: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Parallel UTS: async-finish (TryCatchWS*)

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Motivating Analysis

12

1. class UTS {2.  boolean found = false;3.  void search() {4.  recurse(rootNode); 5.  }6.  void recurse(Node n) {7.  if(n.equals(goal)) {8.  found = true; 9.  return;10.  }11.  for(int i=0; i<n.nChild; i++) {12.  recurse(n.child[i]);13.  }14.  }15. }

1. class UTS {2.  boolean found = false;3.  void search() {4.  recurse(rootNode); 5.  }6.  void recurse(Node n) {7.  if(n.equals(goal)) {8.  found = true; 9.  return;10.  }11.  for(int i=0; i<n.nChild; i++) {12.  recurse(n.child[i]);13.  }14.  }15. }

EASY

EASY LOC=15

•  Supports serial elision •  Task granularity control not required •  No special support for speculative task parallelism

–  Task cancellation checks required * Kumar et al., Work-stealing without the baggage, OOPSLA 2012

finish

async

Page 13: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Parallel UTS: async-finish (TryCatchWS*)

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Motivating Analysis

13

1. class UTS {2.  boolean found = false;3.  void search() {4.  recurse(rootNode); 5.  }6.  void recurse(Node n) {7.  if(n.equals(goal)) {8.  found = true; 9.  return;10.  }11.  for(int i=0; i<n.nChild; i++) {12.  recurse(n.child[i]);13.  }14.  }15. }

1. class UTS {2.  AtomicBoolean found = /*allocate*/3.  void search() {4.  finish recurse(rootNode); 5.  }6.  void recurse(Node n) {7.  if(found.get()) return;8.  if(n.equals(goal)) {9.  found.set(true); 10.  return;11.  }12.  for(int i=0; i<n.nChild; i++) {13.  if(found.get()) return;14.  async recurse(n.child[i]);15.  }16.  }17. }

EASY

HARD •  Task cancellation checks –  Inside every method in the call chain –  Multiple search criteria can complicate the cancellation checks –  Atomic cancellation tokens

•  May lead to data races if not used properly * Kumar et al., Work-stealing without the baggage, OOPSLA 2012

Page 14: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Insights

•  Cost of tasks cancellation should not incur in common case

•  Re-use existing mechanisms inside modern JVMs

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Motivating Analysis

14

Page 15: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

•  Cancellation initiation –  Featherlight programming model

✔ abort keyword to initiate cancellation ✔ finish_abort keyword to group tasks searching for same goal

•  Handling task cancellation ✔ Java exception handling (try–catch blocks) ✔ Yieldpoint mechanism to stop running threads ✔ Thread stack walk to identify cancelable tasks

Approach

15Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Page 16: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Implementation

16Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Page 17: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

17

1. class UTS {2.  boolean found = false;3.  void search() {4.  recurse(rootNode); 5.  }6.  void recurse(Node n) {7.  if(n.equals(goal)) {8.  found = true; 9.  return;10.  }11.  for(int i=0; i<n.nChild; i++) {12.  recurse(n.child[i]);13.  }14.  }15. }

1. class UTS {2.  boolean found = false;3.  void search() {4.  finish_abort recurse(rootNode); 5.  }6.  void recurse(Node n) {7.  if(n.equals(goal)) {8.  found = true; 9.  abort;10.  return; 11. }12.  for(int i=0; i<n.nChild; i++) {13.  async recurse(n.child[i]);14.  }15.  }16. }

EASY

EASY LOC=15

•  Based on TryCatchWS work-stealling runtime –  Supports serial elision –  Task granularity control not required

•  Task cancellation checks not required –  abort cancels all async tasks only within the parent finish_abort

Featherlight Programming Model

finish_abort

abort;

Page 18: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

18

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

recurse()

search()

recurse()

recurse()

search()

recurse()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

abort()

Work-stealing thread

Yieldpoint Mechanism

Page 19: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

19

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

recurse()

search()

recurse()

recurse()

search()

recurse()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

abort()

Work-stealing thread

this.abort=true

Page 20: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

20

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

recurse()

search()

recurse()

recurse()

search()

recurse()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

abort()

Work-stealing thread

this.abort=true

Page 21: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

21

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

recurse()

search()

recurse()

recurse()

search()

recurse()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

abort()

Work-stealing thread

this.abort=true

Page 22: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

22

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

recurse()

search()

recurse()

recurse()

search()

recurse()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

abort()

Work-stealing thread

if(this.abort){ // throw exception // ConsumerAborting}

Page 23: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

23

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

recurse()

search()

recurse()

recurse()

search()

recurse()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

abort()

Work-stealing thread

try { /* register finish_abort scope */ recurse(rootNode);} catch ( ProducerAborting e ) { // 1. Wait until all relevant workers aborted // 2. Enable global work-stealing} catch ( ConsumerAborting e ) { // 1. Notify the producer that I’ve aborted // 2. Start stealing task from others}

if(this.abort){ // throw exception // ConsumerAborting}

Page 24: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

24

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

recurse()

search()search()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

abort()

Work-stealing thread

try { /* register finish_abort scope */ recurse(rootNode);} catch ( ProducerAborting e ) { // 1. Wait until all relevant workers aborted // 2. Enable global work-stealing} catch ( ConsumerAborting e ) { // 1. Notify the producer that I’ve aborted // 2. Start stealing task from others}

Page 25: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

25

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

recurse()

search()search()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

abort()

Work-stealing thread

try { /* register finish_abort scope */ recurse(rootNode);} catch ( ProducerAborting e ) { // 1. Wait until all relevant workers aborted // 2. Enable global work-stealing} catch ( ConsumerAborting e ) { // 1. Notify the producer that I’ve aborted // 2. Start stealing task from others}

Page 26: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

26

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

search()search()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

Work-stealing thread

try { /* register finish_abort scope */ recurse(rootNode);} catch ( ProducerAborting e ) { // 1. Wait until all relevant workers aborted // 2. Enable global work-stealing} catch ( ConsumerAborting e ) { // 1. Notify the producer that I’ve aborted // 2. Start stealing task from others}

Page 27: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Implementation

27

Featherlight Runtime ....void search() { finish_abort recurse(rootNode); }void recurse(Node n) { if(n.equals(goal)) { ... abort; } ....

if (/* someone already initiated abort */) return;// Disable global work-stealingForall( /* thread “t” except myself */ ) { // 1. stop “t” inside yieldpoint // 2. if t” registered on my finish_abort // then mark abort flag on “t” as true // 3. allow “t” to resume from yieldpoint // 4. throw exception “ProducerAborting”}

search()search()

Work-stealing thread

Sta

ck G

row

th D

irect

ion

Work-stealing thread

try { /* register finish_abort scope */ recurse(rootNode);} catch ( ProducerAborting e ) { // 1. Wait until all relevant workers aborted // 2. Enable global work-stealing} catch ( ConsumerAborting e ) { // 1. Notify the producer that I’ve aborted // 2. Start stealing task from others}

Page 28: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Experimental Evaluation

28Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Page 29: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Methodology

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Experimental Evaluation

29

•  Benchmarks –  Goal based exploration –  Micro kernels

•  UTS •  LinearSearch •  NQueens •  ShortLongPath •  Sudoku •  TravelingSalesman

–  Real-world •  Dacapo lusearch-fix

•  Hardware Platform –  2 Intel Xeon E5-2650

•  10 cores each

•  Software Platform –  Jikes RVM

Runtime+Benchmarks: https://github.com/hipec/ featherlight/archive/4075770.tar.gz

Page 30: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Productivity Analysis (1/2)

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Experimental Evaluation

30

Benchmark Common Code

Sequential Featherlight ManualAbort Java ForkJoin

UTS 545 39 0 6 19

LinearSearch 88 44 0 2 31

NQueens 75 48 0 5 20

ShortLongPath 558 54 0 6 22

Sudoku 469 48 0 6 18

Traveling Salesman

158 55 0 6 29

Dacapo lusearch-fix

>126K 222 0 20 19

•  Extra LoC compared to Sequential version

Page 31: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Productivity Analysis (2/2)

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Experimental Evaluation

31

•  Time (minutes) spent by students in classroom for implementing the parallel versions

Benchmark Subjects Mean Subjects Mean

UTS 9 8.6 9 52.2 LinearSearch

NQueens 7 13.6 8 61 ShortLongPath 6 11.7 8 43.4

Sudoku 6 6 8 58.8 Traveling Salesman

7 10.4 8 53.1

Dacapo lusearch-fix

Featherlight Java Fork/Join LinearSearch was not included as both its parallel implementations were provided as examples. Dacapo was not included due to its cumbersome setup.

Page 32: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Performance Analysis

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Experimental Evaluation

32

0 10 20 30 40 50 60 70

Spe

edup

ove

r seq

uent

ial J

ava

Threads = 20

Page 33: Featherlight Speculative Task Parallelism · 2020-06-16 · Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019 8 Featherlight programming model For speculative

Summary and Conclusion

Featherlight Speculative Task Parallelism | Vivek Kumar | EuroPar 2019

Summary

33

•  Speculative task parallelism –  Task cancellation checks reduce productivity

•  Featherlight –  Automatic cancellation of speculative tasks

•  Improves productivity without degrading performance

–  finish_abort •  Synchronization and grouping of cancelable tasks •  Uses try/catch blocks

–  abort •  Initiates cancellation •  Reuses existing mechanism inside modern JVMs

–  Yieldpoint mechanism to stop the threads –  Stack walk to identify cancelable tasks