OpenFAM release notes
These notes summarize the different releases of OpenFAM. A more detailed list of list of features, enhancements and bug fixes are added to the source tree in all the released versions, and are provided in the corresponding NEWS.md file. Build and installation instructions are listed in the corresponding README.md file located in the source tree.OpenFAM version 3.0 (release v3.0.0)
The current version of OpenFAM is 3.0. It contains the following changes and enhancements over version 2.0:
- Added support for volatile and persistent memory types.
- Multi-threaded support has been added that enables OpenFAM to be used with multi-threaded applications. See multi-threaded environment for more details.
- Performance improvements: Data item interleaving feature has been added in which a given data item will span across multiple memory servers. This has been done to uniformly distribute the load across multiple memory servers, thus reducing the network bottlenecks, and thereby improving the overall performance. Data item interleaving is enabled by default. See Data Item Interleaving for more details.
- Added support for multiple contexts. The data path APIs (get,put, scatter, gather and atomics) can be invoked from user defined contexts. See fam_context_open API for more details.
- OpenFAM APIs changes:
- fam_create_region API has been modified wherein the input argument redundancyLevel is replaced with a structure that holds attributes for a region namely - redundancyLevel, memoryType and flags to indicate if data item interleaving needs to be enabled or not.
- Two new APIs have been added to support multiple contexts namely
fam_context_open()
andfam_context_close()
. These APIs provide the flexibility to threads to invoke data path operations in parallel. - A new API
fam_progress
has been provided that returns the count of pending data path and atomic operations. - Few APIs have been added to enable backing up and restoring of data items namely -
fam_backup()
andfam_restore()
. An API has been provided to delete the unused backup in the memory server.
OpenFAM version 2.0 (release v2.0.0)
OpenFAM 2.0 contains the following changes and enhancements over version 1.0:
- Scalability improvements: This version supports a larger pool of memory by allowing multiple memory servers to be used. See services for more details.
- Performance improvements: Memory management and metadata operations have been optimized.
- Background worker threads (unused in OpenFAM 1.0) were disabled from the memory service.
- Allocation performance was improved by moving the memset operation to zero allocated memory from
fam_allocate()
tofam_deallocate()
path. - Regions can span multiple memory servers, thus reducing network bottlenecks when multiple data items within the same region are used.
- OpenFAM APIs changes:
fam_size
has been replaced withfam_stat
.fam_copy
has been changed to allow data copies between regions, as well as within a region.- The return type was changed from
int
tovoid
for the following APIs:fam_initialize, fam_resize_region, fam_change_permissions, fam_put_blocking, fam_get_blocking, fam_gather_blocking, fam_scatter_blocking
. fam_barrier_all
has been added as a supported API.
- Exception and error handling was simplified. All OpenFAM APIs returns only one exception type on error, i.e,
Fam_Exception
.
OpenFAM version 1.0 (release v0.4.0)
- Initial public release of OpenFAM reference implementation
- Memory allocator models implemented: "Shared memory model" to be used on scale-up platforms and "Memory server model" to be used on scale-out (cluster) platforms.
- Memory server model uses libfabric and support sockets, verbs and psm providers.