next up previous contents
Next: Discussion Up: High Level Libraries for Previous: The Global Array Toolkit   Contents


NPAC PCRC Runtime Kernel - Adlib

NPAC PCRC Runtime Kernel (Adlib) [11] was originally implemented as a high-level runtime library, designed to support translation of data-parallel languages. An early version of Adlib was implemented in 1994 in the shpf project at Southampton University. A much improved--virtually rewritten--version was completed in the Parallel Compiler Runtime Consortium (PCRC) project at Northeast Parallel Architecture Center (NPAC) at Syracuse University. Adlib was initially invented for HPF. It was completely reimplemented for HPJava. Adlib supports a built-in representation of a distributed array, and a library of communication and arithmetic operations acting on these arrays. The array model supports HPF-like distribution formats, and arbitrary sections, and is more general than GA. The Adlib communication library concentrates on collective communication rather than one-sided communication. It also provides some collective gather/scatter operations for irregular access. A Distributed Array Descriptor (DAD) played an very important role in earlier implementation of the Adlib library. A DAD object describes the layout of elements of an array distributed across processors. The original Adlib kernel was a C++ library, built on MPI. The array descriptor is implemented as an object of type DAD. The public interface of the DAD had three fields. An integer value, rank is the dimensionality,$ r$, of the array, greater than or equal to zero. A process group object, group, defines a multidimensional process grid embedded in the set of processes executing the program--the group over which the array is distributed. A vector, maps, has $ r$ map objects, one for each dimension of the array. Each map object was made up of an integer local memory stride and a range object. There are several interfaces to the kernel Adlib. The shpf Fortran interface is a Fortran 90 interface using a kind of dope vector. The PCRC Fortran interface is a Fortran 77 interface using handles to DAD objects. The ad++ interface is a high-level C++ interface supporting distributed arrays as template container classes. An early HPJava system used a Java Native Interface (JNI) wrapper to the original C++ version of Adlib.


next up previous contents
Next: Discussion Up: High Level Libraries for Previous: The Global Array Toolkit   Contents
Bryan Carpenter 2004-06-09