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

NAME

       fi_shm - The SHM Fabric Provider

OVERVIEW

       The  SHM  provider  is  a  complete  provider that can be used on Linux systems supporting
       shared memory and process_vm_readv/process_vm_writev calls.  The provider is  intended  to
       provide high-performance communication between processes on the same system.

SUPPORTED FEATURES

       This  release  contains  an  initial  implementation  of  the SHM provider that offers the
       following support:

       Endpoint types : The provider supports only endpoint type FI_EP_RDM.

       Endpoint capabilities : Endpoints cna support  any  combinations  of  the  following  data
       transfer  capabilities: FI_MSG, FI_TAGGED, FI_RMA, amd FI_ATOMICS.  These capabilities can
       be  further  defined  by  FI_SEND,  FI_RECV,  FI_READ,   FI_WRITE,   FI_REMOTE_READ,   and
       FI_REMOTE_WRITE to limit the direction of operations.

       Modes : The provider does not require the use of any mode bits.

       Progress  :  The  SHM provider supports FI_PROGRESS_MANUAL.  Receive side data buffers are
       not modified outside of completion processing routines.  The provider  processes  messages
       using  three  different  methods,  based on the size of the message.  For messages smaller
       than 4096 bytes, tx completions are generated immediately  after  the  send.   For  larger
       messages,  tx  completions  are  not  generated until the receiving side has processed the
       message.

       Address Format : The SHM provider uses the address format FI_ADDR_STR, which  follows  the
       general format pattern "[prefix]://[addr]".  The application can provide addresses through
       the node or hints parameter.  As long as the address is  in  a  valid  FI_ADDR_STR  format
       (contains "://"), the address will be used as is.  If the application input is incorrectly
       formatted or no input was provided, the SHM provider will  resolve  it  according  to  the
       following SHM provider standards:

       (flags   &   FI_SOURCE)   ?    src_addr   :   dest_addr   =  -  if  (node  &&  service)  :
       "fi_ns://node:service" - if (service) :  "fi_ns://service"  -  if  (node  &&  !service)  :
       "fi_shm://node" - if (!node && !service) : "fi_shm://PID"

       !(flags & FI_SOURCE) - src_addr = "fi_shm://PID"

       In  other  words,  if  the  application provides a source and/or destination address in an
       acceptable FI_ADDR_STR format (contains "://"), the call to util_getinfo will successfully
       fill  in  src_addr  and  dest_addr  with  the  provided  input.  If the input is not in an
       ADDR_STR format, the shared memory provider will then create a proper FI_ADDR_STR  address
       with  either  the  "fi_ns://"  (node/service  format) or "fi_shm://" (shm format) prefixes
       signaling whether the addr is a "unique" address and  does  or  does  not  need  an  extra
       endpoint  name  identifier  appended  in  order  to make it unique.  For the shared memory
       provider, we assume that the service (with or without a node) is enough to make it unique,
       but a node alone is not sufficient.  If only a node is provided, the "fi_shm://" prefix is
       used to signify that it is not a unique address.  If no node or service are provided  (and
       in  the  case  of  setting the src address without FI_SOURCE and no hints), the process ID
       will be used as a default  address.   On  endpoint  creation,  if  the  src_addr  has  the
       "fi_shm://"  prefix,  the  provider will append ":[dom_idx]:[ep_idx]" as a unique endpoint
       name (essentially, in place of a service).  In the case of the "fi_ns://" prefix  (or  any
       other  prefix  if  one  was  provided  by the application), no supplemental information is
       required to make it unique and it will remain with only the  application-defined  address.
       Note that the actual endpoint name will not include the FI_ADDR_STR "*://" prefix since it
       cannot be included in any shared memory region names.  The provider  will  strip  off  the
       prefix    before    setting   the   endpoint   name.    As   a   result,   the   addresses
       "fi_prefix1://my_node:my_service" and "fi_prefix2://my_node:my_service"  would  result  in
       endpoints  and  regions  of the same name.  The application can also override the endpoint
       name after creating an endpoint using setname() without any address format restrictions.

       Msg flags The provider currently only supports the FI_REMOTE_CQ_DATA msg flag.

       MR registration mode The provider implements FI_MR_VIRT_ADDR memory mode.

       Atomic operations The provider supports all combinations of  datatype  and  operations  as
       long as the message is less than 4096 bytes (or 2048 for compare operations).

LIMITATIONS

       The  SHM  provider  has  hard-coded maximums for supported queue sizes and data transfers.
       These values are reflected in the related fabric attribute structures

       EPs must be bound to both RX and TX CQs.

       No support for selective completions or multi-recv.

       No support for counters.

RUNTIME PARAMETERS

       No runtime parameters are currently defined.

SEE ALSO

       fabric(7), fi_provider(7), fi_getinfo(3)

AUTHORS

       OpenFabrics.