OpenFAM: Programming Fabric-Attached-Memory

OpenFAM enables high-performance access to a common shared pool of memory accessible to all compute nodes in a cluster.

OpenFAM is an application programming interface (API) for use in systems that contain fabric-attached memory (FAM). The API is close to and is patterned after APIs provided by one-sided partitioned global address space (PGAS) libraries such as OpenSHMEM. This maintains ease of use for application writers already familiar with those libraries. The primary differences between OpenFAM and other PGAS libraries are:
  1. FAM is no longer associated with a specific processing element (PE), and can be addressed directly from any PE without the cooperation and/or involvement of any other PE.
  2. Because state in FAM can survive program termination, additional interfaces are present to manage FAM data beyond the lifetime of a single program.
  3. The independence of state maintained in FAM provides additional capability for managing application availability in the presence of component failure.
The latest release of OpenFAM is 3.0.0, and includes the following enhancements:
  1. Support for multi-threaded applications.
  2. Support for volatile and persistent memory types.
  3. Data item interleaving for enhanced performance and large data items.
  4. Support for multiple I/O contexts to enable non-blocking I/Os to be grouped for better processor utilization.
  5. New APIs to check progress of non-blocking I/Os.
  6. New APIs to enable data item backup and restore to/from archival media.