In Partial Fulfillment of the Requirements for the Degree of
Master of Science
Will defend his thesis
A heterogeneous system consists of a number of devices or cores with different architectures, which are used for some specific tasks. Such a system delivers better performance in terms of more computational power and consumes less energy. A challenge when programming this system is that each device may require a different programming model or expect code in a specific language. The programmer has to decide what code runs on what device. These devices operate using separate memories, so that the programmer must organize the data transfer between them.
Heterogeneous systems are mainly used in embedded and high-performance computing. They aim to provide power-efficient and high performance solutions at a low-cost. Although they have been in use in the embedded world for a long time, the architecture of these systems is turning more and more complex recently due to the current application needs. Complexity in terms of increasing numbers of heterogeneous cores, changing levels of the memory hierarchy, and different operating systems running on the cores exposes the urgent need for a high-level programming model which will ease the development process for the programmer.
In this work we discuss the challenges and experience gained in writing applications for heterogeneous systems. We describe two case studies: Texas Instruments' Beagleboard as an embedded system and a Clearspeed's Accelerator board which is used for accelerating the compute intensive portions of the application. We discuss current programming practices for these systems and their challenges. Having worked on these case studies, we believe that OpenMP could be used as a high-level programming model for such systems to ease the job of the developer. We use a medical application to illustrate our idea of using OpenMP on the Beagleboard.