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).
Projects in the news:
Number representation, computer architecture and organization, instruction-set architecture, assembly-level programming, procedures, stack frames, memory access through pointers, exception handling, computer arithmetic, floating-point representation, datapath, control logic, pipelining, memory hierarchy, virtual memory. Prerequisite: CMPUT 175 or 274. Corequisite: one of CMPUT 201 or 275. Credit may be obtained in only one of CMPUT 229, E E 380 or ECE 212.Fall Term 2020
Compilers, interpreters, lexical analysis, syntax analysis, syntax directed translation, code generation, code optimization. Prerequisites: one of CMPUT 229, E E 380 or ECE 212, and a 300-level Computing Science course or consent of the instructor.Fall Term 2020