GASNet is a language-independent, low-level networking layer that provides
network-independent, high-performance communication primitives tailored for
implementing parallel global address space SPMD languages and libraries
such as UPC,
The interface is primarily
intended as a compilation target and for use by runtime library writers (as
opposed to end users), and the primary goals are high performance, interface
portability, and expressiveness. GASNet stands for "Global-Address
|The design of GASNet is partitioned into two layers to maximize porting ease
without sacrificing performance: the lower level is a narrow but very general
interface called the GASNet core API - the design is based heavily on Active
Messages, and is implemented directly on top of each individual network
architecture. The upper level is a wider and more expressive interface called
the GASNet extended API, which provides high-level operations such as remote
memory access and various collective operations.
System diagram showing GASNet layers
We've written a network-independent reference implementation of the extended
API purely in terms of the core API, which allows GASNet (and the GAS compiler)
to quickly and easily be ported to a new network architecture by re-implementing
only the minimal core API. GASNet is structured such that implementers can
choose to additionally bypass certain functions in the reference implementation
of the extended API and implement them directly on the hardware to improve
performance of specific operations when hardware support is available (e.g.
special network support for puts/gets or hardware-assisted broadcast).
Most clients will use calls to the extended API functions to implement the
bulk of their communication work (thereby ensuring optimal performance across
platforms). However the client is also permitted to use the core active message
interface to implement non-trivial language-specific or compiler-specific
communication operations which would not be appropriate in a
language-independent API (e.g. implementing distributed language-level locks,
distributed garbage collection, collective memory allocation, etc.). The AM
features of the core provide a powerful extensibility mechanism which allows
clients to implement a wide variety of specialized communication
GASNet Spec extensions (work-in-progress, subject to change):
Download GASNet Implementation:
The full version of GASNet includes support for the following networks:
and has been tested on a number of systems (see README for a complete list):
- Operating systems:
Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Microsoft Windows, Mac OS X, various compute-node kernels
x86, x86-64, PowerPC, MIPS, SPARC v8+, Cray XD1, Cray XT series, Cray XE & XK series, Cray XC30,
SGI Altix, IBM BlueBene/Q, IBM Power 775, Playstation3, ARM.
GNU GCC, Intel C, Portland Group C, SunPro C, HP C, IBM VisualAge C, Cray C, Pathscale C, LLVM Clang, Open64
Work continues on GASNet implementations for other high-performance
networks, and code contributions are appreciated (please send email
if you're interested).
Future releases will add a further-tuned collectives implementation and numerous other improvements to the existing native conduits.
Independent implementations of the GASNet specification
are also encouraged.
- D. Bonachea, P. Hargrove, M. Welcome, K. Yelick.
Porting GASNet to Portals: Partitioned Global Address Space (PGAS) Language Support for the Cray XT, CUG 2009.
Talk slides: (PDF)
- R. Nishtala, P. Hargrove, D. Bonachea, K. Yelick.
Scaling Communication-Intensive Applications on BlueGene/P
Using One-Sided Communication and Overlap,
23rd International Parallel & Distributed Processing Symposium (IPDPS), 2009.
- D. Bonachea, R. Nishtala, P. Hargrove, M. Welcome, K. Yelick.
GASNet Collectives Poster at SuperComputing 2006 (PDF),
Optimized Collectives for PGAS Languages with One-Sided Communication , Nov 2006
- C. Bell, D. Bonachea, R. Nishtala, K. Yelick.
Optimizing Bandwidth Limited Problems Using One-Sided Communication and Overlap, IPDPS 2006.
Talk slides: (PPT) (PDF)
Tech report version: LBNL-59207
- GASNet Applications Poster at SuperComputing 2005 (PDF), Nov 2005
- GASNet Poster at SuperComputing 2004 (PDF), Nov 2004
- C. Bell and R. Nishtala Firehose: An Algorithm for Distributed Page Registration On Clusters of SMPs, May 2004.
- Non-contiguous scatter/gather and strided extensions to GASNet
- C. Bell, W. Chen, D. Bonachea, K. Yelick Evaluating Support for Global Address Space Languages on the Cray X1, ICS 2004.
- H. Su, B. Gordon, S. Oral, A. George SCI Networking for Shared-Memory Computing in UPC: Blueprints of the GASNet SCI Conduit, HSLN 2004.
- GASNet Poster at SuperComputing 2003 (Powerpoint),
(PDF), Nov 2003
- GASNet Poster at SuperComputing 2002, Nov 2002
- Slides from a GASNet presentation, Feb 2003
- Slides from a GASNet presentation, Mar 2003
- C. Bell, D. Bonachea, A New DMA Registration Strategy for Pinning-Based High Performance Networks, Workshop on Communication Architecture for Clusters (CAC'03), 2003.
- GASNet Extended API notes for conduit writers
- D. Bonachea GASNet Specification, v1.1, U.C. Berkeley Tech Report (UCB/CSD-02-1207), 2002.
(Also see current spec version)
- D. Bonachea and J. Jeong GASNet: A Portable High-Performance Communication Layer for Global Address-Space Languages, CS258 Parallel Computer Architecture Project, Spring 2002.
Systems/Projects using GASNet:
Production GASNet clients:
Experimental GASNet clients:
- PyGAS: PGAS Programming in Python - UC Berkeley
- OpenUH Compiler support for CAF and UPC - University of Houston
- Matlab*P / GASMM - UCSB
- MPICH-2 over GASNet - ANL
Other Related Links:
UPC Language Consortium
Active Messages over MPI (AMMPI)
Active Messages over Ethernet/UDP (AMUDP)
ARMCI Communication System
For more info about GASNet, please contact:
the Berkeley UPC Developers List
Page last updated
Monday April 27, 2015