Parallel Paradigm Integration

Mani Chandy (director), Robert Cartwright, Mike Fagan, Ian Foster, David Harrar, Herb Keller, Ken Kennedy, Carl Kesselman, Tal Lancaster, Berna Massingill, Marc Pomeranz, Paolo Sivilotti, Mei Su, John Thornley, Linda Torczon, Steve Tuecke, and Eric Van de Velde

The Parallel Paradigm Integration project provides a uniform framework for parallel program design based on data parallelism and task parallelism. It produces software for developing task- and data-parallel programs in Fortran and C that execute on shared- and distributed-memory architectures. The project also incorporates parallel functional programming and parallel logic programming techniques within the context of Fortran and C. A special emphasis of the project is the use of software schemas for the development of parallel scientific applications.

Mani Chandy's research interests include the integration of parallel and distributed computing, scientific applications for parallel machines, object-oriented programming, software engineering, parallel programming schemas, program design, and systems performance models. He is currently working on developing ways to bring parallel computing to more people through modular programming, electronic text tutorials, and parallel applications for PC networks. With other researchers from the CRPC's Parallel Paradigm Integration group, he has developed a simple parallel language, PCN, as well as parallel extensions to common sequential languages such as C++ and Fortran.

Fortran M and Modular C

For this group, working within the context of Fortran and C (as compared to developing a separate parallel language) came about in an evolutionary way. The group had developed a simple language, PCN (Program Composition Notation), that could be used to put Fortran and C program modules together to obtain parallel programs. User feedback suggested that although the theory and central ideas were good, the approach would be more palatable if it were encapsulated as small extensions of sequential languages rather than as a new language. As a result, the group shifted its emphasis to two projects, Fortran M and CC++ (Compositional C++), that extend Fortran and C++ and support a modular, object-oriented style of parallel programming.

Fortran M extends Fortran by introducing typed ports, channels, and processes. The extensions are very small, completely compatible with Fortran 77, and easy to learn. A compiler for Fortran M that executes on single workstations is available, as well as one that executes on networks of workstations. Researchers are also investigating compilers for other distributed-memory machines. Fortran M can be used to integrate multiple High Performance Fortran (HPF) programs. Extensions are being considered to include Fortran 90 and object-based constructs.

Modular C is identical to Fortran M except that it is an extension of C rather than Fortran. With further development, Modular C and Fortran M will be interoperable. A significant part of this project is the development of a common runtime layer for task-parallel languages. Researchers are also trying to define the language with specific concern for compiler-checkable determinism.

Software Schemas

Researchers have developed templates known as software schemas with a complete set of performance evaluation tools, semantics definition tools, test suites, and documentation. The system can be thought of as a machine tool that can be used for constructing other tools, or a workbench for constructing other workbenches. A workbench consists of a user interface, a program library, a library of program composition operators, and a set of tools (such as compilers, editors, and library managers). These workbenches function like libraries that scientific investigators construct, copying some programs from other libraries and writing some programs of their own.

Scientists using these schemas can deal with issues in their specific fields without concerning themselves with parallel programming. A parallel program for fast Fourier transforms can be developed using a software schema for divide and conquer. The FFT algorithm can be obtained by "filling in" the slots for the divide-and-conquer schema. Likewise, programs in, say, Fortran or C can be developed by filling in slots of program schemas. Test suites for a specific application can be developed starting with test suites for the schema. The schema performance model is helpful in predicting the performance of specific programs.

Ian Foster's research interests include algorithms and programming languages for scalable parallel computers, software engineering, and the application of parallel processing to problems in computational science. He is the author of two books and numerous papers on parallel processing. In 1989, the Strand parallel programming system of which he was the co-designer was awarded the British Computer Society Award for Technical Innovation. He has been a member of the Computer Hardware, Advanced Mathematics, and Model Physics (CHAMMP) climate modeling project's science team since 1991.

Among their goals for the Software Schemas project, researchers are planning to develop an interactive electronic textbook to teach schema-based programming. This textbook will include CRPC-developed templates and applications. They are also interested in developing a library of software schemas in Fortran M and Modular C that deals with mesh computations, spectral methods, matrix operations, and combinatorics.

Scientific Concurrent Object-oriented Programming

The Scientific Concurrent Object-oriented Programming project is related to the Software Schemas project. Its goal is to evaluate the merits of object-oriented programming in the numerical application domain. Fortran M and Modular C are object-based, and researchers are using them with CC++ to evaluate object-based libraries for numerical simulation. Interest is in developing applications in areas such as global climate change, air pollution models, computational fluid dynamics, and biology.

Tools and Theories for Verification and Performance Analysis

Researchers in this area are evaluating tools for developing parallel programs, predicting performance, and debugging programs on workstations. Programs are transported from the workstation to a parallel target machine without change, with the expectation that its behavior (including performance) on the parallel machine will be as predicted on the workstation.