BB-ML: Basic Block Performance Prediction using Machine Learning
  Techniques
  Recent years have seen the adoption of Machine Learning (ML) techniques to
predict the performance of large-scale applications, mostly at a coarse level.
In contrast, we propose to use ML techniques for performance prediction at much
finer granularity, namely at the levels of Basic Block (BB), which are the
single entry-single exit code blocks that are used as analysis tools by all
compilers to break down a large code into manageable pieces. Utilizing ML and
BB analysis together can enable scalable hardware-software co-design beyond the
current state of the art. In this work, we extrapolate the basic block
execution counts of GPU applications for large inputs sizes from the counts of
smaller input sizes of the same application.
  We employ two ML models, a Poisson Neural Network (PNN) and a Bayesian
Regularization Backpropagation Neural Network (BR-BPNN). We train both models
using the lowest input values of the application and random input values to
predict basic block counts. Results show that our models accurately predict the
basic block execution counts of 16 benchmark applications. For PNN and BR-BPNN
models, we achieve an average accuracy of 93.5% and 95.6%, respectively, while
extrapolating the basic block counts for large input sets when the model is
trained using smaller input sets. Additionally, the models show an average
accuracy of 97.7% and 98.1%, respectively, while predicting basic block counts
on random instances.
