1fi_provider(7)                 Libfabric v1.18.1                fi_provider(7)
2
3
4
5                             |<-  [core provider] <-peer API-> [offload provider]
6
7       ```  All  providers plug into libfabric using an exported provider API.
8       libfabric supports both internal providers, which ship with the library
9       for user convenience, as well as external providers.  External provider
10       libraries must be in the library  search  path,  end  with  the  suffix
11       “-fi”, and export the function fi_prov_ini().
12
13       Once registered with the libfabric core, a provider will be reported to
14       applications as part of the discovery  process.   Hooking  and  utility
15       providers  will  intercept libfabric calls from the application to per‐
16       form some task before calling through to the next provider.  If there’s
17       no need to intercept a specific API call, the application will call di‐
18       rectly to the core provider.  Where possible provider to provider  com‐
19       munication  is  done using the libfabric APIs itself, including the use
20       of provider specific extensions to reduce call overhead.
21
22       libfabric defines a set of APIs that specifically target providers that
23       may  be  used  as peers.  These APIs are oddly enough called peer APIs.
24       Peer APIs are technically part of the external libfabric API,  but  are
25       not designed for direct use by applications and are not considered sta‐
26       ble for API backwards compatibility.
27

Core Providers

29       Core providers are stand-alone providers that usually target a specific
30       class of networking devices.  That is, a specific NIC, class of network
31       hardware, or lower-level software interface.  The  core  providers  are
32       usually  what  most  application  developers  are concerned with.  Core
33       providers may only support libfabric features and interfaces  that  map
34       efficiently to the underlying hardware or network protocols.
35
36       The  following  core providers are built into libfabric by default, as‐
37       suming all build pre-requisites are met.  That is, necessary  libraries
38       are  installed,  operating system support is available, etc.  This list
39       is not exhaustive.
40
41       EFA    A provider for the  Amazon  EC2  Elastic  Fabric  Adapter  (EFA)
42              (https://aws.amazon.com/hpc/efa/),   a  custom-built  OS  bypass
43              hardware interface for inter-instance communication on EC2.  See
44              fi_efa(7) for more information.
45
46       GNI    A  provider  for  the  Aries interconnect in Cray XC(TM) systems
47              utilizing the  user-space  Generic  Networking  Interface.   See
48              fi_gni(7) for more information.
49
50       OPX    Supports  Omni-Path  networking  from  Cornelis  Networks.   See
51              fi_opx(7) for more information.
52
53       PSM2   Older provider for Omni-Path networks.  See fi_psm2(7) for  more
54              information.
55
56       PSM3   Provider for Ethernet networking from Intel.  See fi_psm3(7) for
57              more information.
58
59       SHM    A provider for intra-node  communication  using  shared  memory.
60              See fi_shm(7) for more information.
61
62       TCP    A  provider which runs over the TCP/IP protocol and is available
63              on multiple operating systems.  This provider enables develop of
64              libfabric  applications  on  most  platforms.  See fi_tcp(7) for
65              more information
66
67       UDP    A provider which runs over the UDP/IP protocol and is  available
68              on multiple operating systems.  This provider enables develop of
69              libfabric applications on most  platforms.   See  fi_udp(7)  for
70              more information
71
72       Verbs  This provider targets RDMA NICs for both Linux and Windows plat‐
73              forms.  See fi_verbs(7) for more information.
74

Utility Providers

76       Utility providers are named with a starting prefix of “ofi_”.   Utility
77       providers are distinct from core providers in that they are not associ‐
78       ated with specific classes of devices.  They  instead  work  with  core
79       providers  to  expand  their  features and interact with core providers
80       through libfabric interfaces internally.  Utility providers are used to
81       support a specific endpoint type over a simpler endpoint type.
82
83       Utility providers show up as part of the return’s provider’s name.  See
84       fi_fabric(3).  Utility providers are  enabled  automatically  for  core
85       providers  that do not support the feature set requested by an applica‐
86       tion.
87
88       RxM    Implements RDM  endpoint  semantics  over  MSG  endpoints.   See
89              fi_rxm(7) for more information.
90
91       RxD    Implements  RDM  endpoint  semantis  over  DGRAM endpoints.  See
92              fi_rxd(7) for more information.
93

Hooking Providers

95       Hooking providers are mostly used for debugging purposes.  Since  hook‐
96       ing  providers are built and included in release versions of libfabric,
97       they are always available and have no impact on performance unless  en‐
98       abled.  Hooking providers can layer over all other providers and inter‐
99       cept, or hook, their calls in order to  perform  some  dedicated  task,
100       such  as  gathering  performance  data on call paths or providing debug
101       output.
102
103       See fi_hook(7) for more information.
104

Offload Providers

106       Offload providers start with the  naming  prefix  “off_”.   An  offload
107       provider  is  meant  to  be  paired  with  other  core  and/or  utility
108       providers.  An offload provider  is  intended  to  accelerate  specific
109       types  of  communication, generally by taking advantage of network ser‐
110       vices that have been offloaded into hardware,  though  actual  hardware
111       offload support is not a requirement.
112

SEE ALSO

114       fabric(7) fi_provider(3)
115

AUTHORS

117       OpenFabrics.
118
119
120
121Libfabric Programmer’s Manual     2023-01-02                    fi_provider(7)
Impressum