UCSC-SOE-09-14: Parallel Language Extensions for Side Effects

Sean Halle
04/10/2009 09:00 AM
Computer Engineering
Side effects make many analyses more difficult or impossible to perform in compilers for parallelism. Yet it is often convenient for programmers to use side-effects when writing their code. Perhaps more important is that algorithms represented in terms of side-effects are often higher performance on shared memory multicomputers. It would be nice to have a way to express side-effects and also make them precise for the compiler to analyse.

We propose a syntax that may be beneficial in this sense. Our main premise is that side-effects are communication events. In a serial program, the programmer knows exactly which writes communicate to which reads. If they don’t, the chances of the program being correct are slim. However, the compiler is unable, in general, to deduce the rules of which writes communicate to which reads in the dynamic trace. Our proposed syntax states these communication rules explicitly.

We also propose some mechanisms for implementing the new syntax on distributed memory machines.

UCSC-SOE-09-14