GASNet is a language-independent, networking middleware layer that provides
network-independent, high-performance communication primitives including
Remote Memory Access (RMA) and Active Messages (AM).
It has been used to implement parallel programming models and libraries
such as UPC,
UPC++,
Fortran coarrays,
Legion,
Chapel,
and many others.
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
Space Networking".
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.
We've written a network-independent reference implementation of the extended
API purely in terms of the core API, which allows GASNet (and its portable clients)
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.
RDMA support for puts/gets or hardware-offloaded atomic memory operations).
System diagram showing GASNet layers
Most clients 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
operations.
GASNet-EX is an evolution of the popular GASNet communication system,
building upon
over 20 years
of lessons learned, and adapting the library interface and
implementation to meet the needs of emerging exascale systems.
Portions of this document describe the non-contiguous RMA extension to GASNet-1, which remains
supported and also serves as the specification basis for the Vector, Indexed, Strided RMA operations
in GASNet-EX.
GASNet-EX Implementation Download:
GASNet-EX Full Source Release
(all EX-supported conduits and platforms)
Work continues on GASNet implementations for other platforms,
and code contributions are appreciated (please send email
if you're interested in developing in the GASNet-EX code base).
Devastator, Mobiliti: Scalable Discrete Event simulation and Transportation Simulation Using High-Performance Parallel Computing
(paper,
paper,
in the news)
FlexFlow: a deep learning framework that accelerates distributed DNN training by automatically searching for efficient parallelization strategies
(MLSys'19 paper)
CANDLE: Exascale Deep Learning and Simulation Enabled Precision Medicine for Cancer
(accelerated using FlexFlow: OSDI'22 paper)
S3D-Legion: An Exascale Software for Direct Numerical Simulation of Turbulent Combustion with Complex Multicomponent Chemistry
FSHMEM - Supporting Partitioned Global Address Space on FPGAs for Large-Scale Hardware Acceleration Infrastructure (Y. Arthanto, D. Ojika, J. Kim, FPL'22).
vGASNet - Scalable RMA-based Communication Library Featuring Node-local NVMs (R. Matsumiya, T. Endo, HPEC'18).
THe GASNet - A Heterogeneous GASNet Implementation for FPGA-accelerated Computing (R. Willenberg, P. Chow, PGAS'14).
RAMP Blue - A Message-Passing Manycore System in FPGAs (A. Krasnov et al., FPL'07).
GASNet is developed and maintained by staff
in the
CLaSS Group
at Lawrence Berkeley National Laboratory,
funded by the Advanced Scientific Computing Research (ASCR) program
of the U.S. Department of Energy's Office of Science
and by the U.S. Department of Defense.
Contact and Support information:
Bug reports and Feature Requests :
Please do NOT send bug reports or code via email to individual developers.
Use our
Bugzilla server
for reporting any bugs in GASNet. You may find an instant solution to your problem by searching the bug database!
We are interested in supporting GASNet on as wide a variety of HPC
systems as possible. If your system or network is not supported and you are
willing to volunteer your resources for development, please contact us!
We very much appreciate all feedback. Thank you for using GASNet!