|
Introduction
The Global Arrays (GA) toolkit is a library for
writing parallel programs that use large arrays distributed across
processing nodes. The library has Fortran, C and C++ interfaces. There
is also a python wrapper available to GA. Originally developed to
support arrays as vectors and matrices (one or two dimensions), it now
supports up to seven dimensions in Fortran and even more in C. GA
offers two types of operations: collective operations and local
operations.
- Collective operations require participation (and
synchronization) of all processes. They include array creation, copying, and
destruction. They also include data-parallel operations on arrays such as vector dot
product and matrix multiplication.
- Local operations may be invoked independently by all processes.
They include local access to array elements, and fetching and storing
data from and to remote locations. (Contrary to MPI,
GA does not require cooperation between sender and receiver to transfer
data.)
GA also comes with a Global Array Visualizer that uses trace files to
animate array access patterns. Its main purpose is to analyze the impact of
distribution on performance. GA is meant to complement rather than replace the message-passing
model, and is interoperable with MPI. GA offers a shared-memory view
of distributed arrays without destroying their NUMA
characteristics.
Documentation
Coding Examples
| Example program | Description |
| matrix-c.c | A simple matrix multiply algorithm that initializes two large matrices as GAs. It then multiplies a block of columns by a block or rows from the GAs locally on each processor and copies the result into a third global array. |
| matrix.F | Fortran version. A simple matrix multiply algorithm that initializes two large matrices as GAs. It then multiplies a block of columns by a block or rows from the GAs locally on each processor and copies the result into a third global array. |
| transp1D-c.c | Transpose a distributed 1D vector containing N elements in the order 1,2,...,N into a distributed vector containing N elements in the order N,N-1,...,2,1 |
| transp1D.F | Fortran version. Transpose a distributed 1D vector containing N elements in the order 1,2,...,N into a distributed vector containing N elements in the order N,N-1,...,2,1 |
Developer Information
Global Arrays was developed at the Environmental
Molecular Sciences Laboratory (EMSL) at Pacific
Northwest National Laboratory. Its principal developers are
Jarek Nieplocha, Manojkumar Krishnan, Bruce Palmer, and Vinod Tipparaju.
|