Memory Parallelism with a Spatial Compiler
Tuesday March 18, 2003
Hamerschlag Hall 1112
Carnegie Mellon University
I will present the internal representation and optimizations used by
the CASH compiler for improving the memory parallelism of pointer-based
programs. CASH uses an SSA-based representation for memory, which compactly
summarizes both control-flow and dependence information. In CASH, memory
optimization is a four-step process: (1) first an initial, relatively
coarse, representation of memory dependences is built; (2) next, unnecessary
memory dependences are removed using dependence tests; (3) third, redundant
memory operations are removed (4) finally, parallelism is increased by
pipelining memory accesses in loops. While the first three steps above
are very general, the loop pipelining transformations are particularly
applicable for spatial computation, which is the primary target of CASH.
Mihai Budiu is a sixth year graduate student in the CS Department doing
work in the area of strange compilers and bizarre computer architectures.
His advisor is Seth Goldstein, who is interested in exotic hardware substrates.