Compiler Optimization and High Performance Computing.
A substantial part of the gain in processing power of modern computers can be attributed to advanced compilers. By applying clever transformations to code, a compiler can enable better utilization of the resources available in a machine. A single code transformation T applied by a compiler can easily speed up some programs by a factor of two or three. However, when applied in combination with other code transformations, the same transformation T might yield modest improvements, or even result in a slow down.
My research interest is focused on code transformations that are applied at an intermediate representation of the program: a representation that is common to several programming languages and to several processor instruction sets. Thus, such transformations can benefit a large number of systems. Because of the interference between transformations described above, I am interested on implementing new code transformations on state-of-the art production compilers.
In order to explore instruction-level parallelism, some of the code transformations that I study are specific to a certain processor architecture, and thus require more effort to be translated to other processors.
I am also interested in the application of learning technology to the compilation process. My group is investigating the use of both supervised and unsupervised learning to improved the performance delivered by, and the efficiency of, modern commercial compilers. We are also investigating ways to improve the implementation and evaluation of feedback-directed optimization (FDO).