Principal Investigator (s)

     First Name: Geoffrey
     Lastname: Fox
     Address 1: NPAC at Syracuse University
     Address 2: 111 College Place
     City, State, Zip: Syracuse, NY 13244-4100
     Phone: 315-443-2163
     Fax: 315-443-1973
     Email: gcf@npac.syr.edu
     Level Of Participation: ? (Must be at least 30%)

Financial POC

     First Name: Matthew
     Last Name: Clark
     Address 1: Office of Sponsored Programs, Syracuse University
     Address 2: 113 Bowne Hall
     City, State, Zip: Syracuse, NY 13244-1200
     Phone: 315-443-9356
     Fax: 315-443-9361
     Email: clarkme@summon.syr.edu

Project URL:

     http://www.npac.syr.edu/projects/pcrc/

Objective:

Develop a public domain, common runtime infrastructure supporting parallel compiler development and general purpose high level SPMD programming for distributed-memory computers. Also, to develop a Java empowered WebTop computing mechanism for world wide collective computational solutions in science and engineering, using the runtime infrastructure as underlying engine.

Approach:

The Parallel Compiler Runtime Consortium includes several leading research groups working on parallel runtime systems and compilers. Most partners brought into the project pre-existing software for run-time management of communication and computation in data parallel languages. Such libraries have disparate representations of distributed data, but all provide methods for partitioning and accessing array elements or remapping arrays. They all make some optimizations for reducing data movement costs, such as message-blocking, collective data movement, message coallescing, aggregration, and so on.

In the course of the project new runtime software packages have been developed. The NPAC kernel runtime is built on technologies pioneered in the earlier packages, founded on a common descriptor for distributed arrays, and captured in an object-oriented framework. The kernel library can be called from various languages (currently Fortran, C++ and Java) through language-specific interfaces. Three high-performance language translators that use this runtime software exist or are under active development. A separate package developed at Maryland supports interoperability between pre-existing libraries by allowing distributed arrays to be transferred seamlessly from one package to another. Other partners have developed run-time libraries for more specific problem areas.

In the later phases of the project the workplan was strongly influenced by the emergence of Java. Early in 1996, participants of the project issued a draft white paper on the implications of Java for HPCC, and subsequently organized a series of workshops on the theme of Java for Computational Science and Engineering. This series spawned the Java Grande Forum -- a group of academic and industrial partners aiming to promote Java standards for communication and compute intensive applications.

Recent Accomplishments:

Syracuse University have delivered the NPAC kernel runtime, which is a C++ class library implemented on top of the standard Message Passing Interface, MPI. The library includes classes implementing the underlying Distributed Array Descriptor (DAD). This descriptor defines how a logical multi-dimensional array is divided over the local memories of cooperating processors. The DAD has an extensible format that supports a superset of the High Performance Fortran (HPF) options for distributing arrays. In particular it supports all HPF distribution formats and alignment options, and all Fortran-90 (F90) regular array sections. The library provides address translation functions for these general arrays, simplifying conversion between global and local subscripts, and enumeration of locally held elements of arrays. It also provides an extensive set of collective data movement routines, and collective array arithmetic routines. These functions operate uniformly on arbitrary arrays describable by DADs. Communication patterns supported include HPF/F90 intrinsics such as CSHIFT and TRANSPOSE, regular-section copy operations, which copy elements between shape-conforming array sections regardless of source and destination mapping, a function that updates ghost areas of a distributed array, and various gather and scatter operations allowing irregular patterns of access. The library also provides essentially all F90 arithmetic transformational functions on distributed arrays and various additional HPF library functions. The kernel library has interface code to make it callable from Fortran 90, Fortran 77, C++ and Java.

In collaboration with the University of Peking and Harbin institute of Technology, Syracuse developed a research HPF compiler. The compiler generates code that uses the NPAC library to manage array access and communication. The front-end of this compiler was placed in the public domain (development on the complete translation system continues).

Motivated by the observation that directly calling the common runtime from SPMD application code (as opposed to having it called from compiler-generated code) provides a powerful and flexible parallel programming paradigm, but one which is superficially clumsy and inefficient because standard programming languages have no specific syntax for manipulating distributed arrays, Syracuse is developing a translator for a dialect of Java called HPJava. This is a language specifically designed for SPMD programming, with distributed arrays added as language primitives. By design, it is a language that can be preprocessed straightforwardly to standard Java with calls to the kernel runtime (distinguishing it from HPF, whose translation generally requires complex compiler analysis). Syracuse have also developed a direct interface to MPI from Java.

