Exploration of Supervised Machine Learning Techniques for
Runtime Selection of CPU vs GPU Execution in Java Programs
Author/Presenter
Event Type
Workshop
Accelerators
Applications
Compiler Analysis and Optimization
Compilers
Parallel Programming Languages, Libraries, Models
and Notations
Runtime Systems
TimeMonday, November 13th3:30pm -
4pm
Location712
DescriptionWhile multi-core CPUs and many-core GPUs are both
viable platforms for parallel computing, programming
models for them can impose large burdens upon
programmers due to their complex and low-level APIs.
Since managed languages like Java are designed to be run
on multiple platforms, parallel language constructs and
APIs such as Java 8 Parallel Stream APIs can enable
high-level parallel programming with the promise of
performance portability for mainstream (“non-ninja”)
programmers. To achieve this goal, it is important for
the selection of the hardware device to be automated
rather than be specified by the programmer, as is done
in current programming models. Due to a variety of
factors affecting performance, predicting a preferable
device for faster performance of individual kernels
remains a difficult problem. While a prior approach
makes use of machine learning algorithms to address this
challenge, there is no comparable study on good
supervised machine learning algorithms and good program
features to track. In this paper, we explore 1) program
features to be extracted by a compiler and 2) various
machine learning techniques that improve accuracy in
prediction, thereby improving performance. The results
show that an appropriate selection of program features
and machine learning algorithms can further improve
accuracy. In particular, support vector machines (SVMs),
logistic regression, and J48 decision tree are found to
be reliable techniques for building accurate prediction
models from just two, three, or four program features,
achieving accuracies of 99.66%, 98.63%, and 98.28%
respectively from 5-fold-cross-validation.
Author/Presenter




