Executive Summary : | High performance is one of the most important requirements of large modern day systems. This requirement reaches newer dimensions in the context of changing hardware landscape (multicore systems). This project aims to build system software (compilers and new optimizations) to address this problem, which is of paramount importance to all the clients of HPC (defense, weather modeling, molecular biology, bio-technology, and so on).
Two complimentary approaches can be addressed to address these issues: i) traditional sequential programs are parallelized using auto-parallelizing compilers, and ii) parallel programs are designed using explicitly parallel languages that depict the underlying true (parallel) program logic, and the compiler is expected to compile the code into efficient parallel code that ensures efficient utilization of all the available resources (many core systems, shared / distributed memory, communication channels and so on). Considering the limitations of the auto parallelization techniques in the past, we pursue research in the latter area. The goal of this project is to design compiler and runtime optimizations that take advantage of the specific hardware resources to optimize for speed. In addition, we want to devise new language features to help improve the programmability, for HPC applications for both shared memory and distributed systems, while ensuring improved performance. |