Provided by: libfabric-dev_1.6.2-3ubuntu0.1_amd64 bug

NAME

       fi_verbs - The Verbs Fabric Provider

OVERVIEW

       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.

SUPPORTED FEATURES

       The verbs provider supports a subset of OFI features.

   Endpoint types
       FI_EP_MSG, FI_EP_RDM

       New change in libfabric v1.6: FI_EP_RDM is supported through the OFI RxM utility provider.
       This is done automatically when the app requests FI_EP_RDM endpoint.  Please refer the man
       page for RxM provider to learn more.  The provider's internal support for RDM endpoints is
       deprecated  and  would  be  removed  from  libfabric  v1.7  onwards.   Till  then apps can
       explicitly request  the  internal  RDM  support  by  disabling  ofi_rxm  provider  through
       FI_PROVIDER env variable (FI_PROVIDER=^ofi_rxm).

   Endpoint capabilities and features
   MSG endpoints
       FI_MSG, FI_RMA, FI_ATOMIC and shared receive contexts.

   RDM endpoints (internal - deprecated)
       FI_MSG, FI_TAGGED, FI_RMA

   DGRAM endpoints
       FI_MSG

   Modes
       Verbs provider requires applications to support the following modes:

   FI_EP_MSG endpoint type
       • FI_LOCAL_MR / FI_MR_LOCAL mr mode.

       • FI_RX_CQ_DATA   for   applications  that  want  to  use  RMA.   Applications  must  take
         responsibility of posting receives for any incoming CQ data.

   FI_EP_RDM endpoint type (internal - deprecated)
       • FI_CONTEXT

   Addressing Formats
       Supported addressing formats include * MSG and RDM (internal -  deprecated)  EPs  support:
       FI_SOCKADDR,   FI_SOCKADDR_IN,   FI_SOCKADDR_IN6,   FI_SOCKADDR_IB   *   DGRAM   supports:
       FI_ADDR_IB_UD

   Progress
       Verbs provider supports FI_PROGRESS_AUTO: Asynchronous operations  make  forward  progress
       automatically.

   Operation flags
       Verbs provider supports FI_INJECT, FI_COMPLETION, FI_REMOTE_CQ_DATA, FI_TRANSMIT_COMPLETE.

   Msg Ordering
       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

   Fork
       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.

   Memory Registration Cache
       The  verbs  provider  features  a  memory  registration  cache.   This  speeds  up  memory
       registration  calls  from  applications by caching registrations of frequently used memory
       regions.  The user can control the maximum combined size of  all  cache  entries  and  the
       maximum number of cache entries with the environment variables FI_VERBS_MR_MAX_CACHED_SIZE
       and FI_VERBS_MR_MAX_CACHED_CNT respectively.  Look  below  in  the  environment  variables
       section for details.

       Note:  The  memory registration cache framework hooks into alloc and free calls to monitor
       the memory regions.  If this doesn't work as expected caching would not be optimal.

LIMITATIONS

   Memory Regions
       Only FI_MR_BASIC mode is supported.  Adding regions via s/g list is supported only up to a
       s/g list size of 1.  No support for binding memory regions to a counter.

   Wait objects
       Only  FI_WAIT_FD wait object is supported only for FI_EP_MSG endpoint type.  Wait sets are
       not supported.

   Resource Management
       Application has to make sure CQs are not  overrun  as  this  cannot  be  detected  by  the
       provider.

   Unsupported Features
       The following features are not supported in verbs provider:

   Unsupported Capabilities
       FI_NAMED_RX_CTX, FI_DIRECTED_RECV, FI_TRIGGER, FI_RMA_EVENT

   Other unsupported features
       Scalable endpoints, FABRIC_DIRECT

   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 (internal - deprecated)
       endpoints

       The RDM support for verbs have the following limitations:

       • Supports iovs of only size 1.

       • Wait objects are not supported.

       • Not thread safe.

   Fork
       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).

RUNTIME PARAMETERS

       The verbs provider checks for the following environment variables.

   Common variables:
       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).  Note: RDM (internal  -
       deprecated) EP type supports only 1

       FI_VERBS_RX_IOV_LIMIT  : Default maximum rx iov_limit (default: 4).  Note: RDM (internal -
       deprecated) EP type supports only 1

       FI_VERBS_INLINE_SIZE : Default maximum  inline  size.   Actual  inject  size  returned  in
       fi_info may be greater (default: 64)

       FI_VERBS_MIN_RNR_TIMER : Set min_rnr_timer QP attribute (0 - 31) (default: 12)

       FI_VERBS_USE_ODP  :  Enable  On-Demand-Paging  (ODP) experimental feature.  The feature is
       supported only on Mellanox OFED (default: 0)

       FI_VERBS_CQREAD_BUNCH_SIZE : The number of entries to be read from  the  verbs  completion
       queue at a time (default: 8).

       FI_VERBS_IFACE  : The prefix or the full name of the network interface associated with the
       verbs device (default: ib)

       FI_VERBS_MR_CACHE_ENABLE : Enable Memory Registration caching (default: 0)

       FI_VERBS_MR_MAX_CACHED_CNT : Maximum number of cache entries (default: 4096)

       FI_VERBS_MR_MAX_CACHED_SIZE : Maximum total size of cache entries (default: 4 GB)

   Variables specific to RDM (internal - deprecated) endpoints
       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_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)

       FI_VERBS_RDM_CM_THREAD_AFFINITY : If specified,  bind  the  CM  thread  to  the  indicated
       range(s)  of  Linux virtual processor ID(s).  This option is currently not supported on OS
       X.  Usage: id_start[-id_end[:stride]][,]

   Variables specific to DGRAM endpoints
       FI_VERBS_DGRAM_USE_NAME_SERVER : The option that enables/disables OFI Name Server  thread.
       The  NS thread is used to resolve IP-addresses to provider specific addresses (default: 1,
       if "OMPI_COMM_WORLD_RANK" and "PMI_RANK" environment variables aren't defined)

       FI_VERBS_NAME_SERVER_PORT :  The  port  on  which  Name  Server  thread  listens  incoming
       connections and requests (default: 5678)

   Environment variables notes
       The  fi_info  utility  would  give  the  up-to-date  information on environment variables:
       fi_info -p verbs -e

Troubleshooting / Known issues

       When running an app over verbs provider with Valgrind, there may be reports of memory leak
       in functions from dependent libraries (e.g.  libibverbs, librdmacm).  These leaks are safe
       to ignore.

SEE ALSO

       fabric(7), fi_provider(7),

AUTHORS

       OpenFabrics.