Jarek Nieplocha,
Manojkumar Krishnan,
Bruce Palmer, Vinod Tipparaju
This document is inteded to be used with the version 4.2 of Global Arrays
July, 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.
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