Alternative to MPI_REGISTER_NAME

Rolf Rabenseifner (Rabenseifner@RUS.Uni-Stuttgart.DE)
Tue, 30 Jan 96 11:20:23 MEZ

I have the following suggestion for the chapter 'dynamic processes':
(page and chapter numbers according to the draft Jan. 12, 1996)

- In 3.4.1 Registration and Connection (page 15-17)

Discussion:
The proposal should separate clearly the functionality of
-- establishing a connection between to processes or
process groups (defined by two communicators):
an "acceptor" opens a "port" and accepts connections
to this port, while the "connector" connects to this "port".
-- exchanging the address information (for connecting):
After the "acceptor" has opened the "port", the "address"
of this port must be sent to the "connector".
For this purpose, a name server or directory service
can be used.
An other possibility is:
The port will be opened before the connector process is
started. The address of the port is sent to the connector
in the argument list or environment of the connector
program while spawning it.

My criticism:
The word REGISTER in the function name "MPI_REGISTER_NAME" and
its argument "name" are normally used in name service APIs.

Comparison with DCE RPC string binding:
The necessary functionality "inquire the port address" is
realized with two calls:

rpc_binding_vector_t *binding_vector_pointer;
char *string_binding_pointer;
unsigned32 i, status;

rpc_server_inq_bindings(&binding_vector_pointer, &status)

for (i=0; i < binding_vector_pointer->count; i++) {

rpc_binding_to_string_binding(
(binding_vector_pointer->binding_h)[i],
&string_binding_pointer, &status);

printf("%1d'th string binding is %s\n",
i+1, string_binding_pointer);
}

MPI-2's "given-name" is the same as the vector of
string_bindings of the DCE RPC with the restriction of
vector_length == 1.

DCE uses a vactor of bindings because a computer can have
more than one network interface and each binding represents
a port of the application on each of these network interfaces.

In high performance computing one case of using MPI_CONNECT
can be that the user wants to use a high speed network
instead of the "default Ethernet".
(Although DCE is not very suitable for high performance
computing some theory in it seems to be also useable in
high performance networking.)

Therefore instead of (page 17, line 1-3):
MPI_REGISTER_NAME (name, given_name)
IN name ...
OUT given_name character string supplied by the system

I propose:
MPI_GIVE_NAME (number, given_name_vector)
OUT number number of given names returned
in the vector
OUT given_name_vector vector of given names; each given name
is a character string supplied by
the system, that can be used by
a pair of MPI_ACCEPT and MPI_CONNECT

Advice to implementors. If there are more than one network
interface then each given name should represent an
application's port on each of these interfaces.
(End of advice to implementors.)

And in the text page 15+16 the description and usage of
"name" must be removed.

Comments?
Rolf

Rolf Rabenseifner (Computer Center )
Rechenzentrum Universitaet Stuttgart (University of Stuttgart)
Allmandring 30 Phone: ++49 711 6855530
D-70550 Stuttgart 80 FAX: ++49 711 6787626
Germany rabenseifner@rus.uni-stuttgart.de