Provided by: libfabric1_1.5.3-1_amd64 bug

NAME

       fi_direct - Direct fabric provider access

SYNOPSIS

              -DFABRIC_DIRECT

              #define FABRIC_DIRECT

       Fabric  direct  provides  a  mechanism  for  applications  to compile against a specific fabric providers
       without going through the libfabric framework  or  function  vector  tables.   This  allows  for  extreme
       optimization  via function inlining at the cost of supporting multiple providers or different versions of
       the same provider.

DESCRIPTION

       The use of fabric direct is intended only for applications that require  the  absolute  minimum  software
       latency,  and  are  willing  to  re-compile  for specific fabric hardware.  Providers that support fabric
       direct implement their own versions of the static inline calls which are define in the  libfabric  header
       files, define selected enum values, and provide defines for compile-time optimizations.  Applications can
       then  code against the standard libfabric calls, but link directly against the provider calls by defining
       FABRIC_DIRECT as part of their build.

       In general, the use of fabric direct does not require application source code changes, and,  instead,  is
       limited to the build process.

       Providers  supporting  fabric  direct  must install 'direct' versions of all libfabric header files.  For
       convenience, the libfabric sources contain sample header files that may be modified by a  provider.   The
       'direct' header file names have 'fi_direct' as their prefix: fi_direct.h, fi_direct_endpoint.h, etc.

       Direct providers are prohibited from overriding or modifying existing data structures.  However, provider
       specific extensions are still available.  In addition to provider direct function calls to provider code,
       a  fabric  direct provider may define zero of more of the following capability definitions.  Applications
       can check for these capabilities in order to optimize code paths  at  compile  time,  versus  relying  on
       run-time checks.

CAPABILITY DEFINITIONS

       In  order  that  application  code  may  be  optimized during compile time, direct providers must provide
       definitions for various capabilities and modes, if  those  capabilities  are  supported.   The  following
       #define values may be used by an application to test for provider support of supported features.

       FI_DIRECT_CONTEXT  :  The  provider  sets FI_CONTEXT or FI_CONTEXT2 for fi_info:mode.  See fi_getinfo for
       additional details.  When FI_DIRECT_CONTEXT is defined, applications  should  use  struct  fi_context  in
       their definitions, even if FI_CONTEXT2 is set.

       FI_DIRECT_LOCAL_MR  :  The  provider  sets  FI_LOCAL_MR  for fi_info:mode.  See fi_getinfo for additional
       details.

SEE ALSO

       fi_getinfo(3), fi_endpoint(3), fi_domain(3)

AUTHORS

       OpenFabrics.

Libfabric Programmer's Manual                      2017-04-13                                       fi_direct(7)