The Global Arrays User's Manual

(Pacific Northwest National Laboratory Technical Report Number PNNL-13130)

Jarek NieplochaManojkumar Krishnan, Bruce Palmer, Vinod Tipparaju
 

This document is inteded to be used with the version 4.1.1 of Global Arrays

January, 2009


 

DISCLAIMER
This material was prepared as an account of work sponsored by an agency of the United States Government.  Neither the United States Government nor the United States Department of Energy, nor Battelle, nor any of their employees, MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, SOFTWARE, OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS.
ACKNOWLEDGMENT
This software and its documentation were produced with United States Government support under Contract Number DE-AC06-76RLO-1830 awarded by the United States Department of Energy. The United States Government retains a paid-up non-exclusive, irrevocable worldwide license to reproduce, prepare derivative works, perform publicly and display publicly by or for the US Government, including the right to distribute to other US Government contractors.

Contents

1. Introduction
        1.1 Overview
        1.2 Basic Functionality
        1.3 Programming Model
        1.4 Application Guidelines

2. Installation: Writing, Building and Running GA Programs
        2.1 Platform and Library Dependencies
                2.1.1 Supported Platforms
                2.1.2 Selection of the Communication Network for ARMCI
                2.1.3 Selection of the Message passing Library
                2.1.4 Dependencies on Other Software
        2.2 Writing GA Programs
        2.3 Building GA Programs
           2.3.1 Unix Environment
           2.3.2 Windows Environment
           2.3.3 Writing and building new GA programs
        2.4 Running GA Programs
        2.5 Profiling GA with Vampir (Intel's Trace Analyzer)

3. Initialization and Termination of GA Programs
        3.1 Message Passing
        3.2 Memory Allocation
                3.2.1 How to determine what the values of MA stack and heap size should be?
        3.3 GA initialization
                3.3.1 Limiting Memory Usage by Global Arrays
        3.4 Termination
        3.5 Creating Arrays - I
              3.5.1 Creating Arrays with Ghost Cells
        3.6 Creating Arrays - II
        3.7 Destroying Array

4. One-sided Communication Operations
        4.1 Put/Get
        4.2 Acc/Read_inc
        4.3 Scatter/Gather
        4.4 Periodic Interfaces
        4.5 Non-blocking operations (put/get/acc)

5. Interprocess Synchronization
        5.1 Lock and Mutex
        5.2 Fence
        5.3 Sync

6. Collective Array operations
        6.1 Basic Array Operations
                6.1.1 Whole Arrays
                6.1.2 Patches
        6.2 Linear Algebra
                6.2.1 Whole Arrays
                6.2.2 Patches
                6.2.3 Element-wise operations
        6.3 Interfaces to Third Party Software Packages
                6.3.1 Scalapack
                6.3.2 PeIGS
                6.3.3 Interoperability with Others
         6.4 Synchronization Control in Collective Operations

7. Utility Operations
        7.1 Locality Information
                7.1.1 Process Information
                7.1.2 Cluster Information
        7.2 Memory Availability
        7.3 Message-Passing Wrappers to Reduce/Broadcast Operations
        7.4 Others
                7.4.1 Inquire
                7.4.2 Print
                7.4.3 Miscellaneous

8. GA++: C++ Bindings for Global Arrays
        8.1 Overview
        8.2 GA++ Classes
        8.3 Initialization and Termination
        8.4 GAservices
        8.5 GlobalArray

9. Mirrored Arrays
        9.1 Model Overview
        9.2 Mirrored Array Operations

10. Processor Groups
        10.1 Overview
        10.2 Creating Groups
        10.3 Default Groups
        10.4 Inquiry Functions
        10.5 Collective operations

Appendix
        A. List of C functions
        B. List of Fortran functions