In Partial Fulfillment of the Requirements for the Degree of
Master of Science
Will defend his thesis
Shared memory based High Performance Computing systems continue to grow in both size and complexity. The advent of multicore nodes presents critical challenges to parallel programming models in order to exploit the machines efficiently. OpenMP, one of the most widely used parallel programming models, needs to cater to these critical challenges and utilize the large scale and complex computing machines in an efficient manner. The first and foremost important challenge is the scalability of OpenMP applications as the core count increases. The second important challenge to be addressed is the complexity of multicore hardware and architecture.
In this work we try to address these two challenges of OpenMP through two complementary and related works. In the first part of the work, we implement a variety of algorithms in the OpenMP runtime and enhance it to adaptively select the most efficient implementation. The second part of the work proposes a dynamic optimization and compilation framework that can cater to the complexity of multicore hardware and architecture. The goal of this dynamic optimization and compilation framework is to detect various performance problems and optimize the code dynamically to yield maximum performance.