Fork me on GitHub

OpenFabrics Interface Overview

Latest releases

Overview

Libfabric, also known as Open Fabrics Interfaces (OFI), defines a communication API for high-performance parallel and distributed applications. It is a low-level communication library that abstracts diverse networking technologies. Libfabric is developed by the OFI Working Group (OFIWG, pronounced “o-fee-wig”), a subgroup of the OpenFabrics Alliance - OFA. Participation in the OFIWG is open to anyone, and not restricted to members of OFA.

The goal of libfabric is to define interfaces that enable a tight semantic map between applications and underlying fabric services. Specifically, libfabric software interfaces have been co-designed with fabric hardware providers and application developers, with a focus on the needs of HPC users. Libfabric supports multiple communication semantics, is fabric and hardware implementation agnostic, and leverages and expands the existing RDMA open source community.

Libfabric is designed to minimize the impedance mismatch between applications, including middleware such as MPI, SHMEM, data stgorage, and PGAS, and fabric communication hardware. Its interfaces target high-bandwidth, low-latency NICs, with a goal to scale to tens of thousands of nodes.

Libfabric targets support for the Linux, Free BSD, Windows, and OS X. A reasonable effort is made to support all major, modern Linux distributions; however, validation is limited to the most recent 2-3 releases of Red Hat Enterprise Linux (RHEL)and SUSE Linux Enterprise Server (SLES). Support for a particular operating system version or distribution is vendor specific. The exceptions are the tcp and udp based socket providers are available on all platforms.

Developer Resources

A comprehensive developer’s guide is included with the man pages.

A set of man pages have been carefully written to specify the libfabric API.

Set of test applications - These tests focus on validating libfabric developement, but also highlight how an application might use various aspects of libfabric.

Additionally, developers may find the documents listed below useful in understanding the libfabric architecture and objectives in more detail.

Open Collaboration

The libfabric code base is being developed in the main OFIWG libfabric GitHub repository. There are two mailing lists for OFIWG discussions:

  • The Libfabric users mailing list - intended for general user questions about the Libfabric library, to include questions from developers trying to use Libfabric in their applications.
  • The OFI working group mailing list - used for the discussion and development of the OFI APIs themselves, and by extension, the continued development of the Libfabric library.

Notices of the every-other-Tuesday OFIWG Webexes are sent to the OFIWG mailing list. Anyone can join the calls to listen and participate in the design of Libfabric.