To achieve high performance, it is critical that the compiler generates code that can efficiently utilize the underlying hardware. In particular, programs must exploit both parallelism and locality to achieve high performance. To achieve our goal, we attempt to solve important problems with practical significance, combining sound theoretical foundations with solid empirical validation. Publications Software Research Directions Interactions between optimizations and architectures Investigate the interactions between compiler optimizations and computer architectures to evaluate the most effective integrated approach to achieving high performance. Compiling for XMT requires creating efficient parallel threads and optimizations to coarsen threads.
Compilers can manipulate data layout to improve performance for both scalar and parallel programs.
Integrating data and computation transformations will be challenging but worthwhile for large programs. Compiler and run-time support for adaptive irregular computations Scientific applications are becoming more complex as they enter larger and more complex problem domains. In particular, sparse and irregular data structures are becoming common. However, exploiting parallelism and locality in irregular computations is more difficult and require sophisticated run-time support. We are developing techniques to combine compiler and run-time support to improve locality and exploit parallelism for adaptive irregular computations.