|
|
Overview
The purpose
of the Aggregate Remote Memory Copy (ARMCI) library is
to provide a general-purpose, efficient, and widely portable remote memory access
(RMA)
operations (one-sided communication) optimized for contiguous and
noncontiguous
(strided, scatter/gather, I/O vector) data transfers. In addition,
ARMCI includes a set of atomic and mutual exclusion operations.
The development ARMCI is driven by the need to support the
global-addres space
communication model in context of distributed regular or irregular
distributed data structures, communication libraries, and compilers.
ARMCI is a standalone system
that could be used to support user-level libraries and applications
that use MPI or PVM. Development of ARMCI has been supported by
the DoE2000 Global
Arrays
project, EMSL,
and recently by the Center for
Programming Models for
Scalable Parallel Computing.
Project
Status
ARMCI exploits
native network communication interfaces and system resources (such as
shared memory) to
achieve the best possible performance of the remote memory
access/one-sided communication. It exploits high-performance
network protocols
on clustered systems. Optimized implementations of ARMCI are available
for
the Myrinet (GM), Quadrics, Giganet (VIA) and Infiniband using Mellanox
verbs API. A port of ARMCI on the Cray XD1 platform has been developed
by cray and is distributed by them. ARMCI is
available on the following platforms:
- IBM
BlueGene/L and SPs
(based on
LAPI)
- Cray
XT, X1, T3E, SV1, and
J90
- Unix
workstations
and servers: Sun, SGI, HP, IBM, Linux
- Clusters
of
Unix and Windows NT workstations/servers, including the
HP/Quadrics Alphaserver cluster and Quadrics Linux clusters
- Fujitsu
VX/VPP and PRIMEPOWER
- NEC
SX-5
- Hitachi
SR8000
ARMCI is
compatible
with MPI. However, by design it is impartial to a selection of
the message-passing libraries in the user program. In addition to MPI,
on some platforms ARMCI was also used with PVM and TCGMSG
message-passing libraries.
ARMCI has
been used to
- implement
the Global Arrays
library
- optimize
collective
operations on distributed arrays in the PCRC Adlib run-time
system at NPAC
- implement
GPSHMEM,
a portable version of the Cray SHMEM library (Ames Lab)
- implement
nxvtal
server in TCGMSG
- implement
a Co-Array Fortran compiler
at Rice U.
Recent Developments
|