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.

