fi_direct(7)
π fi_direct(7) β Direct fabric provider access β¨
okay so bestie, welcome to the Libfabric Programmerβs Manual page for fi_direct, Libfabric v2.5.1 era. this one is niche but kinda iconic: itβs the βskip the framework, go straight to the providerβ mode. π¦
πΈ NAME πΈ
fi_direct β direct fabric provider access. no cap, thatβs the whole vibe. π
β¨ SYNOPSIS β¨
you drop this into your build like a little spell:
-DFABRIC_DIRECT
#define FABRIC_DIRECT
Fabric direct provides a mechanism for applications to compile against a specific fabric provider without going through the libfabric framework or function vector tables. itβs giving extreme optimization via function inlining, but the tradeoff is real: youβre now on the hook for supporting multiple providers or different versions of the same provider. π
π¦ DESCRIPTION π¦
okay so fabric direct is intended only for applications that require the absolute minimum software latency, and are willing to re-compile for specific fabric hardware. like, if you want every last nanosecond? this is your girl. if you need portability? maybe not. π
Providers that support fabric direct implement their own versions of the static inline calls that are defined 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. slay. β¨
In general, the use of fabric direct does not require application source code changes, and, instead, is limited to the build process. so itβs a build-time vibe, not a source-code rewrite situation. π«Ά
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. keep those names exact, bestie. π
Direct providers are prohibited from overriding or modifying existing data structures. like, prohibited prohibited. However, provider specific extensions are still available. π
In addition to provider direct function calls to provider code, a fabric direct provider may define zero or 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. iykyk. π₯
π 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. yes, itβs compile-time vibe checking. β
FI_DIRECT_CONTEXTβ The provider setsFI_CONTEXTorFI_CONTEXT2forfi_info:mode. Seefi_getinfofor additional details. WhenFI_DIRECT_CONTEXTis defined, applications should usestruct fi_contextin their definitions, even ifFI_CONTEXT2is set. πFI_DIRECT_LOCAL_MRβ The provider setsFI_LOCAL_MRforfi_info:mode. Seefi_getinfofor additional details. π
π SEE ALSO π
go read these next, bestie: fi_getinfo(3), fi_endpoint(3), fi_domain(3). π¦
π AUTHORS π
OpenFabrics. π
okay bye bestie β thatβs the whole page, straight from the Libfabric Programmerβs Manual for Libfabric v2.5.1, dated 2024-12-10. now go inline something iconic. πβ¨
π¦ where this page comes from
- centos-stream 10: libfabric-devel 2.5.1-1.el10 Β· BSD-2-Clause OR GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms