Introduction
Coding Examples
Documentation
Developer Information
Download


Application Examples


halo-alkane dehalogenase enzyme


liquid octanol

Global Arrays

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.

Tools News Home