upcxx-run fails to propagate environment with MPI spawner

Issue #265 resolved
Dan Bonachea created an issue

As of pull request #103 (merged 525ef5f as 2019.3.7), we now have a upcxx::getenv_console that is intended to allow applications to reliably retrieve envvars from the spawning console.

This feature works correctly for tightly integrated systems such as the Cray XC and cluster systems using the GASNet ssh spawner, which includes propagation logic. However when using the mpi spawner on loosely coupled systems, we are still relying upon mpirun to do the propagation, and upcxx-run is not currently passing the options to ensure this occurs correctly.

As a result, when running UPC++ programs on clusters (such as dirac) and setting GASNET_IBV_SPAWNER=mpi (to force MPI spawning instead of the default ssh-spawner), getenv_console might not correctly retrieve values from the console environment. I've reproduced this using OpenMPI 2.1.2 on dirac.

Based on my testing, newer versions of OpenMPI (4.0.0) seem to have grown some automated propagation support that masks this problem, but we'd like to avoid relying upon that implicit behavior.

I will be looking into this.

Comments (2)

  1. Dan Bonachea reporter

    issue #265: Add a upcxx-run -E option

    New upcxx-run -E VAR option can be used to request propagation of user-defined environment variables to compute processes.

    Fixes issue #265

    → <<cset cffe35d15390>>

  2. Log in to comment