[libfabric-users] connection-less endpoints and TCP services

Hefty, Sean sean.hefty at intel.com
Thu Mar 30 06:59:01 PDT 2017


> Let me explain with a minimal example: 3 processes, mapped to
> node:svc1,
> node:svc2, node:svc3 (same node, different services). All processes
> have
> the same AV table:
> 1 -> node:svc1
> 2-> node:svc2
> 3 -> node:svc3
> 
> On process 1, how do I create an EP that receives all data sent to AV
> index 1 by any other process?
> 
> In connection-oriented scenario, I would do that by calling fi_getinfo
> with:
> node=NULL, service=svc1, flags=FI_SOURCE

Add node = node address, and this is what you want.  Just create an active endpoint -- fi_endpoint() -- with the result.  The FI_SOURCE flag just indicates that the <node, service> parameters are local addresses.  If you set node = NULL, you'll get back a wildcard address.  That's still usable, but you won't know what actual address was assigned until you allocate the endpoint and enable it.  For example:

fi_endpoint(...);
fi_enable(...);
fi_getname(...);  <- this returns that actual address that was assigned

The result of fi_getname() can be used to populate the remote AVs.

- Sean


More information about the Libfabric-users mailing list