1fi_direct(7)                   Libfabric v1.6.1                   fi_direct(7)
2
3
4

NAME

6       fi_direct - Direct fabric provider access
7

SYNOPSIS

9              -DFABRIC_DIRECT
10
11              #define FABRIC_DIRECT
12
13       Fabric  direct provides a mechanism for applications to compile against
14       a specific fabric providers without going through the libfabric  frame‐
15       work  or  function vector tables.  This allows for extreme optimization
16       via function inlining at the cost of supporting multiple  providers  or
17       different versions of the same provider.
18

DESCRIPTION

20       The use of fabric direct is intended only for applications that require
21       the absolute minimum software latency, and are  willing  to  re-compile
22       for  specific  fabric  hardware.   Providers that support fabric direct
23       implement their own versions of  the  static  inline  calls  which  are
24       define  in the libfabric header files, define selected enum values, and
25       provide defines for compile-time optimizations.  Applications can  then
26       code  against  the  standard libfabric calls, but link directly against
27       the provider calls by defining FABRIC_DIRECT as part of their build.
28
29       In general, the use of  fabric  direct  does  not  require  application
30       source code changes, and, instead, is limited to the build process.
31
32       Providers  supporting  fabric  direct must install 'direct' versions of
33       all libfabric header files.  For  convenience,  the  libfabric  sources
34       contain  sample  header  files that may be modified by a provider.  The
35       'direct'  header  file  names  have  'fi_direct'   as   their   prefix:
36       fi_direct.h, fi_direct_endpoint.h, etc.
37
38       Direct  providers  are prohibited from overriding or modifying existing
39       data structures.   However,  provider  specific  extensions  are  still
40       available.   In  addition to provider direct function calls to provider
41       code, a fabric direct provider may define zero of more of the following
42       capability  definitions.  Applications can check for these capabilities
43       in order to optimize code paths at  compile  time,  versus  relying  on
44       run-time checks.
45

CAPABILITY DEFINITIONS

47       In  order  that  application code may be optimized during compile time,
48       direct providers must provide definitions for various capabilities  and
49       modes, if those capabilities are supported.  The following #define val‐
50       ues may be used by an application to test for provider support of  sup‐
51       ported features.
52
53       FI_DIRECT_CONTEXT  :  The  provider  sets FI_CONTEXT or FI_CONTEXT2 for
54       fi_info:mode.    See   fi_getinfo   for   additional   details.    When
55       FI_DIRECT_CONTEXT is defined, applications should use struct fi_context
56       in their definitions, even if FI_CONTEXT2 is set.
57
58       FI_DIRECT_LOCAL_MR : The provider sets  FI_LOCAL_MR  for  fi_info:mode.
59       See fi_getinfo for additional details.
60

SEE ALSO

62       fi_getinfo(3), fi_endpoint(3), fi_domain(3)
63

AUTHORS

65       OpenFabrics.
66
67
68
69Libfabric Programmer's Manual     2017-12-01                      fi_direct(7)
Impressum