In Partial Fulfillment of the Requirements for the Degree of
Master of Science
Will defend his thesis
Current computing systems are moving towards heterogeneity due to several important factors such as need for better speedup and improved performance (for e.g. using heterogeneous multi-core platform), to be able to meet the applications' requirements (for e.g. to deal with computationally intensive algorithms such as digital processing, medical imaging), to exploit the underlying resources efficiently (for e.g. accelerators such as DSPs, FPGAs, Cell and GPGPUs) and many others. Heterogeneous systems could handle different models of parallelism on a single or across machines to provide high performance. Unfortunately heterogeneity complicates software development process. The real challenge to use these systems efficiently is to be able to program them in a very productive manner due to the complexity of managing multiple targets, languages and programming models in a dynamic environment. There is lack of a general and unified programming model that could be used to support architectures where shared and distributed-memory models could coexist, different kind of code could run on different accelerators and still be able to support different types of applications which primarily includes embedded applications.
This thesis presents the research experiences addressing the several issues identified for running a program on heterogeneous multicore platform. We have considered low-level APIs from Multicore Association (MCA) - an industrial association that has defined and promoted open specifications to enable support for multicore systems. In this work, we demonstrate how we could use the high-level programming model OpenMP - a fork-join model of parallel execution, with MCA APIs to abstract the low-level complexities and be able to improve programmability and productivity leading to improved performance.