An important contribution from Maryland focusses on developing techniques for transferring data between distributed data structures owned by different data parallel runtimes libraries. These techniques have been implemented in the Maryland Meta-Chaos library, which is currently capable of transferring data between (distributed) arrays that have been created using High Performance Fortran, the Maryland CHAOS and Multiblock PARTI libraries, and the the Indiana pC++ runtime library, Tulip. For example, the library allows an irregularly distributed array created via the CHAOS library to be copied into an HPF distributed array (with an arbitrary HPF distribution) that has been created using the HPF compiler and runtime library. The only requirement on the libraries, so that Meta-Chaos can access their data, is that each library provide several inquiry functions.

Maryland have also been investigating mobility for Java programs in the context of Sumatra, an extension of the Java programming environment that provides a flexible substrate for adaptive mobile programs.

Indiana University initially emphasized support for HPC++ runtime in heterogeneous environments. The standard runtime system for HPC++ is called Tulip and it is designed for homogeneous parallel processing systems with support for shared memory. The goal for the PCRC project was to make HPC++ portable and interoperable with other systems. Recently they have developed Java compilation tools to support parallelism in Java and interoperability between Java and HPC++. In particular they have developed a Java preprocessor (JAVAR) that will allow Java programs that are written with loops and certain types of recursion to be transformed into multi-threaded code that executes in parallel on shared memory multiprocessors. They have also developed a parallel CORBA ORB called PARDIS which allows SPMD object implementations to communicate with other similar application using parallel communication channels.

The University of Texas have concentrated on ``productizing'' the Hierarchical Dynamic Distributed Array/Directed Acyclic Grid Hierarchy (HDDA/DAGH) infrastructure for parallel implementations of adaptive mesh computations, and preparing the HDDA/DAGH infrastructure for integration with the PCRC runtime systems. The HDDA implements a hierarchical dynamic distributed array. ``Hierarchical'' means that each element of an instance of an array can itself be an array. ``Dynamic'' means that the number of levels in the hierarchy of arrays can be varied during execution of the program. ``Distributed'' means that the array may be partitioned across multiple address spaces transparently to C or Fortran programs which operate on these arrays. DAGH is a layer of programming abstractions built upon the HDDA implementing a hierarchy of grids. It supports implementation of a considerable span of AMR and multi-grid solution methods including vertex-centered, cell-centered and edge-centered grids. Specific accomplishments include a release in May 1997 of HDDA/DAGH with additional capabilities including face-centered and vertex-centered grids.

The University of Rochester made progress towards their goal of building a parallelizing compiler and runtime system for distributed shared-memory machines. They studied the design of the new Compiler Runtime Systems in the context of data transformations and optimizations for distributed shared-memory machines. Their work involves various aspects: locality optimizations, scheduling for network of workstations, and parallel and distributed data mining. They are also building a Java compiler.

Florida University was closely involved with the NPAC work, in particular in the HPF application suite and in development of advanced algorithms for HPF library functions. Recently they developed an MPI version of their algorithms for the important combining scatter family of operations. Syracuse provided interface code to make these routines callable using the generic DAD array descriptors employed by the NPAC kernel library.

Cooperating Systems contributed primarily in a support role, providing software test, evaluation, and documentation support to other consortium members (particularly NPAC). Additionally, CSC has played a leading role in two primary PCRC contract tasks: derivation of a Common Code and Data Descriptor for Arrays in HPC Languages and compiling the Common Compiler and Data Movement Interface Specification.

Current Plan:

The project formally ended June 30, 1998. A final technical report and consolidated Web site, from which deliverable software can be downloaded, will be available by the end of July, 1998.

Technology Transition:

By making specific runtime services available to users through a standard interface, in industry-standard languages (C++ and Java), the work should lower the barrier to entry of new researchers and product developers into the parallel runtime software market.

The Java Grande Forum is another major technology transition activity initiated partly by PCRC, with Sun Microsystems. Workshops have been held in Syracuse, NY, Las Vegas, NV, and Palo Alto, CA, attracting many people from industry, national laboratories, and academia, including IBM, Digital, Sun, Oracle, Boeing, etc.