High Performance Computing Group - Industrial Affiliates Program

Compiler Related Projects



Follows a list of the research projects that have been started in the last 4 months or that are about to be launched.

Java for High Performance Computing

Java is one of the most promising languages in the internet era, however
its performance is 20-100 times slower than traditional languages, such
as Fortran or C. The goal of this project is to research on compilation
and architecture (the Java Virtual Machine) techniques that allow Java
to effectively exploit high performance computing capabilities.
...clik here for more information...
Software Trace Cache
The fetch bandwidth of future aggressive processors will be a limiting factor for their performance in the near future. The number of useful instructions per cycle provided to the processor depends on the instruction cachemiss rate, the number of instructions provided per access and the branch prediction strategy. In this piece of research, we propose a compilationtechnique that improves the fetch bandwidth of wide issue superscalar processors. On one side, the technique improves the instruction cache miss rate
by placing sequences of instructions that are used frequently in a logic area of the cache that is free of conflicts. On the other side, we reorganize basic blocks in such a way that those BBs that are executed in sequential order are placed sequentially in memory. This has been simulated with the help of ATOM and our results are quite impressive. The next step of this project is to generate a post compiler tool to generate code that executes in real processors.
...clik here for more information...
Register Constrained Software Pipelining
In this project we are researching techniques for producing register-constrained modulo schedules. In particular we have evaluated the alternatives of adding Spill code and increasing the II. We show that, in general, increasing the II performs poorly and might not converge for some loops. We also propose an iterative spilling mechanism that can be applied to any software pipelining technique and several heuristics in order to select variables to spill as well as to speed-up the spilling  process.
...clik here for more information...