25.01.2015 Views

Chi-Leung (David) Wong - Polaris - University of Illinois at Urbana ...

Chi-Leung (David) Wong - Polaris - University of Illinois at Urbana ...

Chi-Leung (David) Wong - Polaris - University of Illinois at Urbana ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Research Projects<br />

An Optimizing Compiler for Languages with Programmable Memory Models<br />

This work is part <strong>of</strong> my PhD thesis. Our research focuses on building a Java optimizing compiler for explicitly parallel<br />

shared memory programs th<strong>at</strong> hides the underlying relaxed memory consistency model. The compiler presents an<br />

intuitive and n<strong>at</strong>ural memory consistency model to ease programming and debugging. Moreover, it provides correct<br />

compiler optimiz<strong>at</strong>ions th<strong>at</strong> are not considered by conventional compilers. In addition, the compiler will serve as a<br />

testbed to prototype new memory consistency models <strong>at</strong> the language level, and to measure the effects <strong>of</strong> different<br />

memory models on program performance.<br />

Embedded Java Virtual Machine<br />

This is my IBM summer intern project. Our basic approach is to perform ahead-<strong>of</strong>-time compil<strong>at</strong>ion <strong>of</strong> classes and to<br />

gener<strong>at</strong>e ROMable code for those classes. The methods are compiled ahead-<strong>of</strong>-time r<strong>at</strong>her than on the target pl<strong>at</strong>form,<br />

so we get the performance <strong>of</strong> compiled code without memory and time overhead <strong>of</strong> supporting a full just-in-time<br />

compiler on the embedded device. Moreover, since we perform the compil<strong>at</strong>ion <strong>of</strong>f-line, we will be able to expand<br />

the necessary resources to aggressive optimiz<strong>at</strong>ions. Since Java is a very dynamic language, machine code gener<strong>at</strong>ed<br />

for Java programs are traditionally self modifying. This is not s<strong>at</strong>isfactory in embedded system because machine code<br />

stored in ROM is not modifiable. Therefore, we need to isol<strong>at</strong>e the dynamically changing components and store it in<br />

RAM while keeping the st<strong>at</strong>ic components in ROM.<br />

Fortran 95 to Java transl<strong>at</strong>or<br />

I have constructed the whole transl<strong>at</strong>or including a Fortran 95 frontend and the Java source code gener<strong>at</strong>or. The<br />

transl<strong>at</strong>or is implemented completely in Java using JavaCC to gener<strong>at</strong>e the Fortran parser. There are over 60000 lines<br />

<strong>of</strong> code. The transl<strong>at</strong>or can compile Fortran 95 programs into equivalent Java programs. The gener<strong>at</strong>ed program uses<br />

the IBM array package and modified Fortran form<strong>at</strong> package by Jocelyn Paine.<br />

Other Projects<br />

Java JIT compiler<br />

It is a class project supervised by Dr Urs Höezle which aims <strong>at</strong> building a Java JIT compiler on Sparc pl<strong>at</strong>form from<br />

scr<strong>at</strong>ch. The compiler compiles methods on demand. I am responsible for implement<strong>at</strong>ion <strong>of</strong> method disp<strong>at</strong>ch using<br />

virtual function table. I have designed the calling convention and virtual function table is cre<strong>at</strong>ed and used to do<br />

method disp<strong>at</strong>ch.I also particip<strong>at</strong>e in the design <strong>of</strong> code gener<strong>at</strong>ion module.<br />

Parallelizing compiler for Intel Paragon<br />

This is my undergradu<strong>at</strong>e final year project supervised by Dr Tin-Fook Ngai. Our goal is to parallelize loops by<br />

appropri<strong>at</strong>e program transform<strong>at</strong>ions and synchroniz<strong>at</strong>ion system calls insertion. I and another two teamm<strong>at</strong>es modify<br />

the GNU C compiler to gener<strong>at</strong>e our own intermedi<strong>at</strong>e represent<strong>at</strong>ion (IR). The transformed IR is then fed into the<br />

backend <strong>of</strong> the GNU C compiler to gener<strong>at</strong>e Intel Paragon machine code.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!