Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
fi_direct(7)		       Libfabric v1.15.1		  fi_direct(7)

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	frame-
       work  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 im-
       plement 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_di-
       rect.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 val-
       ues  may	be used	by an application to test for provider support of sup-
       ported 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	  2021-03-22			  fi_direct(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fi_direct&sektion=7&manpath=FreeBSD+Ports+14.3.quarterly>

home | help