>> The MPI Ports functionality (chapter 10.4 of MPI 3.1), mainly consisting of 
>> MPI_Open_port, MPI_Comm_accept and
>> MPI_Comm_connect is not usuable without running an ompi-server as a third 
>> process?
> 
> Yes, that’s correct. The reason for moving in that direction is that the 
> resource managers, as they continue to
> integrate PMIx into them, are going to be providing that third party. This 
> will make connect/accept much easier to use,
> and a great deal more scalable.
> 
> See https://github.com/pmix/RFCs/blob/master/RFC0003.md for an explanation.


Ok, thanks for that input. I haven't heard of pmix so far (only as part of some 
ompi error messages).

Using ompi-server -d -r 'ompi.connect' I was able to publish and retrieve the 
port name, however, still no connection
could be established.

% mpirun -n 1 --ompi-server "file:ompi.connect" ./a.out A
Published port 3044605953.0:664448538

% mpirun -n 1 --ompi-server "file:ompi.connect" ./a.out B
Looked up port 3044605953.0:664448538


at this point, both processes hang.

The code is:

#include <iostream>
#include <string>
#include <mpi.h>

int main(int argc, char **argv)
{
  MPI_Init(&argc, &argv);
  std::string a(argv[1]);
  char p[MPI_MAX_PORT_NAME];
  MPI_Comm icomm;

  if (a == "A") {
    MPI_Open_port(MPI_INFO_NULL, p);
    MPI_Publish_name("foobar", MPI_INFO_NULL, p);
    printf("Published port %s\n", p);
    MPI_Comm_accept(p, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &icomm);
  }
  if (a == "B") {
    MPI_Lookup_name("foobar", MPI_INFO_NULL, p);
    printf("Looked up port %s\n", p);
    MPI_Comm_connect(p, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &icomm);
  }

  MPI_Finalize();

  return 0;
}



Do you have any idea?

Best,
Florian
_______________________________________________
users mailing list
users@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/users

Reply via email to