[libfabric-users] fi_read questions

Hefty, Sean sean.hefty at intel.com
Fri Oct 16 10:14:12 PDT 2020

> At the moment I am using the sockets provider for this for legacy
> reasons (I know it is deprecated, but from my understanding should still
> support this functionality). tcp and verbs shall be tested afterwards
> with respective adjustments.

The sockets provider is still available and usable.  We'll fix what bugs we can, but just won't be adding new features to it.

> I get the ENOENT from the fi_read call directly, which to me suggests
> that it cant find the peer memory region.

If fi_read() is returning an error code directly, the failure is local and the operation is never being queued or posted.  If you can enable debug output, it may help identify where the error is coming from.

Are you using MSG EPs?  Or RDM EPs?

I see in the code where the sockets provider will return ENOENT for RDM EPs if the peer's address cannot be found in the AV. 

> >> 	One way to handle this is for the peer to always exchange a base address with the
> >> mr key.  If FI_MR_VIRT_ADDR is set, the base address is set to 0.  If
> >> is 0, the base address should equal the virtual address of the memory buffer.  The
> >> process that initiates the RMA then just uses the provided key and base address that
> it
> >> was given.
> >>
> What do you mean with if FI_MR_VIRT_ADDR is 0? Isnt that just one value
> set in a bitmask? If not so, how do you check if mr_mode contains
> FI_MR_VIRT_ADDR (or any other mode bits set).

I meant if the FI_MR_VIRT_ADDR bit flag is set to 0.

- Sean

More information about the Libfabric-users mailing list