Package: wnpp
Severity: wishlist
Owner: Alastair McKinstry <[email protected]>
X-Debbugs-Cc: [email protected], [email protected], 
[email protected]

* Package name    : openfam
  Version         : 3.2.0
  Upstream Contact: Hewlett Packard Enterprise Development, LP.
* URL             : https://openfam.github.io
* License         : BSD-3-Clause
  Programming Lang: C++
  Description     : Open Fabric-Attached-Memory


Recent technology advances in high-density, byte-addressable non-volatile 
memory (NVM) and low-latency interconnects have enabled building large-scale 
systems with a large disaggregated fabric-attached memory (FAM) pool shared 
across heterogeneous and decentralized compute nodes. In this model, compute 
nodes are decoupled from FAM, which allows separate evolution and scaling of 
processing and memory. Thus, the compute-to-memory ratio can be tailored to the 
specific needs of the workload. Compute nodes fail independently of FAM, and 
these separate fault domains provide a partial failure model that avoids a 
complete system shutdown in the event of a component failure. When a compute 
node fails, updates propagated to FAM remain visible to other compute nodes.

The traditional shared-nothing model of distributed computing partitions data 
between compute nodes. Each compute node "owns" its local data and relies on 
heavyweight two-sided message passing and data copying to coordinate with other 
nodes. Data owners mediate access to their data, performing work on behalf of 
the requester. This model suffers mediation overheads and doesn't sufficiently 
leverage the data sharing potential of FAM systems.

In contrast, the large capacity of the FAM pool means that large working sets 
can be maintained as in-memory data structures. The fact that all compute nodes 
share a common view of memory means that data sharing and communication may be 
done efficiently through shared memory, without requiring explicit messages to 
be sent over heavyweight network protocol stacks. Additionally, data sets no 
longer need to be partitioned between compute nodes, as is typically done in 
clustered environments and avoid message-based coordination overheads. Any 
compute node can operate on any part of data, which enables more dynamic and 
flexible load balancing. More generally, sharing permits new approaches to 
cooperation.

OpenFAM is an application programming interface (API) for use in systems that 
contain 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 distinctions between this API and those provided by 
other PGAS libraries are:

    FAM is no longer associated with a specific PE, and can be addressed 
directly from any PE without the cooperation and/or involvement of any other PE.
    Because state in FAM can survive program termination, additional interfaces 
are present to manage FAM data beyond the lifetime of a single program.
    The independence of state maintained in FAM provides additional capability 
for managing application availability in the presence of component failure.

I plan to maintain this within the Debian Science team.

Reply via email to