ARMCI: Aggregate Remote Memory Copy Interface
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.
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 Portals, Myrinet (GM), Quadrics, Infiniband (using OPENIB and Mellanox verbs API), and Ethernet. ARMCI is available on the following platforms:
- IBM BlueGene/P, BlueGene/L and SPs (based on LAPI)
- Cray XT
- 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 and NEC Systems
- Cygwin and Apple (MACX)
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
- 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.
- Nov, 2010 - (stable release) Released with Global Arrays 5.0
- Dec 24, 2008 - Released ARMCI 1.4 (stable release)
- Jan 16, 2008 -Released ARMCI 1.3
- April 3, 2007 - ARMCI 1.3B released
- ARMCI (1.1) includes an extensive support for nonblocking operations and other features for optimizing and hiding latency, for both small and larger messages