<meta content="text/html; charset=iso-8859-15"
<body bgcolor="#FFFFFF" text="#000000">
<p>Thank you Sean,</p>
<p>I try to explain better what I need. Please also find some
comments inline with your reply.</p>
<p>Assume a single process P which needs to communicate with two
other processes PA and PB over two different channels A and B.</p>
<p>In TCP terms, this can be done by using two sockets in P, both at
IP hostP but each bound to a specific TCP port (hostP:portA and
<p>Mapping it to libfabric, I would create two endpoints from P but
I don't know how to realize the behavior of communicating with two
different peers over the two endpoints. Is there some way to
"bind" an endpoint to a host:port pair?</p>
<pre wrap="">Re-posting to ofiwg mail list, as this is more of a developer question.
<pre wrap="">Hi all,
I am from the alpha group [<a class="moz-txt-link-freetext" href="http://alpha.di.unito.it/">http://alpha.di.unito.it/</a>] (CS dept. @ Univ. of
We just started to integrate libfabric into FastFlow [link], on the track
of the great job by Paolo Inaudi with the A3Cube provider.
After several readings of all the man pages and some online tutorials, I
still cannot understand how to work with contexts, domains and endpoints.
I'm not sure what you're referring to exactly by context. In the documentation, a context is probably easiest to think of a command queue or work queue. In the simplest case, an endpoint has 2 contexts -- one for sending and another for receiving.
Note that we use the term context rather than queue because there's no guarantee that work that has been posted to an endpoint completes in order.</pre>
Sorry I made some confusion with terminology here. I was talking
about the hierarchy from
[<a class="moz-txt-link-freetext" href="http://www.slideshare.net/seanhefty/ofi-overview">http://www.slideshare.net/seanhefty/ofi-overview</a>]:<br>
- Fabric domain (fi_getinfo)<br>
- domain (fi_domain)<br>
- endpoint (fi_endpoint)<br>
Here I don't know how to obtain the two endpoints I need: I need to
obtain different fi_info structures (by two different calls to
fi_getinfo with same IP address and different TCP ports) but I want
them to share the same domain. The domain itself comes from a
preliminary fi_getinfo call which is "agnostic" with respect to
<pre wrap="">I try to illustrate the problem:
1) single process attached to NIC with address X
2) two connection-less endpoints A and B
3) endpoint A should accept data from X:portA, while B from X:portB
If I try to map the hierarchy proposed in the libfabric "object model" I
would instantiate one context, one domain and both endpoints (and
respective queues) to that single domain. In this setting, I cannot find
how to specify the different ports for the endpoints. Actually I just need
to ensure endpoint A will find only messages sent to portA in its
completion queue, but I cannot figure out how to do it.
It sounds like you need different addresses for the two ports. Then assign address A from port A to endpoint A, and address B from port B to endpoint B.
An example from IP land would be to assign port A address 192.168.1.1 and port B 192.168.2.1. Endpoint A would have address 192.168.1.1:12345, and B address 192.168.2.1:12345. The '12345' in this example are transport (e.g. UDP or TCP port) numbers.</pre>
As I said, I need two different TCP ports on the same IP host.<br>
I hope I was a bit more clear now.<br>
Thank you again :)<br>
<pre wrap="">Conversely, all the examples I saw (e.g. fabtests benchmarks) use a single
endpoint per process and the libfabric context is initialized with hints
and arguments specific to the endpoint. This means I should prefer to
instantiate one domain (and one context) for each endpoint?
If you have a single NIC, a single domain should be sufficient.
<pre class="moz-signature" cols="72">--
University of Torino, department of Computer Science
Via Pessinetto 12, 10149 Torino - Italy</pre>