POSC. A partitioning and optimizing SISAL compiler
Abstract
Single-assignment languages like Sisal offer parallelism at all levels - among arbitrary operations, conditionals, loop iterations, and function calls. All control and data dependences are local, and can be easily determined from the program. Various studies of Sisal programs have shown that they contain massive amounts of potential parallelism. There are two major challenges in converting this potential parallelism into real speedup on multiprocessor systems. First, it is important to carefully select the useful parallelism in a Sisal program, so as to obtain good speedup by trading off parallelism with overhead. Second, it is important to do sequential optimizations, so that the sequential components (tasks) of the Sisal program have comparable execution times with sequential languages such as Fortran, Pascal and C. The POSC compiler system described in this paper addresses both issues by integrating previous work on efficient sequential implementation of Sisal programs with previous work on selecting the useful parallelism in a Sisal program. The combined approach is validated by real speedup measurements on a Sequent Balance multiprocessor.