Multi-core processing platforms are one of the major steps forward in offering high-performance computing platforms. The idea is to increase the performance by employing more processing elements to perform a job. However, this creates a challenge for both hardware developers who
...
Multi-core processing platforms are one of the major steps forward in offering high-performance computing platforms. The idea is to increase the performance by employing more processing elements to perform a job. However, this creates a challenge for both hardware developers who build such systems and software designers who program those platforms. On the hardware side, we can mention the problems on the interconnects management, memory hierarchies complexities and cache coherency problem. While on the software side, problems mainly arise in resource management, resource sharing and synchronization. One more fundamental problem on the software side is the inability to program such platforms with the conventional programming models. This is mainly because programming such platforms requires in-depth knowledge of hardware design. In this dissertation, we address the software side problems by proposing a comprehensive runtime system which is responsible to manage the system resources and resolve all the conflicting issues when accessing computing resources. Furthermore, the runtime system offers the application developers with APIs and system primitives that abstract away the platform dependent details, and provides a consistent programming model. These primitives decouple the process of software development from hardware design and results in the software to be independent of the underlying hardware platform. The proposed runtime system consists of a scheduler, a profiler, a transformer, a JIT compiler and a kernel library. A detailed description of each component is presented and the performance of the whole system as well as the imposed overhead of the component is discussed.