Adaptive parallelism with Piranha

Adaptive parallelism refers to parallel computation on a dynamically changing set of processors: processors may join or withdraw from a computation as it proceeds. In the Piranha model of adaptive parallelism, idle network nodes are used to run explicitly parallel programs. Idle nodes host transient processes called piranha. A piranha process is started automatically when a node becomes idle and continues while it remains so. When a node becomes busy, its piranha process executes a short retreat function and exits. One feeder process is created to manage the ongoing computation. The feeder does not retreat. Piranha processes transform a distributed data structure describing work into one describing results. Distributed data structures are stored in a Linda tuple space where they are accessible to all participating processes. A Piranha programmer writes a program by specifying three coordination functions--feeder, piranha and retreat--and an arbitrary number of computation functions. The coordination functions define the interaction among the processes. The computation functions perform the task at hand. We present the Piranha model for adaptive parallelism, a methodology for developing Piranha applications and a software infrastructure that supports the model. We conclude by presenting our view of Piranha's future.