Coordination refers to those features of parallel programs involving multiple processes, namely communication, synchronization, and scheduling. For simple programs with regular data access patterns, coordination structures can be determined at compile time and require little runtime support. For applications with irregular data access patterns, for example, loops that iterate over portions of an array or dynamic data structures, some coordination decisions are best left until runtime, necessitating more powerful runtime support and more sophisticated compile-time analysis. In this project, coordination is provided by Delirium, a coordination language for expressing scheduling and communication patterns, by adaptive runtime scheduling, and by Multipol, a distributed data structure library.
Some of the software developed in this project is being integrated with other parallel software efforts at Berkeley through the Castle Project.
Application studies are used extensively in this project to test our ideas. Some of the recent applications include: the Grobner basis problem, timing level circuit simulation, the phylogeny problem, magnet simulation, and cell simulation. Here is a short movie from the cell simulation, which shows platelets flowing through an artery.