Gilles,

thanks for pointing out the environment variables. I quickly created a
wrapper which tells Podman to re-export all OMPI_ and PMIX_ variables
(grep "\(PMIX\|OMPI\)"). Now it works:

$ mpirun --hostfile ~/hosts ./wrapper -v /tmp:/tmp --userns=keep-id --net=host 
mpi-test /home/mpi/hello

 Hello, world (2 procs total)
    --> Process #   0 of   2 is alive. ->test1
    --> Process #   1 of   2 is alive. ->test2

I need to tell Podman to mount /tmp from the host into the container, as
I am running rootless I also need to tell Podman to use the same user ID
in the container as outside (so that the Open MPI files in /tmp) can be
shared and I am also running without a network namespace.

So this is now with the full Podman provided isolation except the
network namespace. Thanks for you help!

                Adrian

On Thu, Jul 11, 2019 at 04:47:21PM +0900, Gilles Gouaillardet via users wrote:
> Adrian,
> 
> 
> the MPI application relies on some environment variables (they typically
> start with OMPI_ and PMIX_).
> 
> The MPI application internally uses a PMIx client that must be able to
> contact a PMIx server
> 
> (that is included in mpirun and the orted daemon(s) spawned on the remote
> hosts).
> 
> located on the same host.
> 
> 
> If podman provides some isolation between the app inside the container (e.g.
> /home/mpi/hello)
> 
> and the outside world (e.g. mpirun/orted), that won't be an easy ride.
> 
> 
> Cheers,
> 
> 
> Gilles
> 
> 
> On 7/11/2019 4:35 PM, Adrian Reber via users wrote:
> > I did a quick test to see if I can use Podman in combination with Open
> > MPI:
> > 
> > [test@test1 ~]$ mpirun --hostfile ~/hosts podman run 
> > quay.io/adrianreber/mpi-test /home/mpi/hello
> > 
> >   Hello, world (1 procs total)
> >      --> Process #   0 of   1 is alive. ->789b8fb622ef
> > 
> >   Hello, world (1 procs total)
> >      --> Process #   0 of   1 is alive. ->749eb4e1c01a
> > 
> > The test program (hello) is taken from 
> > https://raw.githubusercontent.com/openhpc/ohpc/obs/OpenHPC_1.3.8_Factory/tests/mpi/hello.c
> > 
> > 
> > The problem with this is that each process thinks it is process 0 of 1
> > instead of
> > 
> >   Hello, world (2 procs total)
> >      --> Process #   1 of   2 is alive.  ->test1
> >      --> Process #   0 of   2 is alive.  ->test2
> > 
> > My questions is how is the rank determined? What resources do I need to have
> > in my container to correctly determine the rank.
> > 
> > This is Podman 1.4.2 and Open MPI 4.0.1.
> > 
> >             Adrian
> > _______________________________________________
> > users mailing list
> > users@lists.open-mpi.org
> > https://lists.open-mpi.org/mailman/listinfo/users
> > 
> _______________________________________________
> users mailing list
> users@lists.open-mpi.org
> https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/users

Reply via email to