fi_verbs (7) - Linux Man Pages
fi_verbs: The Verbs Fabric Provider
fi_verbs - The Verbs Fabric Provider
The verbs provider enables applications using OFI to be run over any verbs hardware (Infiniband, iWarp, etc). It uses the Linux Verbs API for network transport and provides a translation of OFI calls to appropriate verbs API calls. It uses librdmacm for communication management and libibverbs for other control and data transfer operations.
Endpoint capabilities and features
Verbs provider requires applications to support the following modes:
- FI_LOCAL_MR for all applications.
- FI_RX_CQ_DATA for applications that want to use RMA. Applications must take responsibility of posting receives for any incoming CQ data.
- FI_CONTEXT for applications making uses of the experimental FI_EP_RDM capability.
Verbs provider support the following message ordering:
- Read after Read
- Read after Write
- Read after Send
- Write after Write
- Write after Send
- Send after Write
- Send after Send
and the following completion ordering:
- TX contexts: FI_ORDER_STRICT
- RX contexts: FI_ORDER_DATA
Verbs provider supports the fork system call by default. See the limitations section for restrictions. It can be turned off by setting the FI_FORK_UNSAFE environment variable to "yes". This can improve the performance of memory registrations but it also makes the use of fork unsafe.
Unsupported Endpoint types
Other unsupported features
Unsupported features specific to MSG endpoints
- Counters, FI_SOURCE, FI_TAGGED, FI_PEEK, FI_CLAIM, fi_cancel, fi_ep_alias, shared TX context, cq_readfrom operations.
- Completion flags are not reported if a request posted to an endpoint completes in error.
Unsupported features specific to RDM endpoints
The RDM support for verbs have the following limitations:
- Supports iovs of only size 1.
- Wait objects are not supported.
- Not thread safe.
The support for fork in the provider has the following limitations:
- Fabric resources like endpoint, CQ, EQ, etc. should not be used in the forked process.
- The memory registered using fi_mr_reg has to be page aligned since ibv_reg_mr marks the entire page that a memory region belongs to as not to be re-mapped when the process is forked (MADV_DONTFORK).
Variables specific to MSG endpoints
FI_VERBS_TX_SIZE : Default maximum tx context size (default: 384)
FI_VERBS_RX_SIZE : Default maximum rx context size (default: 384)
FI_VERBS_TX_IOV_LIMIT : Default maximum tx iov_limit (default: 4)
Variables specific to RDM endpoints
FI_VERBS_IFACE : The prefix or the full name of the network interface associated with the IB device (default: ib)
FI_VERBS_RDM_BUFFER_NUM : The number of pre-registered buffers for buffered operations between the endpoints, must be a power of 2 (default: 8).
FI_VERBS_RDM_BUFFER_SIZE : The maximum size of a buffered operation (bytes) (default: platform specific).
FI_VERBS_RDM_RNDV_SEG_SIZE : The segment size for zero copy protocols (bytes)(default: 1073741824).
FI_VERBS_RDM_CQREAD_BUNCH_SIZE : The number of entries to be read from the verbs completion queue at a time (default: 8).
FI_VERBS_RDM_THREAD_TIMEOUT : The wake up timeout of the helper thread (usec) (default: 100).
FI_VERBS_RDM_EAGER_SEND_OPCODE : The operation code that will be used for eager messaging. Only IBV_WR_SEND and IBV_WR_RDMA_WRITE_WITH_IMM are supported. The last one is not applicable for iWarp. (default: IBV_WR_SEND)
Environment variables notes
Troubleshooting / Known issues