In Partial Fulfillment of the Requirements for the Degree of
Doctor of Philosophy
Will defend his dissertation
The complexity and the diversity of today's high performance computing systems mandate significant efforts and expertise by end users to tune their applications to achieve the best possible performance for each particular platform. One of the main challenges of High Performance Computing is to empower current applications with methodologies and techniques that allows them to adapt to the execution environment. These techniques will also represent building blocks that enable them to keep pace with the incredible rate of hardware and software advancement. However, current runtime optimization algorithms, libraries and tools require a considerable time for tuning especially when the number of parameters is large. The objective of this dissertation is to present novel techniques aiming at enhancing the process of dynamic tuning of high performance computing applications. The first main contribution of this work is the historic learning component which reuses the knowledge learned from previous optimizations to speed up the runtime tuning procedure of subsequent similar problems. New algorithms are designed to predict the best possible solution for a problem which has not been solved before based on previous optimizations. In addition, the solution prediction problem is transformed into a classification problem to take advantage of machine learning techniques and algorithms. Second, an advanced search algorithm from the experimental design theory is utilized to speed up the automatic performance tuning of very large set of parameters and methodologies for tuning parallel applications are developed based on that.