Predicting Loop Unrolling Impact in OpenMP Programs Using Machine Learning

Show simple item record

dc.contributor.advisor Dr. Gregory Byrd, Committee Member en_US
dc.contributor.advisor Dr. Edward Gehringer, Committee Member en_US
dc.contributor.advisor Dr. Yan Solihin, Committee Chair en_US
dc.contributor.author Poojary, Vikram en_US
dc.date.accessioned 2010-04-02T18:13:38Z
dc.date.available 2010-04-02T18:13:38Z
dc.date.issued 2005-08-16 en_US
dc.identifier.other etd-08162005-165601 en_US
dc.identifier.uri http://www.lib.ncsu.edu/resolver/1840.16/2440
dc.description.abstract Performance tuning of high performance numerical code is an important process which is still largely performed manually. While recent research in automated performance tuning has proposed run-time application configuration and compilation, most compilers in use today do not support such run-time features. As a result, a performance tuner's role is limited to selecting the right compiler optimizations for a given application and environment in which the application runs. Because many compiler optimizations do not give performance benefits in all cases, performance tuners must tediously test each optimization on their applications under a wide range of scenarios. Therefore, it is desirable to automate compiler optimization selection in order to avoid or at least reduce the tuning effort. This thesis deals with the question of whether machine learning techniques can be used to automate compiler optimization selection. It presents a case study in which an Artificial Neural Network (ANN) and a Decision Tree (DT) are constructed, trained, and used to predict whether, for a given loop nest in a shared memory parallel program, loop unrolling optimization should be applied or not. Simple characteristics of the loop nests, such as the nesting level, iteration count, and body size, are collected and used as input to the ANN or DT. The ANN and DT were trained with loop nests from some OpenMP-based NAS parallel benchmarks, and are used to predict the benefit of loop unrolling across different benchmarks, and across different numbers of parallel threads. Various training methods were tried, and in the best case, ANN predicts correctly whether loop unrolling is beneficial in 62\% of the cases, whereas DT predicts correctly whether loop unrolling is beneficial in 56\% of the cases. Although the results show promise, we believe that to accurately automate compiler optimization selection, many other factors may need to be taken into account in characterizing each loop nest, due to complex interactions of loop unrolling with memory hierarchy, data layout, thread partitioning, and instruction-level parallelism. en_US
dc.rights I hereby certify that, if appropriate, I have obtained and attached hereto a written permission statement from the owner(s) of each third party copyrighted matter to be included in my thesis, dissertation, or project report, allowing distribution as specified below. I certify that the version I submitted is the same as that approved by my advisory committee. I hereby grant to NC State University or its agents the non-exclusive license to archive and make accessible, under the conditions specified below, my thesis, dissertation, or project report in whole or in part in all forms of media, now or hereafter known. I retain all other ownership rights to the copyright of the thesis, dissertation or project report. I also retain the right to use in future works (such as articles or books) all or part of this thesis, dissertation, or project report. en_US
dc.subject decision trees en_US
dc.subject neural networks en_US
dc.subject Loop unrolling en_US
dc.subject machine learning en_US
dc.subject compiler optimization flags en_US
dc.title Predicting Loop Unrolling Impact in OpenMP Programs Using Machine Learning en_US
dc.degree.name MS en_US
dc.degree.level thesis en_US
dc.degree.discipline Computer Science en_US


Files in this item

Files Size Format View
etd.pdf 871.6Kb PDF View/Open

This item appears in the following Collection(s)

Show simple item record