next up previous contents
Next: Systems analyzed. Up: Cooperating Systems Report Previous: HPJava   Contents

CCDD/CCDMI

Additionally, CSC has played a leading role in two primary PCRC contract tasks. Joint work with Syracuse resulted in a specification of a Common Code and Data Descriptor for Arrays in HPC Languages [22], or Distributed Array Descriptor (DAD).

CSC also led the effort to compile the Common Compiler and Data Movement Interface Specification [40]. The CCDMI Specification was based on empirical call-count information collected from four PCRC applications. CSC studied the utilization of the Message Passing Interface standard, MPI, in these applications, in order to determine which features of MPI are best suited to inclusion in the common interface specification, and which impose unacceptably high implementation overheads for compilation systems.

We collected all the MPI constant and function call data from Kivanc Dincer's MPI CHAOS port (NPAC), Xiaoming Li's F90D MPI runtime port (NPAC), Bryan Carpenter's Adlib library for MPI Fortran support (NPAC), and Pete Beckman's MPI pC++ runtime libraries (Indiana).

These systems each implement variants of the single-program, multiple-node (SPMD) programming model. Their runtime requirements for communication tend to be regular, or at least to follow idiomatic patterns such as the owner-computes rule, nearest-neighbor shift, and reduction. However, these systems each offer significantly different programming models to the compiler and enduser: regular arrays and array sections from Adlib and F90D, irregular arrays from Parti/CHAOS, and parallel element collections from pC++.

They do implement enough common functionality internally to share some runtime communication requirements. As a result, we speculated that a compiler data movement interface for these systems could omit large parts of the MPI standard, and focus instead on the MPI subset required to implement the standard idioms of distributed regular- and irregular-array runtime behavior.

We extracted raw coverage data for MPI functions and constants, and analyzed them to uncover common requirements. In addition to the core MPI functionality shared by all these systems, two ``annexes'' emerged. Each of these annexes represents an additional group of MPI functionality which was central to the success of one survey application, but excluded by the other three.



Subsections
next up previous contents
Next: Systems analyzed. Up: Cooperating Systems Report Previous: HPJava   Contents
Bryan Carpenter 2002-07-12