Program transformations for static process networks

An important recent idea in software technology for distr ibuted-memory multicomputers is the use of annotations to control data partitioning and placement, relying on a compiler to infer the necessary process placement and communications. We have been developing a declarative language for controlling data partitioning and placement in functional programs, called Caliban. It is interesting because the annotat ion language builds on the power of the functional language, allowing the user to reuse code developed for the computational part of the problem when expressing how it should be distributed across a parallel computer. The key to doing this is partial evaluation, that is symbolically executing the program until the annotat ion is in its primitive form, and the partit ioning is clear. While this work was developed primarily in the context of parallel functional programming, there is the interesting prospect of applying it to the problem of controlling the distr ibution of data in traditional languages.