globalarrays

Version:

5.4, 5.7

Category:

tools

Cluster:

Loki

Author / Distributor

https://github.com/GlobalArrays/ga

Description

Global Arrays (GA) provides a shared-memory programming model in distributed memory environments. It enables efficient and portable development of parallel applications by offering global array semantics and atomic operations across nodes.

Version 5.7 supports:

  • Distributed dense multidimensional arrays

  • One-sided communication via MPI and ARMCI

  • Atomic updates and lock mechanisms

  • Integration with high-level libraries like NWChem, TCGMSG, and DDI

  • Compatibility with OpenMPI and GCC for HPC workflows

This build is 64-bit and compiled with OpenMPI and GCC.

Documentation

Compiling with GA:
------------------
mpifort -o myprog myprog.f90 -lga -larmci -lma

Environment variables:
----------------------
GA_USE_ARMCI_MPI=1       Use MPI as the communication layer
ARMCI_DEFAULT_SHMMAX     Shared memory size hint

Runtime behavior:
  * Memory is automatically distributed
  * Arrays are accessed via GA APIs (get/put/acc)
  * Synchronization provided via ga_sync(), ga_lock()

Help:
  See the GA Programmer’s Guide:
  https://hpc.pnl.gov/globalarrays/

Examples/Usage

  • Load the module:

$ module load globalarrays/openmpi/gcc/64/5.7
  • Compile a simple program:

$ mpifort -o ga_example ga_example.f90 -lga -larmci -lma
  • Run with MPI:

$ mpirun -np 4 ./ga_example
  • Environment config (for MPI layer):

$ export GA_USE_ARMCI_MPI=1
$ export ARMCI_DEFAULT_SHMMAX=128000000
  • Unload the module:

$ module unload globalarrays/openmpi/gcc/64/5.7

Installation

Source code is obtained from Global Arrays