Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 6

DownloadGuide
Open PDF In BrowserView PDF
Featherlight Speculative Task Parallelism
(Artifact)
Vivek Kumar
Department of Computer Science and Engineering, IIIT Delhi, India
vivekk@iiitd.ac.in

Abstract. Speculative task parallelism is a widely used technique for
solving search based irregular computations such as graph algorithms.
Here, tasks are created speculatively to traverse different search spaces
in parallel. Only a few of these tasks succeed in finding the solution, after
which the remaining tasks are canceled. For ensuring timely cancellation
of tasks, existing frameworks either require programmer introduced cancellation checks inside every method in the call chain, thereby hurting
the productivity, or provide limited parallel performance.
This artifact includes an implementation of Featherlight [1], a new programming model for speculative task parallelism that satisfies the serial
elision property and doesn’t require any task cancellation checks. We
also include the source code of the different benchmarks presented in
the paper. The interested reader can use the artifact to experiment with
Featherlight implementation.
Keywords: Speculative Parallelism, Async-Finish Programming, Task
Cancellation, Managed Runtimes, Work-Stealing.

1

Getting Started

Featherlight was evaluated on a dual socket 10 core Intel Xeon E5-2650 v3 processor running at 2.3 GHz and with a total of 96GB of RAM. The operating
system was Ubuntu 16.04.3 LTS. All the scripts attached in this artifact are
tested on the same machine and in the bash shell. We have also verified the
working of Featherlight on Ubuntu 18.04.2 LTS.
1.1

Software Dependencies

1. JDK 1.6 is required for building our JVM JikesRVM. JDK 1.6 is available at
Oracle website for free download. You can follow the steps mentioned here
for installation: https://gist.github.com/senthil245/6093389.
2. ANT 1.9
wget http://apachemirror.wuchna.com//ant/binaries/apache-ant1.9.14-bin.tar.gz
sudo apt-get remove ant

sudo tar -xf apache-ant-1.9.14-bin.tar.gz -C /usr/local
sudo ln -s /usr/local/apache-ant-1.9.14 /usr/local/ant
sudo vim /etc/profile.d/ant.sh
#Enter following two lines in the above file:
export ANT_HOME=/usr/local/ant
export PATH=${ANT_HOME}/bin:${PATH}
#Save and quit
source /etc/profile
#Verify
ant -version
Apache Ant(TM) version 1.9.14 compiled on March 12 2019
3. autoconf-2.69
sudo apt-get install autoconf
4. GCC version 4.9 (or 4.8) along with multilib support.
sudo apt-get install gcc-4.9
sudo apt-get install gcc-4.9-multilib
sudo apt-get install g++-4.9
#Check if ‘‘gcc -v’’ shows 4.9 version
#else do the following
sudo update-alternatives --install \
/usr/bin/gcc gcc /usr/bin/gcc-4.9 100 \
--slave /usr/bin/g++ g++ /usr/bin/g++-4.9
sudo update-alternatives --config gcc
#choose the gcc-4.9 in above available configs
5. libtool 1.5
sudo apt-get install libtool
6. bison 3.0.4
sudo apt-get install bison
7. Perl
sudo apt-get install libperl4-corelibs-perl
8. Sloccount
sudo apt-get install sloccount
1.2

Software Installation

1. Directory setup:

cd featherlight
#Environment setup inside each bash shell
vim ./setup-env.sh
#Change the variable ‘‘FEATHERLIGHT’’ such that it
#holds the absolute path to directory ‘‘featherlight’’
#Save and quit
source ./setup-env.sh
2. JikesRVM Java Virtual Machine (JVM) installation.
#Script will first patch on JikesRVM GitHub version
#‘‘087d300’’ and then build (Section 5 in paper)
./build-jvm.sh
#Above command might ask three questions.
#Answer with ’y’ as shown below:
Is /home/vivek the right home directory for hippo?
Please type y to confirm > y
Is x86_64-linux the right type for hippo?
Please type y to confirm > y
Is /home/vivek/europar/JikesRVM the correct root directory here?
Please type y to confirm > y
3. Building AJWS translator and benchmarks. Note that this step won’t work
if JikesRVM installation failed.
#Script will first patch on ajws GitHub version
#‘‘bd5535f’’ and then build (Section 5 in paper)
./build-translator.sh
./build-benchmarks.sh

2

Step-by-Step Instructions on how to reproduce the
results

Mapping of benchmark name reported in this artifact with those in the paper:
1. SLP = ShortlongPath
2. LinearSearch = ArraySearch
3. lusearch = DacapoLUSFix
2.1

Productivity Analysis (Section 5.1 in the paper)

We have presented two types of productivity analysis in the paper: a) comparing
lines-of-code in all four implementations of each benchmark, and b) classroombased study where we noted the time spent by students in coding different implementations. Here, in this artifact, we are only providing the script to validate
the lines-of-code based productivity analysis.

