Research
This summer I am working with the concept of Instruction Level Parallelism
(ILP) through the use of register tiling. Many simulations performed by
computers involve task graphs that calculate changes in data over time,
with dependencies on previous data. By breaking up the graph into blocks
(called register tiles) the programmer can use techniques that allow the
compiler to better optimize code to allow for parallelism in the instruction
pipeline. In other words, by using certain techniques with C code, when
compiled the optimizations will allow for multiple instructions to be done
at the same time (even when there are data dependencies).