cd experiment
./lines-of-code.sh
#Output used for making the
#Table 1 for Lines of Code in the paper:
Benchmark Common_Code Sequential Featherlight ManualAbort ForkJoin
UTS
545
39
39
45
58
NQueens
75
48
48
53
68
Sudoku
469
48
48
54
66
ShortlongPath
558
54
54
60
76
ArraySearch
88
44
44
46
75
TSP
158
55
55
61
84
DacapoLUSFix
143,321
222
222
242
239

2.2

Performance Analysis (Section 5.2 in the paper)

1. Running the seven benchmarks. As mentioned in Section 5 of the paper, for
each benchmark, we ran 30 invocations, with 15 iterations per invocation,
where each iteration performed the kernel of the benchmark. Featherlight,
ManualAbort, and ForkJoin versions of each benchmark were run with 1, 4,
8, 12, 16, and 20 threads. However, reproducing this same number of invocations and threaded execution will take a lot of time, hence to save time, the
scripts we have attached herewith will run 7 invocations instead of 30. Also,
the number of threads that will be used with Featherlight, ManualAbort,
and ForkJoin versions are 8, 12, 16, and 20. This combination took around
3 hours on the author’s experimental machine.
If you want to evaluate the artifact quickly, then use fewer thread counts and
lesser number of invocations. This can be controlled by modifying the variables “INVOCATIONS” and “THREADS” in “experiment/run.sh” script.
However, changes must be done accordingly in the following two scripts
that calculate speedups: “experiment/speedup-over-ManualAbort.sh” and
“experiment/speedup-over-Sequential.sh”. All these three scripts have documentations describing the steps to do these changes.
cd experiment
./run.sh
2. Speedup of Featherlight over ManualAbort by using 20 threads. This experiment is shown as Figure 3(a) in the paper.
./speedup-over-ManualAbort.sh
#Output used for plotting the
#graph Figure 3(a) in the paper:
====== Speedup of Featherlight over ManualAbort At Max Thread (=20) ======
UTS
1.05
NQueens
0.98
Sudoku
0.89

ShortlongPath
ArraySearch
TSP
0.97
DacapoLUSFix

1.02
1.03
0.99

3. Speedup of benchmarks over their Sequential implementation. Figures 3(b)–
3(h) in the paper shows the corresponding plots.
./speedup-over-Sequential.sh
#Output used for plotting the
#graphs Figure 3(b)--3(h) in the paper:
====== UTS Speedup over Sequential ======
THREADS
Featherlight
ForkJoin
1
1.12
0.79
4
6.80
1.39
8
9.76
2.73
12
14.08
3.90
16
16.81
4.50
20
19.68
4.31
====== NQueens Speedup over Sequential ======
THREADS
Featherlight
ForkJoin
1
0.95
0.91
4
3.24
2.42
8
5.66
4.65
12
9.12
6.52
16
11.63
8.03
20
12.90
9.21
====== Sudoku Speedup over Sequential ======
THREADS
Featherlight
ForkJoin
1
0.98
3.35
4
5.74
22.52
8
19.44
18.38
12
33.25
20.33
16
47.21
26.04
20
52.77
30.21
====== ShortlongPath Speedup over Sequential ======
THREADS
Featherlight
ForkJoin
1
0.95
0.66
4
2.78
1.70
8
4.28
3.27
12
5.47
4.48
16
6.31
5.48
20
6.85
6.19
====== ArraySearch Speedup over Sequential ======
THREADS
Featherlight
ForkJoin
1
0.95
0.89
4
3.62
3.40

8
7.43
5.80
12
9.95
8.27
16
18.04
10.77
20
19.72
12.11
====== TSP Speedup over Sequential ======
THREADS
Featherlight
ForkJoin
1
0.99
0.73
4
2.01
2.27
8
3.19
2.86
12
5.21
3.44
16
7.21
4.13
20
8.83
5.39
====== DacapoLUSFix Speedup over Sequential ======
THREADS
Featherlight
ForkJoin
1
0.97
0.83
4
3.19
2.81
8
4.86
4.46
12
5.84
5.48
16
6.23
6.15
20
6.80
5.36

References
1. Kumar, V.: Featherlight speculative task parallelism. In: Euro-Par 2019: Parallel
Processing. Springer Berlin Heidelberg (2019), to appear



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 6
Page Mode                       : UseOutlines
Author                          : 
Title                           : 
Subject                         : 
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.18
Create Date                     : 2019:06:14 16:54:20+05:30
Modify Date                     : 2019:06:14 16:54:20+05:30
Trapped                         : False
PTEX Fullbanner                 : This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) kpathsea version 6.2.3
EXIF Metadata provided by EXIF.tools

Navigation menu